
O que é o Sensor DHT22?
O DHT22 é um sensor amplamente utilizado na comunidade maker para medir temperatura e umidade. Ele combina um sensor de umidade capacitivo e um termistor para oferecer leituras confiáveis. Sua simplicidade e preço acessível fazem dele uma escolha popular para projetos de automação residencial, estações meteorológicas e outras aplicações relacionadas a condições ambientais.
Características Técnicas do DHT22
O DHT22 possui as seguintes especificações:
- Faixa de medição de temperatura: -40°C a 80°C, com precisão de ±0,5°C.
- Faixa de medição de umidade: 0% a 100% de umidade relativa, com precisão de ±2%
- Taxa de atualização: aproximadamente 2 segundos.
- Tensão de operação: 3,3V a 6V.
- Interface de comunicação: sinal digital em um único fio.
Essas especificações tornam o DHT22 adequado para projetos que exigem medições precisas, mas não extremamente rápidas.
Onde Encontrar o Datasheet do Sensor DHT22
Para obter detalhes técnicos mais aprofundados, você pode acessar o datasheet do DHT22 nos site AllDatasheets: AllDatasheets – DHT22
Principais Funções do Sensor DHT22
O sensor é utilizado principalmente para:
- Monitoramento ambiental: em estufas, laboratórios e residências para controlar condições climáticas.
- Automação residencial: como parte de sistemas inteligentes para ajustar climatização ou alertar sobre mudanças drásticas de temperatura e umidade.
- Educação: em projetos didáticos de eletrônica e Internet das Coisas (IoT), devido à sua fácil integração com microcontroladores.
Vantagens do Sensor DHT22
O DHT22 apresenta diversos benefícios para os makers:
- Precisão elevada: é mais preciso em comparação ao seu antecessor, o DHT11.
- Fácil utilização: sua comunicação digital simplifica a integração com placas como Arduino, ESP32, ESP8266 e Raspberry PI
- Consumo de energia reduzido: ideal para projetos que utilizam baterias.
- Durabilidade: bom desempenho em ambientes diversos quando protegido adequadamente.
Limitações do Sensor DHT22
Embora eficiente, o DHT22 tem limitações que devem ser consideradas:
- Taxa de atualização lenta: o intervalo de 2 segundos pode ser inadequado para aplicações em tempo real.
- Tamanho físico: maior que outros sensores, o que pode dificultar sua instalação em espaços reduzidos.
- Susceptibilidade à condensação: pode afetar a precisão em ambientes muito úmidos.
- Limitação de distância de cabo: cabos longos podem introduzir ruídos e comprometer a comunicação.
Comparativo: Sensor DHT22 e Outros Sensores
DHT22 vs. DHT11
- Faixa de temperatura: o DHT22 tem uma faixa mais ampla (-40°C a 80°C) em comparação ao DHT11 (0°C a 50°C).
- Precisão: o DHT22 oferece maior precisão para temperatura e umidade.
- Custo: o DHT11 é mais barato, mas menos eficiente.
DHT22 vs. BME280
- Funções: o BME280 mede também pressão atmosférica, tornando-o mais versátil.
- Comunicação: o BME280 suporta protocolos I2C e SPI, enquanto o DHT22 usa um sinal digital simples.
- Custo: o BME280 tende a ser mais caro devido às funcionalidades adicionais..
DHT22 vs. SHT31
- Precisão: o SHT31 oferece precisão semelhante ao DHT22, mas com menor tempo de resposta.
- Comunicação: o SHT31 utiliza I2C, permitindo maior flexibilidade em projetos mais complexos.
- Robustez: o SHT31 é mais resistente a ambientes extremos.
Como Usar o DHT22
A integração do DHT22 é simples e requer poucos componentes. Veja os passos principais:
1. Conexão:
- Pino 1: VCC (3,3V a 6V).
- Pino 2: Dados (ligado a um resistor pull-up de 10kΩ).
- Pino 3: Não conectado.
- Pino 4: GND.

2. Código: Utilize o seguinte exemplo na Arduino IDE para exibir os dados do Sensor DHT22 no Serial Monitor:
#include "DHT.h"
#define DHTPIN 2 // Pino conectado ao DHT22
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
Serial.println("Inicializando sensor DHT22...");
}
void loop() {
float temperatura = dht.readTemperature();
float umidade = dht.readHumidity();
if (isnan(temperatura) || isnan(umidade)) {
Serial.println("Falha ao ler dados do sensor!");
return;
}
Serial.print("Temperatura: ");
Serial.print(temperatura);
Serial.println(" °C");
Serial.print("Umidade: ");
Serial.print(umidade);
Serial.println(" %");
delay(2000);
}
C++3. Código Para Monitoramento e Alarme Visual de Temperatura e Umidade com o Sensor DHT22
O código abaixo exibe as condições de temperatura e umidade em um display LCD 1602 conectado via I2C:
/*
* Título: Sensor DHT22 – Monitoramento e Alarme Visual
* Descrição: Código para sistema de monitoramento e Alarme Visual de condições de temperatura e umidade relativa do ar. Sensor utilizado DHT22, o sensor envia os dados de t5emperatura e umidade para o Arduino e este interpreta os valores e exibe em um lcd1602, existes dois LEDs RGB que através da cor exibida por cada um, fornece um Alarme Visual da condição de Temperatura e Umidade Relativa encontrada no ambiente.
* Autor: Habilidades Sem Limites
* Data: 23 de agosto de 2024
*
* Licença:
* Este código é fornecido exclusivamente para fins educacionais e pessoais.
* O uso comercial deste código é estritamente proibido sem a autorização prévia e por escrito do autor.
* Todos os direitos reservados ao autor. O uso não autorizado pode resultar em ações legais.
*
* Assinatura Digital:
* Este documento foi assinado digitalmente para garantir sua autenticidade e integridade.
* A versão original assinada digitalmente está em posse do autor.
*
* Contato:
* Para obter autorização ou esclarecer dúvidas, visite: https://hsemlimites.com.br/hsl-fale-conosco/
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "DHT.h"
// Define o pino digital onde o sensor DHT22 está conectado
#define DHTPIN 2 // Pino conectado ao DHT22
// Define o tipo de sensor DHT que estamos usando
#define DHTTYPE DHT22
// Definindo os pinos para os LEDs RGB
#define LED_TEMP_R 3 // Pino para o componente vermelho do LED de temperatura
#define LED_TEMP_G 5 // Pino para o componente verde do LED de temperatura
#define LED_TEMP_B 6 // Pino para o componente azul do LED de temperatura
#define LED_UMID_R 9 // Pino para o componente vermelho do LED de umidade
#define LED_UMID_G 10 // Pino para o componente verde do LED de umidade
#define LED_UMID_B 11 // Pino para o componente azul do LED de umidade
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2); // Endereço I2C do LCD e dimensões (16 colunas e 2 linhas)
void setup() {
// Inicializa o display LCD
lcd.init();
lcd.backlight();
// Inicializa o sensor DHT
dht.begin();
// Exibe mensagem de inicialização no LCD
lcd.setCursor(0, 0);
lcd.print("Inicializando...");
delay(2000);
lcd.clear();
// Configura os pinos dos LEDs RGB como saída
pinMode(LED_TEMP_R, OUTPUT);
pinMode(LED_TEMP_G, OUTPUT);
pinMode(LED_TEMP_B, OUTPUT);
pinMode(LED_UMID_R, OUTPUT);
pinMode(LED_UMID_G, OUTPUT);
pinMode(LED_UMID_B, OUTPUT);
}
// Função para configurar as cores dos LEDs RGB
void setColor(int ledR, int ledG, int ledB, int r, int g, int b) {
analogWrite(ledR, r);
analogWrite(ledG, g);
analogWrite(ledB, b);
}
void loop() {
// Lê a temperatura e a umidade do sensor DHT22
float temperatura = dht.readTemperature();
float umidade = dht.readHumidity();
// Verifica se a leitura do sensor falhou
if (isnan(temperatura) || isnan(umidade)) {
lcd.setCursor(0, 0);
lcd.print("Erro no sensor!");
delay(2000);
return;
}
// Exibe os valores de temperatura e umidade no LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperatura);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Umid: ");
lcd.print(umidade);
lcd.print("%");
// Avalia a condição de temperatura
String condTemp = "";
if (temperatura <= 0) {
condTemp = "Frio severo";
setColor(LED_TEMP_R, LED_TEMP_G, LED_TEMP_B, 0, 0, 255); // Azul
} else if (temperatura > 0 && temperatura <= 10) {
condTemp = "Frio";
setColor(LED_TEMP_R, LED_TEMP_G, LED_TEMP_B, 0, 128, 255); // Azul esverdeado
} else if (temperatura > 10 && temperatura <= 20) {
condTemp = "Baixa";
setColor(LED_TEMP_R, LED_TEMP_G, LED_TEMP_B, 0, 255, 0); // Verde
} else if (temperatura > 20 && temperatura <= 25) {
condTemp = "Normal";
setColor(LED_TEMP_R, LED_TEMP_G, LED_TEMP_B, 0, 255, 0); // Verde
} else if (temperatura > 25 && temperatura <= 30) {
condTemp = "Moderada";
setColor(LED_TEMP_R, LED_TEMP_G, LED_TEMP_B, 255, 165, 0); // Laranja
} else if (temperatura > 30 && temperatura <= 35) {
condTemp = "Elevada";
setColor(LED_TEMP_R, LED_TEMP_G, LED_TEMP_B, 255, 0, 0); // Vermelho
} else {
condTemp = "Calor severo";
setColor(LED_TEMP_R, LED_TEMP_G, LED_TEMP_B, 255, 0, 0); // Vermelho
}
// Avalia a condição de umidade
String condUmid = "";
if (umidade < 30) {
condUmid = "Baixa";
setColor(LED_UMID_R, LED_UMID_G, LED_UMID_B, 128, 0, 128); // Roxo
} else if (umidade >= 30 && umidade < 50) {
condUmid = "Moderada";
setColor(LED_UMID_R, LED_UMID_G, LED_UMID_B, 0, 255, 128); // Roxo esverdeado
} else if (umidade >= 50 && umidade <= 70) {
condUmid = "Normal";
setColor(LED_UMID_R, LED_UMID_G, LED_UMID_B, 0, 255, 0); // Verde
} else {
condUmid = "Elevada";
setColor(LED_UMID_R, LED_UMID_G, LED_UMID_B, 255, 0, 0); // Vermelho
}
// Exibe as condições de temperatura e umidade no LCD
lcd.setCursor(0, 0);
lcd.print("Temp: " + condTemp);
lcd.setCursor(0, 1);
lcd.print("Umid: " + condUmid);
// Aguarda 2 segundos antes de ler novamente
delay(2000);
}
/*
* Montagem do experimento:
* 1. Certifique-se de que o Arduino está desconectado da fonte de alimentação.
* 2. Conecte o pino VCC do sensor DHT22 ao pino 5V do Arduino.
* 3. Conecte o pino GND do sensor DHT22 ao GND do Arduino.
* 4. Conecte o pino de sinal (Data) do sensor DHT22 ao pino digital 2 do Arduino.
* 5. Adicione um resistor de 10k ohms entre o pino VCC e o pino de sinal (Data) do sensor DHT22 para pull-up.
* 6. Conecte o display LCD aos pinos I2C do Arduino (SDA e SCL).
* - SDA: Conecte o pino SDA do LCD ao pino A4 do Arduino (SDA).
* - SCL: Conecte o pino SCL do LCD ao pino A5 do Arduino (SCL).
* 7. Conecte os LEDs RGB aos pinos definidos no código e utilize resistores apropriados.
* 8. Verifique se todas as conexões estão firmes e corretas.
* 9. Conecte o Arduino à fonte de alimentação ou ao computador via cabo USB.
*
* Funcionamento do código:
* - O código inicializa a comunicação com o display LCD, o sensor DHT22 e os LEDs RGB.
* - No `setup()`, o display, o sensor e os LEDs são inicializados, e uma mensagem de inicialização é exibida no LCD.
* - No `loop()`, os valores de temperatura e umidade são lidos do sensor e exibidos no LCD a cada 2 segundos.
* - O código avalia as condições de temperatura e umidade e altera as cores dos LEDs RGB conforme os valores lidos.
*
* Cuidados:
* - Verifique as conexões de alimentação (VCC e GND) para evitar danos ao Arduino, ao sensor DHT22, ao display LCD e aos LEDs RGB.
* - Utilize resistores apropriados para os LEDs RGB para garantir que eles funcionem corretamente.
*/
C++Material necessário:
Nosso site cresce com seu apoio! Ao visitar as ofertas abaixo e realizar suas compras pelos links de afiliados, você nos ajuda a manter o conteúdo atualizado e gratuito. Aproveite as melhores ofertas da Amazon!
Material Necessário | Compre aqui: |
---|---|
1x Arduino Uno | Amazon |
1x Display LCD 1602 com módulo i2c incluso | Amazon |
1x Sensor DHT22 | Amazon |
2x Leds RGB de Catodo comum | Amazon |
1x Resistor de 10k | Amazon |
6x Resistores 470R | Amazon |
Esquema de ligação do Monitoramento e Alarme Visual de Temperatura e Umidade com o Sensor DHT22

Montagem do experimento:
- Certifique-se de que o Arduino está desconectado da fonte de alimentação.
- Conecte o pino VCC do sensor DHT22 ao pino 5V do Arduino.
- Conecte o pino GND do sensor DHT22 ao GND do Arduino.
- Conecte o pino de sinal (Data) do sensor DHT22 ao pino digital 2 do Arduino.
- Adicione um resistor de 10k ohms entre o pino VCC e o pino de sinal (Data) do sensor DHT22 para pull-up.
- Conecte o display LCD aos pinos I2C do Arduino (SDA e SCL).
- SDA: Conecte o pino SDA do LCD ao pino A4 do Arduino (SDA).
- SCL: Conecte o pino SCL do LCD ao pino A5 do Arduino (SCL).
- Conecte os LEDs RGB aos pinos definidos no código e utilize resistores 470R
- Verifique se todas as conexões estão firmes e corretas.
- Conecte o Arduino à fonte de alimentação ou ao computador via cabo USB.
4. Proteção do sensor: Utilize uma caixa protetora para evitar danos por poeira ou água.
Conclusão:
O DHT22 é um sensor confiável e acessível para medição de temperatura e umidade. Suas vantagens incluem precisão e facilidade de uso, mas é importante considerar suas limitações ao planejar um projeto. Comparado a outros sensores, ele é uma excelente opção para aplicações em automação residencial, estações meteorológicas e monitoramento ambiental, desde que suas características sejam alinhadas às necessidades do projeto.
