/
/
Sensores DHT11 e DHT22: Guia Básico dos Sensores de Umidade e Temperatura

Sensores DHT11 e DHT22: Guia Básico dos Sensores de Umidade e Temperatura

Sumário

Baixe agora a apostila Arduino Iniciante e comece seus projetos

Compartilhe seu conhecimento e receba em dinheiro ou produtos.

blog-eletrogate-sensores-dht11-dht22-capa
8 min

Introdução

Nesse Tutorial, você aprenderá como funcionam os Sensores  DHT11 e DHT22 de umidade e temperatura e como fazer uma montagem desses sensores com o Arduino.

Umidade é a quantidade de vapor de água na atmosfera. A umidade relativa do ar é uma importante medida usada na previsão do tempo, e indica a possibilidade de precipitação chuva.

A alta quantidade de vapor de água na atmosfera favorece a ocorrência de chuvas. Já com a umidade do ar baixa, é difícil chover.

A alta umidade durante dias quentes faz a sensação térmica aumentar, ou seja, a pessoa tem a impressão de que está mais calor, devido à redução da eficácia da transpiração da pele, e assim reduzindo o resfriamento corporal.

De acordo com a OMS (Organização Mundial da Saúde), valores de umidade abaixo de 20% oferecem risco à saúde, podendo provocar desidratação nas pessoas.

O instrumento chamado de Higrômetro é usado para a medição da umidade relativa presente na atmosfera.

É utilizado principalmente em estudos do clima, mas também em locais fechados onde a presença de umidade excessiva ou abaixo do normal poderia causar danos, por exemplo dentro de museus, bibliotecas e em laboratórios.

Essas são algumas aplicações para os Sensores de Umidade e Temperatura:

  • Estação Meteorológica,
  • Controle de irrigação para plantas,
  • Controle de umidade e temperatura em ambientes controlados,
  • Frigoríficos,
  • Data Centers,
  • Data loggers, etc.

Neste artigo, vamos ensinar você sobre o funcionamento dos Sensores  DHT11 e DHT22 de umidade e temperatura. Veja, também, como fazer uma montagem desses sensores com o Arduino. Confira!

Sensor DHT11

O sensor DHT11 é um dispositivo de baixo custo usado para medição de umidade e temperatura do ar.O sensor de umidade é capacitivo e o sensor de temperatura é um termistor NTC, isto é um resistor sensível à variações de temperatura.Dentro do sensor existe um microcontrolador que faz as medições e transmite os valores no formato digital através de um pino de saída.Segundo o fabricante, a transmissão digital pode ser realizada através de um cabo de até 20 metros. Mas vale a observação de que a longa exposição do sensor ao sol, poderá afetar a performance do mesmo.

Especificações do sensor DHT11

Confira as especificações do sensor DHT11, sempre lembrando que esses valores podem variar dependendo do fabricante:
  • Faixa de umidade relativa: de 20 a 80 %
  • Precisão na umidade: ± 5 % RH
  • Resolução de umidade: 5 % RH
  • Faixa de temperatura: 0 a 50 °C
  • Precisão na temperatura: ± 2 % °C
  • Resolução na temperatura: 2 °C
  • Tempo de resposta: 2 segundos
  • Alimentação: de 3,5 V a 5 V
  • Consumo máximo de corrente: 2,5 mA
  • DHT11 - Datasheet

Pinout do sensor DHT11

  • VCC = 3,5 a 5V
  • DATA = comunicação de dados
  • NC = sem conexão
  • GND = terra
sensor dht11
Sensor DHT11 - Pinout

Sensor DHT22/AM2302

O Sensor DHT22 ou AM2302 também é  usado para medição de umidade e temperatura do ar. Só que com características melhores do que o do DHT11.Tem maior precisão nas medições e abrange uma faixa maior de temperatura e umidade. Por isso ele custa um pouco mais caro.

Especificações do sensor DHT22 

Confira as especificações do sensor DHT22, sempre lembrando que esses valores podem variar dependendo do fabricante:
  • Faixa de umidade relativa: de 0 a 100 %
  • Precisão na umidade: ± 2% RH
  • Resolução de umidade: 0,1 % RH
  • Faixa de temperatura: -40 a 80 °C
  • Precisão na temperatura: ± 1 % °C
  • Resolução na temperatura: 0,1 °C
  • Tempo de resposta: < 5 segundos
  • Alimentação: de 3,3V a 5 V
  • Consumo máximo de corrente: 0,5 mA
  • Datasheet - DHT22/AM2302
Existem algumas limitações no tamanho do cabo do sensor. Se a tensão de alimentação for de 3,3V, o cabo não pode exceder um metro.Além disso, uma longa exposição do sensor ao sol, também poderá afetar a performance do mesmo.

Pinout do sensor DHT22

  • VCC = 3,3 a 5V
  • DATA = comunicação de dados
  • NC = sem conexão
  • GND = terra
sensor dht22 pinout
Sensor DHT22/AM2302 - pinout
Para os curiosos, veja essa imagem do sensor DHT22 aberto e sem a tampa.
sensor DHT22 aberto e sem a tampa
Sensor DHT22 aberto e sem a tampa

Interface com os Sensores DHT11 e DHT22

Após a alimentação de tensão dos Sensores DHT11 ou DHT22, aguarde cinco segundos para o circuito se estabilizar. Um capacitor de 100 uF é recomendado entre o pino VCC e o GND.No pino de saída, deve ser usado também um resistor de pullup (4,7K ohms). No caso do módulo sensor DHT11, esses componentes não são necessários pois já estão montados na placa.A comunicação dos dados no barramento serial (único pino) ocorre nos dois sentidos, isto é, do sensor para o Microcontrolador e vice-versa.O protocolo de comunicação pode ser dividido em três partes :

  1. Requisição: para o sensor enviar os dados, ele deverá ser  requisitado,
  2. Resposta: o sensor envia uma resposta depois de requisitado,
  3. Leitura de dados: após a resposta do sensor, os dados são enviado em 5 segmentos de 8 bits (40 bits).
Os dois primeiros bytes correspondem à umidade relativa na forma integral e decimal. O terceiro e quarto byte formam a temperatura em graus Celsius na forma integral e decimal. O último byte é o checksum dos dados.Se quiser saber mais sobre os sensores e os protocolos, sugerimos a leitura dos Datasheets deste documento.
Modulo Sensor DHT11 - pinout
Modulo Sensor DHT11 - Pinout

Sensor DHT11 ou DHT22 com Arduino

A montagem dos Sensores DHT com Arduino é muito simples.Como os fios de ligação são curtos, não conectei o capacitor como recomendado. Se for usar cabos mais extensos, monte o capacitor entre o VCC e o terra. Mas o resistor de pullup de 4,7 K ohms é necessário.Materiais necessários para o projeto com Sensores DHT11 e DHT22

Você também pode substituir o sensor indicado acima por uma das opções a seguir: cta_cartO Diagrama Fritzing abaixo serve para os dois sensores, DHT11 e DHT22, já que eles têm a mesma pinagem. Mas não se esqueça de configurar no programa, o sensor usado. Já que existem algumas diferenças nos protocolos de comunicação.
Diagrama Fritzing sensores DHT11 e DHT22
Diagrama Fritzing - Arduino e sensores DHT11 e DHT22
Considerando que o módulo DHT11 já tem o resistor de pullup no pino de dados, nem esse resistor é necessário. A alimentação recomendável é de 5 V.
Diagrama Fritzing - Arduino e sensor DHT11
Diagrama Fritzing - Arduino e sensor DHT11

Instalando a Biblioteca DHT Sensor

Tanto para o uso do Sensor DHT11, quanto para o DHT22, a biblioteca que será usada é a da Adafruit. Ela segue os padrões da IDE Arduino e é bem simples para usá-la.Para instalar a nova Biblioteca DHT Sensor Library , clique em: Sketch > Incluir Biblioteca > Gerenciar Bibliotecas Após abrir a janela do Gerenciador de Biblioteca, refine a busca digitando DHT Sensor Library. Na biblioteca  da Adafruit, clique em More Info e depois em Instalar.Após alguns segundos, ela será automaticamente instalada. Lembre-se que o seu computador precisa estar conectado na internet, para poder baixar a biblioteca. Após a instalação da Biblioteca, é necessário que feche e abra novamente o programa Arduino IDE.

Sketch Arduino - Sensor DHT11 e DHT22

O programa também é bem simples. Fiz uma tradução do exemplo da Biblioteca da Adafruit, para facilitar o entendimento.O programa faz com que o Arduino se comunique com o Sensor DHT, para realizar as leituras de umidade e temperatura.O mesmo programa poderá ser usado para os dois sensores (DHT11 ou DHT22). Mas somente um sensor deverá ser usado de cada vez. É necessário somente a definição no programa, do sensor a ser usado.

  • Para usar o Sensor DHT11 , comente o Sensor DHT22
#define DHTTYPE DHT11                 // Sensor DHT11 //#define DHTTYPE DHT22            // Sensor DHT22 ou AM2302
  • Ou para usar o Sensor DHT22, comente o Sensor DHT11 :
//#define DHTTYPE DHT11             // Sensor DHT11 #define DHTTYPE DHT22               // Sensor DHT22 ou AM2302

Sketch ArduinoDHT.ino

// Arduino - Sensor DHT - Umidade e Temperatura
// https://blog.eletrogate.com/
// Adafruit Unified Sensor Library: https://github.com/adafruit/Adafruit_Sensor

#include <Adafruit_Sensor.h>                       // Biblioteca DHT Sensor Adafruit 
#include <DHT.h>
#include <DHT_U.h>

// selecione um sensor, retirando o comentário - duas barras
#define DHTTYPE    DHT11                           // Sensor DHT11
//#define DHTTYPE      DHT22                       // Sensor DHT22 ou AM2302

#define DHTPIN 2                                   // Pino do Arduino conectado no Sensor(Data) 
DHT_Unified dht(DHTPIN, DHTTYPE);                  // configurando o Sensor DHT - pino e tipo
uint32_t delayMS;                                  // variável para atraso no tempo

void setup()
{
  Serial.begin(9600);                             // monitor serial 9600 bps
  dht.begin();                                    // inicializa a função
  Serial.println("Usando o Sensor DHT");
  sensor_t sensor;
  dht.temperature().getSensor(&sensor);           // imprime os detalhes do Sensor de Temperatura
  Serial.println("------------------------------------");
  Serial.println("Temperatura");
  Serial.print  ("Sensor:       "); Serial.println(sensor.name);
  Serial.print  ("Valor max:    "); Serial.print(sensor.max_value); Serial.println(" *C");
  Serial.print  ("Valor min:    "); Serial.print(sensor.min_value); Serial.println(" *C");
  Serial.print  ("Resolucao:   "); Serial.print(sensor.resolution); Serial.println(" *C");
  Serial.println("------------------------------------");

  dht.humidity().getSensor(&sensor);            // imprime os detalhes do Sensor de Umidade
  Serial.println("------------------------------------");
  Serial.println("Umidade");
  Serial.print  ("Sensor:       "); Serial.println(sensor.name);
  Serial.print  ("Valor max:    "); Serial.print(sensor.max_value); Serial.println("%");
  Serial.print  ("Valor min:    "); Serial.print(sensor.min_value); Serial.println("%");
  Serial.print  ("Resolucao:   "); Serial.print(sensor.resolution); Serial.println("%");
  Serial.println("------------------------------------");
  delayMS = sensor.min_delay / 1000;            // define o atraso entre as leituras
}

void loop()
{
  delay(delayMS);                               // atraso entre as medições
  sensors_event_t event;                        // inicializa o evento da Temperatura
  dht.temperature().getEvent(&event);           // faz a leitura da Temperatura
  if (isnan(event.temperature))                 // se algum erro na leitura
  {
    Serial.println("Erro na leitura da Temperatura!");
  }
  else                                          // senão
  {
    Serial.print("Temperatura: ");              // imprime a Temperatura
    Serial.print(event.temperature);
    Serial.println(" *C");
  }
  dht.humidity().getEvent(&event);              // faz a leitura de umidade
  if (isnan(event.relative_humidity))           // se algum erro na leitura
  {
    Serial.println("Erro na leitura da Umidade!");
  }
  else                                          // senão
  {
    Serial.print("Umidade: ");                  // imprime a Umidade
    Serial.print(event.relative_humidity);
    Serial.println("%");
  }
}
Essas são as telas do Monitor Serial da IDE , para o Sketch das montagens. Veja as diferenças nas leituras dos dois sensores.

Usando o Sensor DHT11:

Monitor Serial da IDE - Sensor DHT11
Monitor Serial da IDE - Sensor DHT11
E para o uso do Sensor DHT22:
Monitor Serial da IDE - Sensor DHT22
Monitor Serial da IDE - Sensor DHT22

Links Adicionais sobre os Sensores DHT

Se gostou ou tiver alguma dúvida,  deixe um comentário! Tenha a Metodologia Eletrogate na sua Escola! Conheça nosso Programa de Robótica Educacional.

Sobre o Autor


José Gustavo Abreu Murta

Consultor e Projetista de Sistemas Embarcados. Técnico em eletrônica, formado em Curso superior de TPD, pós-graduado em Marketing. Trabalhou por muitos anos na IBM na área de manutenção de computadores de grande porte. Aposentou-se, podendo curtir o que mais gosta : estudar e ensinar Tecnologia. Hobista em eletrônica desde 1976. Gosta muito de Fotografia e Observação de aves.

Nesse Tutorial, você aprenderá como funcionam os Sensores  DHT11 e DHT22 de umidade e temperatura e como fazer uma montagem desses sensores com o Arduino.

Precisa dos componentes para este projeto?

Encontre tudo na Loja Eletrogate com frete grátis para compras acima de R$ 200