Mostrando informações de temperatura no LCD 16×2 com o sensor DHT11 Deixe um comentário

No nosso primeiro artigo sobre o sensor de temperatura e umidade DHT11 aqui no blog FILIPEFLOP, mostramos como acompanhar as informações de temperatura e umidade no monitor serial, método ideal para quem ainda não tem um display LCD. Para quem já tem um LCD 16×2 e quer melhorar o projeto, vamos mostrar como ligar o sensor DHT11 juntamente com o display e mostrar nele as informações que precisamos.

DHT11

 

UTILIZANDO O SENSOR DHT11

Para este circuito, você pode utilizar o módulo DHT11 ou apenas o sensor DHT11. A ligação dos dois é idêntica e utiliza apenas um pino para ligação ao Arduino.

Sensor de temperatura e umidade DHT11

Uma característica do sensor DHT11 é que ele não fornece informações “quebradas” de temperatura. Isso significa que o sensor vai mostrar as informações de, por exemplo, 18, 20, 25 graus, mas não as casas decimais de 18,2 ou 25,6 graus. Os números fornecidos pelo sensor são redondos.

O display LCD 16×2 que vamos utilizar, baseado no controlador HD44780, é um display com backlight azul e caracteres na cor branca, com os pinos de conexão na parte superior numerados de 1 a 16. A conexão básica ao Arduino usa 6 pinos :

  • Pino 4 (RS) ligado ao pino 12 do Arduino
  • Pino 6 (E) ligado ao pino 11 do Arduino
  • Pino 11 (D4) ligado ao pino 5 do Arduino
  • Pino 12 (D5) ligado ao pino 4 do Arduino
  • Pino 13 (D6) ligado ao pino 3 do Arduino
  • Pino 14 (D7) ligado ao pino 2 do Arduino

O pino 3 do display será ligado ao pino central de um potenciômetro de 10K, que tem a função de regular o contraste. As demais ligações são feitas ao GND (pinos 1, 5 e 16) e aos 5v do Arduino (pinos 2 e 15) , e qualquer inversão pode impedir a exibição dos caracteres :

Circuito DHT11 e LCD HD44780

No programa, vamos utilizar a biblioteca LiquidCrystal para controle do LCD (esta biblioteca já vêm instalada na IDE), e também a biblioteca DHT, que pode ser baixada neste link.

Para mostrar o símbolo do grau (º), podemos utilizar um dos caracteres especiais disponíveis nesse display, usando o comando

lcd.print((char)223);

Ou criar um caractere customizado, com a forma mais arredondada. Para isso, criamos um array e desenhamos nosso próprio símbolo, e para utilizá-lo no programa, usamos o comando

lcd.createChar(valor, data);

onde valor se refere ao nome que daremos ao caractere especial, podendo ser um número de 0 a 7, e data se refere ao array criado para formar o símbolo do grau.

O comando delay no final do programa não deve ter um valor abaixo de 2000 (2 segundos), que é o valor mínimo para que o sensor possa fornecer os dados corretamente.

//Programa : Temperatura e umidade com o DHT11 e LCD 16x2
//Autor : FILIPEFLOP

#include <LiquidCrystal.h> //Carrega a biblioteca LCD
#include <DHT.h> //Carrega a biblioteca DHT

//Define a ligação ao pino de dados do sensor
#define DHTPIN A5

//Define o tipo de sensor DHT utilizado
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

//Define os pinos que serão ligados ao LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

//Array simbolo grau
byte 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(0, grau);
}

void loop()
{
float h = dht.readHumidity(); //Le o valor da umidade
float t = dht.readTemperature(); //Le o valor da temperatura
lcd.setCursor(0,0);
lcd.print("Temp : ");
lcd.print(" ");
lcd.setCursor(7,0);
lcd.print(t,1);
lcd.setCursor(12,0);

//Mostra o simbolo do grau formado pelo array
lcd.write((byte)0);

//Mostra o simbolo do grau quadrado
//lcd.print((char)223);

lcd.setCursor(0,1);
lcd.print("Umid : ");
lcd.print(" ");
lcd.setCursor(7,1);
lcd.print(h,1);
lcd.setCursor(12,1);
lcd.print("%");

//Intervalo recomendado para leitura do sensor
delay(2000);
}

 Gostou? Deixe seu comentário logo abaixo. Em caso de dúvidas, caso queira trocar uma ideia, ou até mesmo dividir seu projeto, acesse nosso Fórum!

Faça seu comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *