[vc_row][vc_column][vc_column_text css=””]
O sensor de temperatura e umidade DHT22 (ou AM2302), é uma evolução do DHT11, do qual já falamos algumas vezes aqui no Arduino e Cia. É um sensor bem simples e prático de utilizar tanto com placas Arduino como com placas Raspberry Pi, ESP32, ESP8266, etc.
O Sensor de temperatura e umidade DHT22
O DHT22 é um sensor com baixo consumo de corrente (2,5 mA durante medições, e 100-150µA em standby), e que possui internamente um sensor de umidade capacitivo e um termistor, além de um conversor analógico/digital para comunicação com o microcontrolador.
O sensor DHT22 (datasheet) é semelhante ao DHT11 (embora um pouco maior). Ambos utilizam apenas 1 pino de dados para conexão ao microcontrolador, mas internamente eles possuem diferenças significativas.
O DHT22, por exemplo, é mais lento do que o DHT11, porém ele é capaz de medir uma faixa mais ampla de temperatura e umidade.
Para ilustrar isso montei uma tabela com as principais características de cada um:
Assim como seu antecessor, o DHT22 também possui 4 pinos, dos quais apenas 3 são usados para conexão ao microcontrolador:
Como você pode notar na imagem, recomenda-se deixar o pino 3 livre, ou seja, sem conexão.
Conexão do DHT22 ao Arduino
Utilizar esse sensor com o Arduino é muito fácil. Vamos montar um circuito usando o Arduino Uno e um display LCD 16×2. Um resistor de 10 K é utilizado no pino de dados do sensor como resistor pull-up.O pino de dados do sensor será ligado ao pino digital 7do Arduino:
Antes de carregar o programa que vai mostrar o valor da temperatura e umidade no display, como mostrado na imagem acima, baixe a biblioteca DHT nesse link. Descompacte o arquivo, renomeie a pasta para DHT e coloque-a dentro da pasta Libraries da IDE do Arduino.
Essa biblioteca também serve para outros sensores DHT, como o DHT11 e o DHT21. No início do programa, logo após a definição do pino do sensor, altere a linha #define DHTTYPE de acordo com o sensor que você está utilizando.
//Programa: Sensor de temperatura DHT22
//Autor: Arduino e Cia
#include <DHT.h>
#include <LiquidCrystal.h>
//Pino conectado ao pino de dados do sensor
#define DHTPIN 7
//Pinos do display
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//Utilize a linha de acordo com o modelo do sensor
//#define DHTTYPE DHT11 // Sensor DHT11
#define DHTTYPE DHT22 // Sensor DHT 22 (AM2302)
//#define DHTTYPE DHT21 // Sensor DHT 21 (AM2301)
//Definicoes do sensor : pino, tipo
DHT dht(DHTPIN, DHTTYPE);
//Array simbolo grau
byte grau[8] ={ B00001100,
B00010010,
B00010010,
B00001100,
B00000000,
B00000000,
B00000000,
B00000000,};
void setup()
{
//Inicializa o display
lcd.begin(16, 2);
lcd.clear();
//Cria o caracter customizado com o simbolo do grau
lcd.createChar(0, grau);
//Informacoes iniciais no display
lcd.setCursor(0,0);
lcd.print("Temp. : ");
lcd.setCursor(13,0);
//Mostra o simbolo do grau
lcd.write(byte(0));
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("Umid. : ");
lcd.setCursor(14,1);
lcd.print("%");
Serial.begin(9600);
Serial.println("Aguardando dados...");
//Iniclaiza o sensor DHT
dht.begin();
}
void loop()
{
//Aguarda 2 segundos entre as medicoes
delay(2000);
//Leitura da umidade
float h = dht.readHumidity();
//Leitura da temperatura (Celsius)
float t = dht.readTemperature();
//Verifica se o sensor esta respondendo
if (isnan(h) || isnan(t))
{
Serial.println("Falha ao ler dados do sensor DHT !!!");
return;
}
//Mostra a temperatura no serial monitor e no display
Serial.print("Temperatura: ");
Serial.print(t);
lcd.setCursor(8,0);
lcd.print(t);
Serial.print(" *C ");
//Mostra a umidade no serial monitor e no display
Serial.print("Umidade : ");
Serial.print(h);
Serial.println(" %");
lcd.setCursor(8,1);
lcd.print(h);
}
Caso queira utilizar o circuito sem o display, os dados sobre temperatura e umidade também são enviados ao serial monitor:
Veja como utilizar este sensor de temperatura também no Raspberry no artigo Como ligar o sensor de temperatura DHT22 ao Raspberry Pi B+.
[/vc_column_text][/vc_column][/vc_row]