Os sensores DHT11 e DHT22 são usados para medir a temperatura e a umidade relativa. Esses sensores contêm um chip que faz a conversão analógica para digital e emite um sinal digital com a temperatura e a umidade. Isso os torna muito fáceis de usar com qualquer microcontrolador.
Apresentando os sensores DHT11 e DHT22
Os sensores DHT11 e DHT22 são usados para medir a temperatura e a umidade relativa. Eles são muito populares entre fabricantes e amadores de eletrônica.
Esses sensores contêm um chip que faz a conversão analógica para digital e emite um sinal digital com a temperatura e a umidade. Isso os torna muito fáceis de usar com qualquer microcontrolador.
DHT11 vs. DHT22
O DHT11 e o DHT22 são muito semelhantes, mas diferem em suas especificações. A tabela a seguir compara algumas das especificações mais importantes dos sensores de temperatura e umidade DHT11 e DHT22. Para obter uma análise mais detalhada desses sensores, consulte a folha de dados dos sensores. (Guia abaixa do Folha de dados Original)
O sensor DHT22 tem uma resolução melhor e uma faixa de medição de temperatura e umidade mais ampla. Entretanto, é um pouco mais caro e você só pode solicitar leituras com intervalo de 2 segundos.
O DHT11 tem uma faixa menor e é menos preciso. No entanto, você pode solicitar leituras do sensor a cada segundo. Ele também é um pouco mais barato.
Apesar das diferenças, eles funcionam de forma semelhante, e você pode usar o mesmo código para ler a temperatura e a umidade. Você só precisa selecionar no código o tipo de sensor que está usando.
Pinagem do DHT
Os sensores DHT têm quatro pinos, conforme mostrado na figura a seguir. No entanto, se você adquirir seu sensor DHT em uma placa breakout, ele virá com apenas três pinos e com um resistor pull-up interno no pino 2.
A tabela a seguir mostra a pinagem do DHT22 e do DHT11. Quando o sensor está voltado para você, a numeração dos pinos começa em 1, da esquerda para a direita
Sensor de temperatura e umidade DHT11 com Arduino
Nesta parte, criaremos um projeto simples com o Arduino que lê a temperatura e a umidade e exibe o resultado
Peças necessárias
Para concluir este tutorial, você precisa dos seguintes componentes:
- Arduino UNO (Original ou Generico)
- Sensor de temperatura e umidade DHT11
- ProtoBoard
- Resistor de 4,7k Ohm
- Fios de jumper
Esquema
Siga o diagrama esquemático a seguir para conectar o sensor de temperatura e umidade DHT11 (ou DHT22) ao Arduino.
Aqui estão as conexões (da esquerda para a direita):
Instalação de bibliotecas
Para ler a partir do sensor DHT, usaremos a biblioteca DHT da Adafruit. Para usar essa biblioteca, você também precisa instalar a biblioteca Adafruit Unified Sensor. Siga as próximas etapas para instalar essas bibliotecas.
Abra o Arduino IDE e vá para o Icon Library Manager. O Gerenciador de bibliotecas deve ser aberto, e efetue a busca por DHT e Unified.
Procure por “DHT” na caixa de pesquisa e instale a biblioteca DHT da Adafruit.
Ao clicar em instalar se já está usando a versão nova do Arduino IDE 2.3.*, ele irá instalar as dependencias automaticamente, ai não passe para a parte seguinte
Depois de instalar a biblioteca DHT da Adafruit, digite “Adafruit Unified Sensor” na caixa de pesquisa. Role a tela até o fim para encontrar a biblioteca e instalá-la.
No meu caso ao ter instalado meu Arduino IDE era o mais novo, ele instalou tudo junto
Código
Depois de instalar as bibliotecas necessárias, você pode carregar um código de exemplo da biblioteca.
Em seu Arduino IDE, vá para File > Examples > DHT Sensor library > DHTtester
O código a seguir deve ser carregado. Ele lê a temperatura e a umidade e exibe os resultados no Monitor serial.
#include "DHT.h" #define DHTPIN 2 // what pin we're connected to #define DHTTYPE DHT11 // DHT 11 // Initialize DHT sensor for normal 16mhz Arduino DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); Serial.println("DHTxx test!"); dht.begin(); } void loop() { // Wait a few seconds between measurements. delay(2000); float h = dht.readHumidity(); // Read temperature as Celsius float t = dht.readTemperature(); // Read temperature as Fahrenheit float f = dht.readTemperature(true); // Check if any reads failed and exit early (to try again). if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("Failed to read from DHT sensor!"); return; } float hi = dht.computeHeatIndex(f, h); Serial.print("Humidity: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(t); Serial.print(" *C "); Serial.print(f); Serial.print(" *F\t"); Serial.print("Heat index: "); Serial.print(hi); Serial.println(" *F"); }
Como o código funciona
Você começa incluindo a biblioteca DHT:
#include "DHT.h"
Você está gostando do projeto, ele completo é encontrado no Ebook com este e outros, abaixo.
Guia de Arduino com sensores e módulos