Finalmente è arrivato il sensore che avevo ordinato e non ho aspettato neanche un minuto prima di metterlo alla prova.
Indice |
Il Test
Come primo test, ho deciso di collegare il sensore ad Arduino e di fargli stampare su di un LCD i dati letti.
Nota: L'LCD che andrò ad utilizzare è un 16x1, ma a livello logico deve essere utilizzato come un 8x2
Il Circuito
Il sensore è stato saldato superficialmente su di una millefori, mi riprometto di fare qualcosa di più "carino" !
Vi posto alcune foto del sensore e di arduino:
Qui invece lo schema di collegamento del tutto:
Nota: da non dimenticare di inserire la resistenza di pull-up da 1k tra i Pin Vcc(1) e Data(2) del sensore.
Lo sketch
Ecco qua lo sketch di Test di arduino.
// //Primo Test del sensore DHT22 con dispaly LCD 16x1 (che viene gestito come un 8x2) // #include <dht.h>//includo la libreira per il sensore #include <LiquidCrystal.h>//includo la libreria per l'LCD dht DHT; //dichiaro una variabile globale per la classe del sensore #define DHT22_PIN 8 //imposto il pin a cui è connesso il sensore LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //dichiaro la variabile lcd definendo i pin utilizzati void setup() { lcd.begin(8, 2); //inizializzo l'LCD } void loop() { int chk = DHT.read22(DHT22_PIN);//leggo dal sensore e ritorna un valore corrispondente all'andamento della lettura switch (chk)//controllo { case 0: //valore di ritorno : 0 -> Lettura andata a buon fine lcd.setCursor(0,0);//stampo sull'lcd i dati letti lcd.print("T:"); lcd.print(DHT.temperature,1);//scrivo il dato della temperatura, specificando che voglio un solo decimale lcd.print("C"); lcd.setCursor(0,1); lcd.print("U:"); lcd.print(DHT.humidity,1);//scrivo il dato dell'umiditò, specificando che voglio un solo decimale lcd.print("%"); break; case -1: //valore di ritorno : -1 -> Sono stati letti dei dati, ma risultano corrotti lcd.print("Checksum error"); break; case -2: //valore di ritorno : -2 -> Nessuna lettura effettuata, ho atteso troppo tempo lcd.print("Time out error"); break; default: //qualsiasi altro valore di ritorno definisce un errore diverso lcd.print("Unknown error"); break; } delay(2000);//attendo 2sec tra una lettura e l'altra. Dato che il DHT22 effettua una campionatura ogni 2sec //sarebbe inutile effettuare letture più rapide. }
Per lo sketch sono state usate due librerie, presenti nel Playground del sito di Arduino:
- DHTlib (per il sensore)
- LiquidCrystal (Per l'LCD)
Conclusioni
Per adesso ho intenzione di far lavorare questo circuito per alcuni giorni, confrontando la temperatura con quella di un'altra sonda, per controllare che le misure siano veritiere. Successivamente, mi dedicherò all'implementazione della comunicazione Ethernet.
Alla prossima Puntata!
Link agli articoli del progetto
Web Stazione Meteo con Arduino [1] - L'idea
Web Stazione Meteo con Arduino [2] - La Rilevazione dei Dati
Web Stazione Meteo con Arduino [4] - Il circuito definitivo e la comunicazione http
Web Stazione Meteo con Arduino [5] - Appendice 1 : Le Reti spiegate a mia Nonna