CARATTERISTICHE:
Il modulo sensore DHT22 è un dispositivo progettato per la misurazione dell'umidità e della temperatura dell'aria. Offre prestazioni precise e affidabili in un ampio range di temperature e umidità, rendendolo adatto per un'ampia gamma di progetti e applicazioni, sia domestiche che professionali. È caratterizzato da dimensioni compatte e da un basso consumo energetico, utilizzando solo 2,5mA di corrente. Inoltre, è dotato di un condensatore per ridurre gli effetti dei disturbi elettrici sulla linea di alimentazione, permettendo una trasmissione affidabile fino a 20 metri di distanza se alimentato a 6V. Il modulo è in grado di fornire dati sull'umidità con un intervallo compreso tra 0-100% RH e una sensibilità di 0,1% RH, con un'accuratezza del +/- 2% RH. Inoltre, può fornire dati sulla temperatura con un intervallo compreso tra -40 / +80°C e una sensibilità di 0,1°C, con un'accuratezza del +/- 0,5°C.
COME LAVORA:
Il sensore DHT22 utilizza un film metallico capacitivo per rilevare l'umidità relativa e un termistore NTC per misurare la temperatura dell'aria.
Il sensore di umidità è costituito da due elettrodi con un substrato, che può essere un polimero di plastica conduttivo o un sale, situato tra di essi, che assorbe l'umidità. Quando l'aria contiene vapore acqueo, esso viene assorbito dal substrato, rilasciando ioni che aumentano la conduttività tra gli elettrodi. La variazione di resistenza tra i due elettrodi è proporzionale all'umidità relativa presente nell'aria. In pratica, un aumento dell'umidità relativa causa una diminuzione della resistenza tra gli elettrodi, mentre una diminuzione dell'umidità relativa comporta un aumento della resistenza.
La temperatura viene misurata utilizzando un termistore NTC (coefficiente di temperatura negativo) generalmente realizzato con materiali semiconduttori, il quale modifica la sua resistenza in base alla temperatura. Questo significa che la resistenza diminuisce all'aumentare della temperatura e viceversa. I termistori sono progettati in modo che la variazione di resistenza sia significativa, spesso con variazioni di circa 100 ohm per grado di temperatura rendendo piu' sensibile la misurazione.
Il sensore è protetto da una custodia in plastica resistente agli agenti atmosferici e può essere utilizzato all'aperto, ma non a diretto contatto con getti d'acqua o in immersione. Il modulo dispone di un'interfaccia di comunicazione digitale su bus bidirezionale singolo, che consente di trasmettere i dati di misurazione a un microcontrollore, ad esempio, ESP32 e Arduino o a un altro dispositivo di elaborazione dati tramite una linea di trasmissione seriale.
Il modulo sensore DHT22 è in grado di trasmettere i dati di misurazione dell'umidità e della temperatura utilizzando una resistenza di pull-up che mantiene il bus DATA in uno stato alto quando non c'è trasmissione in corso. Quando il processore avvia la trasmissione, imposta lo stato del bus DATA a livello basso per 800μs per inizializzare il sensore e preparare i dati. Successivamente, il sensore imposta lo stato del bus a 0 per 80μs per avviare la trasmissione vera e propria. I dati di umidità e temperatura sono composti da 16 bit ciascuno, per un totale di 32 bit. La trasmissione avviene in gruppi da 8 bit, quindi ci saranno 4 gruppi da 8 bit. Un ultimo gruppo da 8 bit viene aggiunto per verificare che la trasmissione sia stata eseguita correttamente, calcolando la somma dei 4 blocchi. In totale verranno trasmessi 5 blocchi da 8 bit, per un messaggio di 40 bit.
COME UTILIZZARLO:
Il modulo sensore DHT22 è un dispositivo di facile utilizzo che necessita solo di pochi componenti esterni per funzionare correttamente. Per utilizzarlo, basta alimentarlo attraverso i pin VCC(+) e GND(-) con un intervallo di tensione compreso tra 3,3 e 6V e collegare il pin DATA o OUTPUT a un microcontrollore che lavora a 5V o a 3,3V. Una volta configurato, il modulo DHT22 può essere utilizzato per monitorare l'umidità e la temperatura dell'aria in diverse situazioni, come ad esempio in una stanza, in un edificio o in un ambiente esterno.
Grazie alle sue caratteristiche può essere utilizzato, ad esempio, per regolare il funzionamento di un sistema di climatizzazione o per raccogliere dati meteorologici.
ESEMPIO DI UTILIZZO CON PLATFORMIO E ARDUINO IDE:
Per maggiori informazioni su PlatformIO.
Dispositivi utilizzati per l’esempio:
- Microcontrollore ESP32 DevKitC 38 PIN
- Modulo Sensore DHT22
- ESP32 DevKitC 38 PIN Screw Terminal Board o Breadboard
Collegamenti:
- Pin + DHT22 ➞ Pin 5V esp32
- Pin - DHT22 ➞ Pin GND esp32
- Pin Out DHT22 ➞ GPIO 33 esp32
Codice:
Platformio.ini:
[env:esp32dev] platform = espressif32 board = esp32dev framework = arduino monitor_speed = 115200 upload_speed = 921600 monitor_filters = esp32_exception_decoder lib_deps = adafruit/DHT sensor library@^1.4.4
Per l’esempio abbiamo aggiunto ed utilizzato la libreria: https://github.com/adafruit/DHT-sensor-library.
Main.cpp:
#include <Arduino.h> // Includi le librerie per il sensore DHT22 #include <Adafruit_Sensor.h> #include <DHT.h> // Definisci il pin a cui è collegato il DHT22 sull'ESP32 #define DHT_SENSOR_PIN 33 #define DHT_SENSOR_TYPE DHT22 DHT dht_sensor(DHT_SENSOR_PIN, DHT_SENSOR_TYPE); void setup() { // Inizializza il sensore all'avvio del programma Serial.begin(115200); dht_sensor.begin(); } void loop() { float humidity = dht_sensor.readHumidity(); float temperature = dht_sensor.readTemperature(); if (isnan(temperature) || isnan(humidity)) { // Scrivi un messaggio di errore quando la lettura dei dati fallisce Serial.println("Dati non ricevuti, sensore scollegato!!!"); } else { Serial.print("Umidità: "); // Scrivi sulla seriale il valore di umidità rilevato in percentuale Serial.print(humidity); Serial.println("%"); Serial.println(""); // Scrivi sulla seriale il valore di temperatura rilevato in gradi celsius Serial.print("Temperatura: "); Serial.print(temperature); Serial.println("°C");
} // Inseriamo una pausa nel programma. Il sensore è in grado di effettuare // misurazioni ogni due secondi delay(2000); }
ESEMPIO DI UTILIZZO CON HOMEASSISTANT TRAMITE ESPHOME:
esphome: name: dht22 platform: ESP32 board: esp-wrover-kit wifi: ssid: !secret wifi_ssid password: !secret wifi_password # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "dht22 Fallback Hotspot" password: !secret hotspot_password
captive_portal: # Enable logging logger: # Enable Home Assistant API api: password: !secret api_password ota: password: !secret ota_password sensor: - platform: dht pin: 33 temperature: name: temperatura_dht22 humidity: name: umidita_dht22 update_interval: 30s model: DHT22
SPECIFICHE TECNICHE:
- Alimentazione: 5 VDC
- Consumo: 2,5mA max.
- Consumo nel corso della misurazione: 1,15mA
- Consumo in standby: 50uA
- Range Umidità: da 0 a 100% RH con precisione del 2% RH
- Range di Temperatura: da -40°C a +80°C con precisione di 0,5°C
- Velocità di campionamento: 0,5 Hz max (singola volta ogni 2 secondi)
- Output: seriale a filo unico (incompatibile con Dallas One Wire)
- Pin: 3 da 2,54 mm
- VCC
- GND
- DATA o OUTPUT - Dimensioni (mm): 39x22x10
- Peso: 3 grammi