Introdução
Um sensor da família DHT é um dispositivo que possui dois sensores embutidos: Um termistor para medir a temperatura e um sensor capacitivo para medir a umidade do ar.
Um termistor é uma espécie de resistor variável que muda sua resistência de acordo com a temperatura. Já um sensor capacitivo é um dispositivo que mede alguma grandeza física de acordo com o valor de sua capacitância, isto é, sua capacidade de armazenar energia na forma de carga elétrica.
No DHT, o sensor capacitivo possui uma membrana permeável que deixa a umidade do ar entrar em contato com o sensor, de forma a alterar sua capacitância, gerando uma leitura correspondente para a porcentagem de umidade.
Esses sensores são uma opção barata para projetos que precisem de um controle ambiental, por exemplo, ligar um aquecedor ou umidificador através de um relê, de acordo com valores de temperatura e umidade.
A família DHT
Os sensores da família DHT mais conhecidos são os modelos DHT11 e DHT22. Eles podem ser encontrados como sensores simples ou conectados a módulos o que gera uma certa confusão com relação aos seus terminais.
Por exemplo, quando adquiridos em módulos, encontraremos três terminais no DHT11: VCC, DADOS e GND. No entanto, quando adquiridos como sensores isolados eles apresentam quatro terminais: VCC, DADOS, NC e GND.
![]() |
Um DHT11 mostrando seus terminais e especificações impressas |
![]() |
Um módulo com o mesmo sensor mostrando os terminais |
Esse NC significa NÃO CONECTADO ou seja, é um terminal que não é ligado a nada no sensor e NÃO deverá ser conectado a nenhum dispositivo ou pino do Arduino. Em minhas pesquisas NÃO encontrei nenhuma justificativa técnica forte para justificar sua existência, tanto é que ele é eliminado nos módulos.
O terminal de DADOS deverá ser conectado a um entrada analógica ou a um pino PWM do Arduino os demais são ligados normalmente a alimentação (VCC e GND). Cabe esclarecer que a disposição dos terminais nos módulos pode variar de acordo com o fabricante.
Em alguns artigos pela Web, autores recomendam a utilização de um resistor de 10 KΩ entre o terminal de dados e o terminal VCC. No entanto esse sensor já possui um resistor interno e em simuladores como o Wokwi o projeto funciona adequadamente SEM resistor externo.
Para seu pleno uso na Arduino IDE o desenvolvedor deverá incluir alguma biblioteca "DHT.H" para converter as grandezas físicas obtidas dos sensores em leituras de temperatura e umidade do ar.
Quando digo "alguma" é porque temos a DHT sensor library disponibilizada pela empresa Adafrut, como também a DHTlib de Rob Tillaart que é otimizado para microcontroladores da família AVR como os utilizados no Arduino. Ambas podem ser obtidas no Gerenciador de Bibliotecas da Arduino IDE, e no Wokwi encontraremos exemplos com as duas.
Diferenças entre DHT11 e DHT22
Ambos os sensores tem a mesma finalidade, porém o sensor DHT22 é uma evolução do DHT11 por isso trabalha em uma faixa de maior abrangência das medidas, como também possui uma maior precisão e melhor resolução.
A precisão de um sensor é a exatidão das suas medições, enquanto a resolução é o menor valor que um sensor pode detectar. Essa resolução depende da quantidade de bits utilizada na informação.
A seguir temos uma tabela que resume suas diferenças e semelhanças em especificações. Lembrando que esses valores variam de acordo com o fabricante:
![]() |
Resumo das diferenças e semelhanças nas especificações entre DHT11 e DHT22 |
Montagem no Wokwi
Para ganhar tempo já deixei um projeto pronto no Wokwi para você acessar através do link e salvar uma cópia nos seus projetos com o nome, por exemplo de: Framework Arduino II: Aula 04 Sensores de temperatura e umidade (DHT). Ela utiliza um sensor DHT22, mas farei as devidas observações no código para ser utilizado com o DHT11.
Nessa montagem inclui uma chave deslizante apenas para simular uma falha de comunicação entre o sensor e a placa. Caso tenha dificuldade para trabalhar no Wokwi, recomendo uma olhada no primeiro minicurso de Framework Arduino.
Link: https://wokwi.com/projects/413295023594411009
![]() |
Simulação da montagem no Wokwi |
Experimente iniciar a simulação, clicar no sensor e ajustar a temperatura e umidade na barra superior de opções, conforme a figura acima. Experimente também clicar na chave deslizante durante a simulação e mudar sua posição para a direita simulando uma falha de comunicação.
![]() |
Simulação de falha com a chave deslizante |
Sketch e explicações
Quando você utiliza uma diretiva #include em um programa em C ou C++ você precisa fornecer ao projeto um arquivo de biblioteca, caso contrário ocorre um erro, por isso quando você utiliza #include <dht.h> no Wokwi pela primeira vez e manda fazer uma simulação, ele dá uma mensagem de erro e pergunta se você deseja que ele inclua a biblioteca para você.
![]() |
Tela de erro do Wokwi sugerindo a instalação da biblioteca |
Nesse projeto a biblioteca já foi incluída, mas se você for montar um Sketch sozinho, não esqueça desse detalhe. Ele também coloca um arquivo libraries.txt com informações de referência das bibliotecas.
![]() |
Tela do Wokwi mostrando a biblioteca instalada |
Essa biblioteca oferece uma série de recursos para verificar erros e possui macros que facilitam a codificação. Já a biblioteca Adafruit permite a possibilidade de trabalhar com temperaturas em Fahrenheit. Como o nosso propósito aqui é facilitar, minimizei o código para facilitar a compreensão do estudante, mas recomendo uma olhada posterior nas montagens de referencia do Wokwi.
- #include <dht.h>
- dht sensor;
- #define pino 14
- int verificacao;
- void setup() {
- Serial.begin(9600);
- }
- void loop() {
- verificacao = sensor.read22(pino);
- if (verificacao==0) {
- Serial.print("Umidade em %: ");
- Serial.println(sensor.humidity, 1);
- Serial.print("Temperatura em C: ");
- Serial.println(sensor.temperature, 1);
- }
- else{
- Serial.println("Falha na leitura");
- }
- delay(2000);
- }
Nesse Sketch, após incluir a biblioteca na linha 1 estou instanciando o objeto sensor com base na classe dht (linha 2). Em seguida estou definindo a constante pino como sendo 14 ou A0 que será o pino a ser utilizado para a leitura do sensor.
Na linha 4 declarei uma variável inteiro chamada verificacao que vai armazenar a leitura do sensor e poderá ser usada para testar grosseiramente se o sensor está ok. No setup() eu apenas inicializei o monitor serial a 9600 de velocidade, mas poderia no simulador usar algo mais rápido.
Na função loop() eu peguei a variável criada e atribui a ela a leitura através de um método que a classe dht me oferece. Como estamos usando o DHT22, o método é o read22(), mas se fosse um DHT11 seria read11(). Esse método apenas precisa do pino do sensor como parâmetro.
Depois testei o valor da variável com um if. Se ela for zero, significa que o leitor está pronto pra ser usado, caso contrário (else) ele imprime no monitor serial "Falha na leitura". Lembra que eu disse que a biblioteca oferece macros que facilitam? Eu poderia usar a declaração DHTLIB_OK no lugar do zero que também funcionaria.
Se a verificação deu ok, estou imprimindo no monitor a temperatura em Celsius e a umidade através dos dois métodos que a classe oferece: temperature e humidity. O parâmetro 1 do Serial.print() é para mostrar as leituras com uma casa decimal.
Terminamos com um delay() ajustado para o mesmo tempo de resposta que esse sensor oferece. Te convido a dar uma olhada nos exemplos do Wokwi para a biblioteca DHTLib e da Adafruit para conhecer outros recursos. Por hora ficamos por aqui.
Referências:
ARDUINO EASY. Sensor de Umidade e Temperatura DHT22. Disponível em <https://arduinoeasy.wordpress.com/aplicacoes/sensor-de-umidade-e-temperatura-dht22/> Acesso em 30 out 2024.
BLOG DA ROBÓTICA. Medindo temperatura e umidade usando o sensor DHT11. Disponível em <https://www.blogdarobotica.com/2020/10/29/medindo-temperatura-e-umidade-usando-o-sensor-dht11/> Acesso em 30 out 2024.
BLOG ELETROGATE. Sensores DHT11 e DHT22: Guia Básico dos Sensores de Umidade e Temperatura. Disponível em <https://blog.eletrogate.com/sensores-dht11-dht22/> Acesso em 30 out 2024.
CURTO CIRCUÍTO. Diferenças entre os Sensores: AHT10, DHT11 e DHT22. Disponível em <https://curtocircuito.com.br/blog/Categoria%20Arduino/diferencas-entre-os-sensores-aht10-dht11-e-dht22> Acesso em 30 out 2024.
MAKER HERO. Sensor de Umidade e Temperatura DHT11. Disponível em <https://www.makerhero.com/produto/sensor-de-umidade-e-temperatura-dht11/> Acesso em 30 out 2024.
TERMÍSTOR. In: WIKIPÉDIA, a enciclopédia livre. Flórida: Wikimedia Foundation, 2023. Disponível em: <https://pt.wikipedia.org/w/index.php?title=Term%C3%ADstor&oldid=66970282>. Acesso em: 24 out. 2024.