quinta-feira, 9 de julho de 2015

Projeto que envia mensagens para um display através do celular, mostra horas e liga 8 relés.

Telas criadas pelo Editor do OSC


Marcia e Davi, aparecem na primeira linha do display quando acionado o push da tela do celular, e as outras mensagens na segunda linha substituindo a anterior a cada toque.


Nestas telas também envia a hora para o display e liga relés











sexta-feira, 3 de julho de 2015

Criando um relógio com Arduíno Mega, um RTC e um display


Biblioteca virtuaborixRTC

//Programa: Imprime data e hora no display lcd 16x2
//Baseado no virtuabotixRTC
//Biblioteca virtuabotixRTC
#include <virtuabotixRTC.h>        
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
// Determina os pinos ligados ao modulo
// RTC(clock, data, rst)
virtuabotixRTC RTC(6, 7, 8);
//Meu Logo
byte a[8]= {B11111,B11111,B11000,B11111,B11111,B00000,B00000,B00000,};
byte b[8]= {B11111,B11111,B10001,B11011,B11011,B11011,B11111,B11111,};
byte c[8]= {B11111,B11111,B00011,B11111,B11111,B00000,B00000,B00000,};
byte d[8]= {B11111,B11011,B11011,B11011,B11011,B11011,B11011,B11111,};


void setup()
{

  lcd.init();                    
  lcd.backlight();
  lcd.createChar(1, a);
  lcd.createChar(2, b);
  lcd.createChar(3, c);
  lcd.createChar(4, d);
  //Coloca meu logo no final do display, utilizando as colunas 13, 14 e 15
  lcd.setCursor(13,0); //Coloca o cursor na coluna 0, linha 0
  lcd.write(1); //Escreve o simbolo
  lcd.setCursor(14,0); //Coloca o cursor na coluna 0, linha 0
  lcd.write(2); //Escreve o simbolo
  lcd.setCursor(15,0); //Coloca o cursor na coluna 0, linha 0
  lcd.write(3); //Escreve o simbolo
  lcd.setCursor(14,1); //Coloca o cursor na coluna 0, linha 0
  lcd.write(4); //Escreve o simbolo


  // Informacoes iniciais de data e hora
  /*depois da data e hora ajustada, comente a linha abaixo e compile novamente,
  ou seja, a hora ja foi armazenada no RTC e agora se você "recompilar"
  a hora e a data já estão em andamento.
  O Macete é colocar a hora com um minuto adiantado e quado chegar a três segundos antes
  da hora que você ajustou clique para carregar, depois é só recompilar comentando a linha
  abaixo
  */
  // (segundos, minutos, hora, dia da semana, dia do mes, mes, ano)
  //RTC.setDS1302Time(00, 47, 20, 6, 03, 07, 2015);
}

void loop()
{
  // Le as informacoes do CI
  RTC.updateTime();

  // Imprime as informacoes no serial monitor
  lcd.setCursor(0,0);
  //Serial.print("Data: ");
  // Chama a rotina que imprime o dia da semana
  printdayofweek(RTC.dayofweek);
  //lcd.print(" ");
  lcd.print(RTC.dayofmonth);
  lcd.print("/");
  lcd.print(RTC.month);
  lcd.print("/");
  lcd.print(RTC.year);
  lcd.setCursor(0,1);
    // Adiciona um 0 caso o valor da hora seja <10
  if (RTC.hours < 10)
  {
    lcd.print("0");
  }
  lcd.print(RTC.hours);
  lcd.print(":");
  // Adiciona um 0 caso o valor dos minutos seja <10
  if (RTC.minutes < 10)
  {
    lcd.print("0");
  }
  lcd.print(RTC.minutes);
  lcd.print(":");
  // Adiciona um 0 caso o valor dos segundos seja <10
  if (RTC.seconds < 10)
  {
    lcd.print("0");
  }
  lcd.print(RTC.seconds);
  delay( 1000);
}

void printdayofweek(int day)
{
  switch (day)
  {
    case 1:
    lcd.print("Sun");
    break;
    case 2:
    lcd.print("Mon");
    break;
    case 3:
    lcd.print("Tue");
    break;
    case 4:
    lcd.print("Wed");
    break;
    case 5:
    lcd.print("Thu");
    break;
    case 6:
    lcd.print("Fri");
    break;
    case 7:
    lcd.print("Sat");
    break;
  }
}



quinta-feira, 2 de julho de 2015

Sensor de temperatura e umidade com arduino e um display

 Ligação de um Display lendo temperatura e umidade pelo sensor.

Com controle de backlight


Segue Sketch
#include "DHT.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 22  //pino com o sinal do sensor   
#define DHTTYPE DHT11 

DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27,16,2);

void setup(void) {
  lcd.init(); 
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("TK Control");
  dht.begin();
}

void loop() {
  
  float temperature, humidity;
  humidity = dht.readHumidity();
  temperature = dht.readTemperature();
  delay(2000); 

 lcd.clear();
 char tempF[6]; 
 char humF[6];
 dtostrf(temperature, 5, 1, tempF);
 dtostrf(humidity, 2, 0, humF);
 lcd.setCursor(0,0);
 lcd.print("Temp:"); 
 lcd.print(tempF);
 lcd.print((char)223);
 lcd.print("C ");
 lcd.setCursor(0,1);
 lcd.print("Umid: ");
 lcd.print(humF);
 lcd.print("%");
 delay(3000);
 lcd.setCursor(0,0);
 lcd.print("você está vendo");
 lcd.setCursor(0,1);
 lcd.print("a temperatura    ");
 delay(3000);
 lcd.setCursor(0,0);
 lcd.print("Em Rio Claro     ");
 lcd.setCursor(0,1);
 lcd.print("                 ");
}





RFID com arduino mega, aqui funciona!!!

Montei um arduino mega com o módulo RFID, que permite ligar um relé ao passar o cartão correto e mostra as informações no display 16x2 serial.







Segue a pinagem de deve ser usada para o MEGA
  MOSI  D51  
  MISO  D50  
  SCK    D52  
  SS       D53


segue o sketch
//==============================================
//Sketch do RFID com arduino mega
//==============================================
#include <SPI.h>
#include <Wire.h> 
#include <RFID.h>
#include <LiquidCrystal_I2C.h>
#define RST 9
#define SS 53
RFID rfid(SS, RST);
LiquidCrystal_I2C lcd(0x27,16,2);
int porta_rele1 = 2;

//==============================================
//Aqui coloquei minha logo que ficará no canto direito do display
//==============================================
byte a[8]= {B11111,B11111,B11000,B11111,B11111,B00000,B00000,B00000,};
byte b[8]= {B11111,B11111,B10001,B11011,B11011,B11011,B11111,B11111,};
byte c[8]= {B11111,B11111,B00011,B11111,B11111,B00000,B00000,B00000,};
byte d[8]= {B11111,B11011,B11011,B11011,B11011,B11011,B11011,B11111,};

void setup()
  pinMode(porta_rele1, OUTPUT); 
  digitalWrite(porta_rele1, LOW);
  lcd.init(); // initialize the lcd 
  lcd.backlight();
  SPI.begin(); 
  rfid.init();
  lcd.createChar(1, a); 
  lcd.createChar(2, b); 
  lcd.createChar(3, c); 
  lcd.createChar(4, d); 
  
  lcd.setCursor(13,0); //Coloca o cursor na coluna 13, linha 0
  lcd.write(1); //Escreve o simbolo 
  lcd.setCursor(14,0); //Coloca o cursor na coluna 14, linha 0
  lcd.write(2); //Escreve o simbolo 
  lcd.setCursor(15,0); //Coloca o cursor na coluna 15, linha 0
  lcd.write(3); //Escreve o simbolo 
  lcd.setCursor(14,1); //Coloca o cursor na coluna 14, linha 1
  lcd.write(4); //Escreve o simbolo

}
void loop()
{   
   String conteudo= "";
    if (rfid.isCard()) 
    {
//mude aqui com o numero do cartão que quer que ligue o relé
        if (rfid.readCardSerial()&& rfid.serNum[0]==157 && rfid.serNum[1]==25 && rfid.serNum[2]==144 && rfid.serNum[3]==85 && rfid.serNum[4]==65)
        { 
        lcd.setCursor(0,0);     
        lcd.print("Reconhecido ");
          lcd.setCursor(0,1);     
          lcd.print("Liga Rele ");
          
          digitalWrite(porta_rele1, HIGH);
          delay (3000);
          digitalWrite(porta_rele1, LOW);
          lcd.setCursor(0,0);     
          lcd.print("PASSE      ");
          lcd.setCursor(0,1);     
          lcd.print("O CARTAO ");
        }
        else
        { 
          lcd.setCursor(0,0);
          lcd.print("Recusado    ");
          lcd.setCursor(0,1);
          lcd.print("            ");
          delay (2000);
          lcd.setCursor(0,0);
          lcd.print("PASSE      ");
          lcd.setCursor(0,1);     
          lcd.print("O CARTAO ");
        }
    }
    rfid.halt();
  delay(10);
}