Il sensore DHT22, chiamato anche AM2303, permette di rilevare l’umidità relativa e la temperatura di un ambiente e di trasmetterla digitalmente attraverso un solo filo (oltre ai 2 necessari all’alimentazione) ad un microcontrollore
Descrizione:
Il sensore di umidità è di tipo capacitivo, utilizza al massimo 2.5mA in fase di e permette di acquisire al massimo un campione ogni 2 secondi.
La misurazione dell’umidità varia da 0 a 100% con un’accuratezza tipica pari al ±2%.
Per quanto riguarda la temperatura invece il DHT22 ha un range di misurazione tra -40 e +80°C con un accuratezza di ±0.5°C grazie al sensore DS18B20 integrato al suo interno.
Alimentazione e Pinout:
L’alimentazione può variare da 3.3 a 6Vquindi può essere usato sia con microcontrollori che lavorano a 5v sia con quelli a 3.3v.
Il sensore ha 4 piedini, ma solo 3 sono usati
VCC e GND servono rispettivamente per portare l’alimentazione al sensore, mentre il pin DATA serve per la comunicazione bidirezionale tra sensore e processore.
Una nota molto interessante è che il filo DATA che collega il sensore alla MCU (microcontrollore) può essere lungo fino a 20 metri. (si riduce a 1m se alimentato a 3.3V)
Il DHT22 non necessita di ulteriore componentistica esterna però, specialmente se si utilizzano fili lunghi, potrebbe essere consigliato l’utilizzo di un condensatore da 100nF tra i pin VCC e GND in prossimità del sensore per filtrare eventuali disturbi all’alimentazione.
In alcuni schemi è presente una resistenza detta “di Pull-up” connessa tra la VCC e il pin DATA. Questo per tenere alto lo stato del canale quando non è in corso una trasmissione dati. Il valore della resistenza tipicamente è di 4.7-5.1KΩ a seconda dell’applicazione.
Peso e Dimensioni
Il peso è di 2.4g e le dimensioni dichiarate dal costrutture sono di 15 x 25 x 7 mm
Applicazioni:
l’AM2302 è molto versatile, infatti può essere impiegato ad esempio in sistemi di deumidificazione, automotive, domotica, monitoraggio ambientale e molti altri ambiti in cui è necessario un controllo elettronico di temperatura e umidità.
Comunicazione
La comunicazione, come precedentemente accennato avviene attraverso un solo filo ed è bidirezionale.
I dati di umidità e temperatura sono formati da 16bit ciascuno, quindi 32 bit di informazione.
Es:
Umidità = 65.8%RH che in binario diventa 0000001010010010
Temperatura= 26.9%RH che in binario diventa 0000000100001101
La trasmissione avviene a gruppi di 8 bit, quindi ci saranno 4 gruppi di 8 bit
Es:
Umidità = 00000010 10010010
Temperatura = 00000001 00001101
Vengono aggiunti ulteriori 8 bit per verificare che la trasmissione sia avvenuta correttamente. Questo numero viene calcolato sommando i 4 blocchi:
Es:
Verifica = 00000010 + 10010010 + 00000001 + 00001101 = 10100010
Quindi in totale avremo 5 blocchi da 8 bit, ovvero dovremo trasmettere un messaggio lungo 40 bit.
Per prima cosa è il processore che inizia una comunicazione con il sensore DHT22.
- Sincronizzazione:
Processore porta a 0 lo stato del bus DATA per 800μs che significa “sensore, preparami i dati”
Il sensore di risposta porta lo stato del bus a 0 per 80μs per dire “inizio trasmissione”
Poi il sensore inizia a trasmettere i dati di temperatura e umidità:
- Blocco 1:
primi 8 bit riguardanti l’umidità, Es. 00000010 - Blocco 2:
gli ultimi 8 bit riguardanti l’umidità Es. 10010010 - Blocco 3:
primi 8 bit riguardanti la temperatura Es. 00000001 - Blocco 4:
ultimi 8 bit riguardanti la temperatura Es. 00001101 - Blocco 5:
8bit di checksum/verifica Es. 10100010
Dal lato del microcontrollore si dovrà sviluppare una appropriata libreria o si potrà utilizzare delle librerie già pronte disponibili sul web.
Un esempio di utilizzo del DHT22 con il NodeMcu è disponibile qui: http://ciaobit.com/mcu/esp8266/nodemcu-esp8266-e-dht22-am2302-sensore-di-temperatura-e-umidita-wifi-con-server-web/
Sono alle prime armi.
Molto istruttivo!
Sto lavorando alla costruzione di una incubatrice per uova di galline, oche e quaglie