Obiettivo: Realizzare un sistema in grado di visualizzare, su LCD I2C, la temperatura, l’umidità e il punto di rugiada mediante il sensore DHT11.
Componenti elettronici:
- Arduino UNO
- DHT11
- Display LCD I2C
Teoria: Come già detto nell’articolo di ArduinoFacile, il DHT11 è un sensore digitale per la misura della temperatura ed umidità molto stabile e semplice da usare e configurare.
E’ un sensore di basso costo che ha un range di misurazione dell’umidità che va da 20%RH al 90%RH (con una precisione di 5%RH) e di temperatura da 0 a 50°C (con una precisione di 2°C)
Il sensore si presenta con tre pin (esistono anche versioni a 4 pin e con configurazione in scatola chiusa, con LED, con piedinatura differente ecc ecc).
Per quanto riguarda la piedinatura fare attenzione alla posizione delle alimentazioni!!!

Collegamento Circuitale:
Viene in seguito riportato lo schema elettrico utilizzato per valutare la temperatura mediante il dispositivo elettronico DHT11 e display LCD I2C.
Fare attenzione al collegamento delle alimentazioni (+ e -) e alle linee SCL e SDA del bus I2C.
Inoltre collegare il pin del segnale del modulo DHT11 al pin 3 di Arduino seguendo la configurazione impostata nel codice sorgente.

Codice:
Per il funzionamento del dispositivo è necessario caricare la libreria DHT.h (ver. 2.1.0 di Dhruba Saha) e LiquidCrystal_I2C.h (ver. 2.0.0 di Martin Kubovčík) nell’ide. Successivamente va definito il tipo di sensore che si sta utilizzando per acquisire temperatura e umidità (nel nostro caso DHT11). Tale informazione va inserita nella dichiarazione dell’oggetto DHT ( DHT dht(DHTPIN); ).
Si definisce poi l’oggetto “lcd” tramite la classe “LiquidCrystal_I2C lcd(0x27,16,2);” per un display da 16 caratteri 2 righe (è possibile inoltre utilizzare LiquidCrystal_I2C lcd(0x27,20,4); per un display da 20 caratteri 4 righe).
Questo software inoltre utilizza la funzione dewPoint per calcolare il punto di rugiada.
Conoscendo infatti la temperatura dell’aria (T) e umidità relativa (UR) è possibile stimare il punto di rugiada (temperatura di condensazione) usando relazioni psicrometriche.
La formula più utilizzata in ambito meteorologico e HVAC è la formula di Magnus–Tetens, che fornisce un’ottima approssimazione tra −45 °C e +60 °C.
Ricapitolando l’istruzione “int result = dht11.readTemperatureHumidity(temperatura, umidita);” permette di memorizzare la temperatura e l’umidità nelle rispettive variabili “temperatura” e “umidita”, la funzione “float puntoRugiada = dewPoint(temperatura, umidita);” invece calcola il punto di rugiada.
La seconda parte del codice non fa altro che “popolare” le variabili acquisite dal sensore e calcolate dalla dewPoint apposita e stamparle sia su seriale, sia su display LCD.
Personalizzazioni:
E’ possibile modificare il circuito utilizzando altri tipi di sensori tipo DHT22 (AM2302), BME280, SHT31.
Tabella comparativa sintetica
| Sensore | T (°C) | Precisione T | RH (%) | Precisione RH | Pressione | Protocollo | Note |
|---|---|---|---|---|---|---|---|
| DHT11 | 0 → 50 | ±2 °C | 20 → 80 | ±5 % | ❌ | Single-wire | Economico, poco preciso |
| DHT22 | -40 → 80 | ±0.5 °C | 0 → 100 | ±2–3 % | ❌ | Single-wire | Versione migliorata |
| AM2301 | -40 → 80 | ±0.5 °C | 0 → 100 | ±2–3 % | ❌ | Single-wire | DHT22 in case ventilato |
| BME280 | -40 → 85 | ±1 °C | 0 → 100 | ±3 % | ✔ | I2C / SPI | Multisensore Bosch |
| SHT31 | -40 → 125 | ±0.3 °C | 0 → 100 | ±2 % | ❌ | I2C | Alta precisione |
