Componentes Eletronicos

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

Eletrogate 5 de janeiro de 20198 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_cart

O 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. A

pó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.


Eletrogate

5 de janeiro de 2019

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Conheça a Metodologia Eletrogate e Lecione um Curso de Robótica nas Escolas da sua Região!

Eletrogate Robô

Cadastre-se e fique por
dentro de novidades!