Pular para o conteúdo

Sensor DHT22 – Monitoramento e Alarme Visual

Pinagem do DHT22

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:

  1. Monitoramento ambiental: em estufas, laboratórios e residências para controlar condições climáticas.
  2. Automação residencial: como parte de sistemas inteligentes para ajustar climatização ou alertar sobre mudanças drásticas de temperatura e umidade.
  3. 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.
Como ligar o DHT22 no Arduino
Sensor DHT22
Como ligar o DHT22 no Arduino
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árioCompre aqui:
1x Arduino UnoAmazon
1x Display LCD 1602 com módulo i2c inclusoAmazon
1x Sensor DHT22Amazon
2x Leds RGB de Catodo comumAmazon
1x Resistor de 10kAmazon
6x Resistores 470RAmazon
Esquema de ligação do Monitoramento e Alarme Visual de Temperatura e Umidade com o Sensor DHT22
Esquema didático do Alarme com o DHT22
Sensor DHT22
Esquema didático do Alarme com o DHT22
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 470R
  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.
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.

Logo Oficial Habilidade Sem Limites
Sensor DHT22
Índice