Pesquisar

LCD 16X2 & SENSOR DE TEMPERATURA DHT11



Iremos montar um circuito para mostrar a temperatura e a humidade de um ambiente utilizando um LCD 16x2 que será nossa interface com o usuário, para ler a temperatura do ambiente utilizaremos  o sensor de temperatura DHT11.

A montagem do circuito vamos utilizar o módulo DHT11 ou simplesmente o  sensor DHT11. A ligação de ambos são idênticos e utiliza apenas um pino para comunicação com o Arduino.

Sensor DHT11   
Uma peculiaridade do sensor DHT11 é que o mesmo fornece apenas números inteiros, por exemplo irá fornecer 10 graus mesmo que esteja uma temperatura de 10,4 graus.
Isto quer dizer que você não irá conseguir mostrar temperaturas “quebradas” somente números inteiros exemplo 15, 20, 25, ... graus.
display LCD 16×2 utilizado neste projeto, é o baseado no controlador HD44780, possui backlight azul e caracteres brancos, seus pinos de conexão encontram-se na parte superior do display 1 à 16. As conexões utilizadas para o projeto foram:

Pino 4 (RS) ligado ao pino 9 do Arduino
Pino 6 (E) ligado ao pino 8 do Arduino
Pino 11 (D4) ligado ao pino 7 do Arduino
Pino 12 (D5) ligado ao pino 6 do Arduino
Pino 13 (D6) ligado ao pino 5 do Arduino
Pino 14 (D7) ligado ao pino 4 do Arduino
Pino 16 Catodo ligado ao GND
Pino 5 RW ligado ao GND
Pino 15 Anodo ligado ao 5V
Pino 1 Vss ligado ao Gnd
Pino 2 Vdd  ligado ao 5V


Para controle do LCD iremos utilizar a biblioteca LiquidCrystal a mesma já vêm instalada na IDE do Arduino), Para realizar as leituras do Sensor DHT11 iremos utilizar a biblioteca DHT, que pode ser baixada aqui.
Para mostrar o símbolo do grau (º), podemos utilizar um dos caracteres especiais disponíveis nesse display, usando o comando
lcd.print((char)223);
Que se trata de um caractere quadrado o mesmo customizar um caractere, com a forma mais arredondada. Para isso, foi necessário criar uma array de forma a desenhar este símbolo, para posteriormente utiliza-lo no programa, para esta tarefa utilizamos o comando
lcd.createChar(symbol_grau, data);
Onde: symbol_grau refere-se ao nome dado ao caractere especial, podendo ser um número de 0 a 7, data  refere-se ao array criado para formar o símbolo do grau.

O comando delay ao final não é recomendado que seja menor que 2000 (2 segundos), pois é mínimo valor para que o sensor forneça dados de forma correta.

// Mostra Humidade e Temperatura do DHT11 em um  LCD 16x2
      
      #include <DHT.h> //Carrega a biblioteca DHT
      #include <LiquidCrystal.h> //Carrega a biblioteca LCD
      #define DHTPIN 2     // define em qual pino do Arduino esta ligado o pino de dados do sensor   
      #define DHTTYPE DHT11       //define-se o tipo de sensor DHT utilizado no nosso caso o DHT11
      //#define DHTTYPE DHT22   // DHT 22  (AM2302)
      //#define DHTTYPE DHT21   // DHT 21 (AM2301)

      DHT dht(DHTPIN, DHTTYPE);
       //Define os pinos que serão ligados ao LCD
      LiquidCrystal lcd(9, 8, 7, 6, 5, 4);
      //   pin4   D7
      //   pin 5  D6
      //   pin 6  D5
      //   pin 7  D4
      //   pin8   Enable
      //   pin9   RS    
      //  Catodo ligado ao GND
      //  RW ligado ao GND
      //  Anodo ligado ao 5V
     
      //Matriz simbolo grau
      byte symbol_grau[8] ={ B00001100,
                      B00010010,
                      B00010010,
                      B00001100,
                      B00000000,
                      B00000000,
                      B00000000,
                      B00000000,};
      
      void setup()
      {
      Serial.begin(9600); //Inicializa a serial
      lcd.begin(16,2); //Inicializa LCD
      lcd.clear(); //Limpa o LCD
      //Cria o caractere customizado com o simbolo do grau
      lcd.createChar(1, symbol_grau);
      }
     void loop()
      {
      float h = dht.readHumidity(); //Le o valor da umidade guarda em h
      float t = dht.readTemperature(); //Le o valor da temperatura guarda em t
      lcd.setCursor(0,1);
      lcd.print("Temp : ");
      lcd.print(" ");
      lcd.setCursor(7,1);
      lcd.print(t,1);
      lcd.setCursor(12,1);
             
      //Mostra o simbolo do grau redondo formado pela array
      //lcd.write((byte)0);
      
      //Mostra o simbolo do grau quadrado
      lcd.print((char)223);
      lcd.setCursor(13,1);
      lcd.print("C"); // mostra o caracter C após o simbolo Graus
      
      lcd.setCursor(0,0);
      lcd.print("Umid : ");
      lcd.print(" ");
      lcd.setCursor(7,0);
      lcd.print(h,0);
      lcd.setCursor(12,0);
      lcd.print("%");
            
      delay(2000); //Tempo recomendado para leitura do sensor
      }

     

Nenhum comentário:

Postar um comentário