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:
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!
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.
Confira as especificações do sensor DHT11, sempre lembrando que esses valores podem variar dependendo do fabricante:

Sensor DHT11 – Pinout
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.
Confira as especificações do sensor DHT22, sempre lembrando que esses valores podem variar dependendo do fabricante:
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.

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
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 :
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
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:
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 – 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
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.

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.
#define DHTTYPE DHT11 // Sensor DHT11
//#define DHTTYPE DHT22 // Sensor DHT22 ou AM2302
//#define DHTTYPE DHT11 // Sensor DHT11
#define DHTTYPE DHT22 // Sensor DHT22 ou AM2302
// 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
E para o uso do Sensor DHT22:

Monitor Serial da IDE – Sensor DHT22
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.
|
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!