Leggere temperatura ed umidità e calcolare il punto di rugiada tramite Arduino e DHT11

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

TeoriaCome 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



Controllo di Temperatura e Umidità mediante DHT11

Obiettivo: Realizzare un controllo di temperatura e umidità mediante il sensore DHT11.

Componenti elettronici:

  • Arduino UNO
  • DHT11

TeoriaIl 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.

Guardando il dispositivo dal lato della parte sensibile, si ha che il pin di sinistra è quello dell’alimentazione (5V), quello centrale è il GND e il destro è il PIN del segnale digitale, da collegare ad un’uscita digitale di Arduino.

Collegamento Circuitale:

Viene in seguito riportato lo schema elettrico utilizzato per valutare la temperatura mediante il dispositivo elettronico DHT11

Codice:

Per il funzionamento del dispositivo è necessario caricare la libreria DHT.h nell’ide. Successivamente va definito il tipo di dispositivo che si sta utilizzando (nel nostro caso DHT11). Tale informazione va inserita nella dichiarazione dell’oggetto DHT ( DHT dht(DHTPIN, DHTTYPE); ).

La proprietà readTemperature restituisce la temperatura in gradi Celsius come default, a meno che non si inserisce un valore booleano true come argomento. In questo caso la temperatura verrà espressa in gradi Farhenait.

La proprietà readHumidity restituisce l’umidità relativa (RH).



Personalizzazioni:

E’ possibile modificare il circuito aggiungendo un display per visualizzare i valori di temperatura e umidità.