WeMos D1 mini DHT22 ti mostra come usare il sensore di temperatura DHT22 con l’ESP8266.
Il web è ricco di informazioni sul sensore di temperatura ed umidità DHT22 e, forse, solo io non lo avevo ancora trattato tra i molti sensori in mio possesso.
Puoi associare il DHT22 a tanti microcontrollori e l’uso con la WeMos si ricollega alla serie di articoli che sto dedicando a questa board:
Ringrazio l’amico catoplepa che hoa pubblicato un ottimo tutorial sull’utilizzo del DHT22 con l’ESP8266: http://www.instructables.com/id/ESP8266-12-blynk-wireless-temperature-e-humidity-D-1/
Realizzazione della WeMos Shield DHT22
Ho realizzato la shield dht22 per la WeMos partendo dallo schema di base ed una proto shield per wemos d1:
in modo da ottenere un circuito di monitoraggio temperatura e umidità basato su questo sensore AM2302 o meglio noto come DHT22.
Libreria per il DHT22 by Adafruit
Le librerie per il DHT22 che puoi utilizzare con l’IDE arduino, ed i micro controllori supportati, sono ufficialmente tre, ad oggi:
ed ho scelto di utilizzare la prima perché ha due specifiche interessanti:
- la prima motivazione è che è stata scritta e resa pubblica da Adafruit ( Lady Ada );
- la seconda è che è compatibile non solo con il DHT22 ma anche con il DHT11 e DHT21;
clicca sul pulsante di installazione della prima libreria ed otterrai l’installazione come da procedura guidata dell’IDE Arduino:
Come primo test esegui uno degli esempi presenti nella libreria: DHTtester
WeMos D1 mini DHT22 sketch
L’esempio DHTtester rilasciato con la libreria ti permette di leggere i dati di temperatura e umidità dal sensore e di visualizzarli sul monitor seriale del WeMos D1 mini DHT22.
Ecco lo sketch:
// Example testing sketch for various DHT humidity/temperature sensors // Written by ladyada, public domain #include "DHT.h" #define DHTPIN 2 // what digital pin we're connected to // Uncomment whatever type you're using! //#define DHTTYPE DHT11 // DHT 11 #define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 //#define DHTTYPE DHT21 // DHT 21 (AM2301) // Connect pin 1 (on the left) of the sensor to +5V // NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1 // to 3.3V instead of 5V! // Connect pin 2 of the sensor to whatever your DHTPIN is // Connect pin 4 (on the right) of the sensor to GROUND // Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor // Initialize DHT sensor. // Note that older versions of this library took an optional // third parameter to tweak the timings for faster processors. // This parameter is no longer needed as the current DHT reading // algorithm adjusts itself to work on faster procs. DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); Serial.println("DHTxx test!"); dht.begin(); } void loop() { // Wait a few seconds between measurements. delay(2000); // Reading temperature or humidity takes about 250 milliseconds! // Sensor readings may also be up to 2 seconds 'old' // (its a very slow sensor) float h = dht.readHumidity(); // Read temperature as Celsius (the default) float t = dht.readTemperature(); // Read temperature as Fahrenheit (isFahrenheit = true) float f = dht.readTemperature(true); // Check if any reads failed and exit early (to try again). if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("Failed to read from DHT sensor!"); return; } // Compute heat index in Fahrenheit (the default) float hif = dht.computeHeatIndex(f, h); // Compute heat index in Celsius (isFahreheit = false) float hic = dht.computeHeatIndex(t, h, false); Serial.print("Humidity: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(t); Serial.print(" *C "); Serial.print(f); Serial.print(" *F\t"); Serial.print("Heat index: "); Serial.print(hic); Serial.print(" *C "); Serial.print(hif); Serial.println(" *F"); }
la linea 04: include la libreria DHT.h di Adafruit;
le linea 06: definisci il pin a cui è collegato il DHT22, nello schema sopra hai letto D4 e secondo questa immagine che io stesso ho pubblicato qualche mese fa:
il pin D4 corrisponde al pin 2 nell’IDE arduino;
linea 10: togli il commento al tipo di sensore che desideri interrogare;
linea 25: instanzia l’oggetto dht passandole sia il pin a cui il sensore è connesso sia il tipo di sensore;
linea 31: inizializza l’oggetto dht usando il metodo begin() della libreria;
linea 36: prima di avviare ogni ciclo imponi un delay() di 2sec;
linea 41: leggi il valore di umidità relativa usando il metodo readHumidity() della libreria;
linea 43: leggi il valore di temperatura usando il metodo readTemperature() della libreria;
linea 45: leggi il valore di temperatura in Fahrenheit usando il parametro true passato al metodo readTemperature(true);
linee 48-51: se uno dei tre valori rilevati alle linee 41-45 scrivi sul monitor seriale la frase: “Failed to read from DHT sensor!” ed esce dalla funzione loop() con un return;
linea 54: interroga la libreria DHT.h passandole il valore di umidità e temperatura attraverso il metodo computeHeatIndex(f, h) per ottenere il valore di temperatura percepita in funzione dei due valori passati;
linea 56: interroga il metodo computeHeatIndex(f, h, false) passando un ulteriore terzo parametro false che indica alla funzione di restituire il valore in Fahrenheit;
linee 58-70: scrivi sul monitor seriale i valori letti sul sensore, otterrai un risultato simile al seguente:
in cui sono visualizzati i dati rilevati dal WeMos D1 mini DHT22.
Prima di inserire un commento, per favore, leggi il regolamento
2 pings