DHT-22 é um sensor de temperatura e umidade muito utilizado em projetos escolares, acadêmicos e, também, na automação residencial com microcontroladores Arduino, Raspberry Pi e outros.
O DHT22, também conhecido como AM2302, permite medir temperaturas na faixa de – 40 a 80 ºC e umidade relativa na faixa de 0 a 100%.
Esse dispositivo utiliza um sensor capacitivo de umidade e um termistor para medir o ar circundante, ambos conectados a um controlador de 8 bits que produz um sinal digital serial no pino de dados (Data).
Especificações do DHT22
-
- Tensão de operação: 3-5VDC (5,5VDC máximo)
- Faixa de medição de umidade: 0 a 100% UR
- Faixa de medição de temperatura: -40º a +80ºC
- Corrente: 2,5mA max durante uso, em stand by de 100uA a 150 uA
- Precisão de umidade de medição: ± 2,0% UR
- Precisão de medição de temperatura: ± 0,5 ºC
- Resolução: 0,1
- Tempo de resposta: 2s
- Dimensões: 22x28x5mm
Calibração
Cada elemento do Sensor DHT22 é devidamente calibrado em laboratório proporcionando um ótimo desempenho na leitura. O coeficiente de calibração é armazenado em forma de programa na memória OTP (One Time Programed), que é utilizado pelo processo interno de leitura do sensor.
Aplicação
Primeiramente, devemos incluir duas bibliotecas da Adafruit: a Adafruit_Sensor.h e a DHT.h . Em seguida, faremos a conexão do sensor com o Arduino conforme o esquema:
Feito isso, na IDE do Arduino, em Arquivo >> Exemplos >> DHT sensor library >> DHT_Unified_Sensor, abriremos este exemplo para testar o funcionamento do sensor DHT22.
Então, agora, é só carregar o código, abrir o Monitor Serial e observar as informações de Temperatura e Umidade Relativa.
# include <Adafruit_Sensor.h> # include <DHT.h> # include <DHT_U.h> # define DHTPIN 2 // Digital pin connected to the DHT sensor // Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 -- // Pin 15 can work but DHT must be disconnected during program upload. // Uncomment the type of sensor in use: //# define DHTTYPE DHT11 // DHT 11 # define DHTTYPE DHT22 // DHT 22 (AM2302) //# define DHTTYPE DHT21 // DHT 21 (AM2301) // See guide for details on sensor wiring and usage: // https://learn.adafruit.com/dht/overview DHT_Unified dht(DHTPIN, DHTTYPE); uint32_t delayMS; void setup() { Serial.begin(9600); // Initialize device. dht.begin(); Serial.println(F("DHTxx Unified Sensor Example")); // Print temperature sensor details. sensor_t sensor; dht.temperature().getSensor(&sensor); Serial.println(F("------------------------------------")); Serial.println(F("Temperature Sensor")); Serial.print (F("Sensor Type: ")); Serial.println(sensor.name); Serial.print (F("Driver Ver: ")); Serial.println(sensor.version); Serial.print (F("Unique ID: ")); Serial.println(sensor.sensor_id); Serial.print (F("Max Value: ")); Serial.print(sensor.max_value); Serial.println(F("°C")); Serial.print (F("Min Value: ")); Serial.print(sensor.min_value); Serial.println(F("°C")); Serial.print (F("Resolution: ")); Serial.print(sensor.resolution); Serial.println(F("°C")); Serial.println(F("------------------------------------")); // Print humidity sensor details. dht.humidity().getSensor(&sensor); Serial.println(F("Humidity Sensor")); Serial.print (F("Sensor Type: ")); Serial.println(sensor.name); Serial.print (F("Driver Ver: ")); Serial.println(sensor.version); Serial.print (F("Unique ID: ")); Serial.println(sensor.sensor_id); Serial.print (F("Max Value: ")); Serial.print(sensor.max_value); Serial.println(F("%")); Serial.print (F("Min Value: ")); Serial.print(sensor.min_value); Serial.println(F("%")); Serial.print (F("Resolution: ")); Serial.print(sensor.resolution); Serial.println(F("%")); Serial.println(F("------------------------------------")); // Set delay between sensor readings based on sensor details. delayMS = sensor.min_delay / 1000; } void loop() { // Delay between measurements. delay(delayMS); // Get temperature event and print its value. sensors_event_t event; dht.temperature().getEvent(&event); if (isnan(event.temperature)) { Serial.println(F("Error reading temperature!")); } else { Serial.print(F("Temperatura: ")); Serial.print(event.temperature); Serial.println(F("°C")); } // Get humidity event and print its value. dht.humidity().getEvent(&event); if (isnan(event.relative_humidity)) { Serial.println(F("Error reading humidity!")); } else { Serial.print(F("Umidade: ")); Serial.print(event.relative_humidity); Serial.println(F("%")); } }
Com essa biblioteca, fica muito fácil operar o Sensor de Temperatura e Umidade DHT22, podendo ser aplicado em uma grande gama de projetos em automação ou simplesmente em um dispositivo de leitura de temperatura e umidade relativa.
Vantagem do DHT22 sobre o DHT11
Apesar de o Sensor de Temperatura e Umidade DHT22 ter um custo mais elevado, ele possui uma precisão muito superior em relação ao DHT11 além de uma escala de leitura também muito maior.
Se você deseja um projeto com alta performace, certamente o DHT22 é a melhor opção sobre o DHT11.