- Componenti richiesti
- Schema elettrico
- Sensore di temperatura e umidità DHT11
- Programmazione NodeMCU ESP8266 Monitoraggio della temperatura e dell'umidità in tempo reale
I microcontrollori hanno una piccola memoria interna che non è sufficiente per salvare i dati generati dai sensori per lungo tempo, o devi utilizzare un dispositivo di memoria esterno o puoi salvare i dati su qualche cloud usando Internet. Inoltre, a volte diventa difficile da gestire quando il sensore viene installato in un sito in condizioni estreme dove l'uomo non può raggiungerlo o è difficile visitarlo frequentemente. Per correggere questo tipo di problemi, esaminiamo sempre i modi in cui vogliamo monitorare i dati del sensore in tempo reale da qualsiasi luogo senza alcuna presenza fisica in quel luogo.
I database in tempo reale possono essere utilizzati in questo scenario in cui dobbiamo solo interfacciare qualche controller che può essere connesso a Internet e può essere in grado di scambiare dati con il server cloud. I dati del server possono essere utili per monitorare il comportamento del sistema in tempo reale, analisi del database, analisi ed elaborazione statistica e interpretazione per casi d'uso futuri. Sono disponibili molte piattaforme hardware IoT e piattaforme cloud per servire a questo scopo. Se hai difficoltà a trovare la piattaforma giusta per la tua applicazione IoT, segui il link.
In precedenza abbiamo già trattato ThingSpeak, Adafruit IO e molti altri software IoT. Oggi costruiremo un progetto simile in cui utilizzeremo un sensore di temperatura e umidità DHT11 e un modulo ESP8266 NodeMCU per registrare la temperatura e l'umidità in tempo reale sul server del database Firebase di Google.
Divideremo il progetto in due sezioni. In primo luogo, inizieremo con l'assemblaggio dei componenti hardware e il caricamento del firmware al suo interno. E in secondo luogo useremo Firebase per l'installazione con NodeMCU per lo scambio di dati in tempo reale. Se sei nuovo su ESP8266 o Firebase, segui il nostro tutorial precedente sul controllo dei LED utilizzando Firebase.
Componenti richiesti
- Modulo NodeMCU ESP8266
- DHT11 Sensore di temperatura e umidità
Schema elettrico
Sensore di temperatura e umidità DHT11
Il modulo DHT11 presenta un complesso di umidità e temperatura con un'uscita di segnale digitale calibrato, il che significa che il modulo sensore DHT11 è un modulo combinato per il rilevamento di umidità e temperatura che fornisce un segnale di uscita digitale calibrato. DHT11 ci fornisce valori molto precisi di umidità e temperatura e garantisce alta affidabilità e stabilità a lungo termine. Questo sensore ha un componente di misurazione dell'umidità di tipo resistivo e un componente di misurazione della temperatura di tipo NTC con un microcontrollore a 8 bit integrato che ha una risposta rapida ed economica e disponibile in un pacchetto a fila singola a 4 pin.
In precedenza abbiamo utilizzato ESP12E per aggiornare le letture DHT11 sul server web, oltre a questo puoi controllare tutti i progetti basati su DHT11 in cui abbiamo utilizzato DHT11 per interfacciarci con molti altri microcontrollori come Arduino, PIC, Raspberry e la stazione meteorologica costruita che li utilizza.
Programmazione NodeMCU ESP8266 Monitoraggio della temperatura e dell'umidità in tempo reale
Alla fine viene fornito il programma completo con il video funzionante. Qui stiamo spiegando alcune parti importanti del codice.
Innanzitutto includi le librerie per l'utilizzo di ESP8266 e Firebase.
#includere
Scarica e installa le librerie seguendo i collegamenti seguenti:
github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h
github.com/bblanchon/ArduinoJson
Durante la compilazione , se si verifica un errore che la libreria ArduinoJson.h non è installata, installarla utilizzando il collegamento indicato sopra.
Programmeremo NodeMCU per prendere le letture dal sensore DHT11 e inviarlo a Firebase ogni 5 secondi di intervallo. Imposteremo un percorso per il push dei dati. In questo momento due parametri vale a dire. l'umidità e la temperatura vengono inviate nello stesso percorso genitore e in un percorso figlio diverso.
Questi due parametri sono molto importanti per comunicare con Firebase. L'impostazione di questi parametri abiliterà lo scambio di dati tra e ESP8266 e Firebase. Per trovare questi parametri per il tuo progetto, segui il nostro precedente tutorial su Firebase Setup.
#define FIREBASE_HOST "your-project.firebaseio.com" // the project name address from firebase id #define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxxxxxfQDDkhN" // la chiave segreta generata da firebase
Dopo aver trovato con successo le credenziali, basta sostituire nel codice sopra.
Inserisci il tuo SSID Wi-Fi e la password per connetterti alla tua rete.
#define WIFI_SSID "network_name" // inserisci il tuo nome wifi di casa o pubblico #define WIFI_PASSWORD "password" // password di wifi ssid
Definisci il pin dati DHT in NodeMCU. Puoi utilizzare qualsiasi pin GPIO digitale in NodeMCU.
#define DHTPIN D4
La libreria DHT è realizzata per tutte le varianti DHT e viene fornita con l'opzione del sensore DHT che si desidera utilizzare, ad esempio DHT11 o DHT22. Basta scegliere il sensore DHT giusto e procedere.
#define DHTTYPE DHT11 // seleziona il tipo dht come DHT 11 o DHT22 DHT dht (DHTPIN, DHTTYPE);
Connettiti alla rete Wi-Fi selezionata e connettiti anche al server del database Firebase.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Inizia a leggere al pin D4 di NodeMCU.
dht.begin ();
Prendi le letture di umidità e temperatura dal sensore DHT e salva come valore flottante.
float h = dht.readHumidity (); // La lettura della temperatura o dell'umidità richiede circa 250 millisecondi! float t = dht.readTemperature (); // Leggi la temperatura come Celsius (l'impostazione predefinita)
Basta controllare se il sensore DHT è cablato correttamente o non è danneggiato e il controller può leggere le letture da esso. Se le letture non vengono visualizzate, probabilmente il sensore è danneggiato, mostra semplicemente un messaggio di errore e torna a controllare di nuovo senza procedere.
if (isnan (h) - isnan (t)) {// Controlla se qualche lettura non è riuscita ed esci prima (per riprovare). Serial.println (F ("Impossibile leggere dal sensore DHT!")); ritorno; }
Stampa i dati del sensore nel monitor seriale per il debug e salva i valori di temperatura e umidità sotto forma di stringa per inviarli a Firebase. Notare inoltre che il ritardo minimo richiesto tra due letture dal sensore DHT11 è di 2 secondi, quindi utilizzare sempre un ritardo maggiore di 2 secondi. Per saperne di più sul DHT11 puoi consultare la scheda tecnica ufficiale.
Serial.print ("Umidità:"); Serial.print (h); String fireHumid = String (h) + String ("%"); // converte l'umidità intera in umidità della stringa Serial.print ("% Temperature:"); Serial.print (t); Serial.println ("° C"); String fireTemp = String (t) + String ("° C"); ritardo (4000);
Infine, invia i dati di temperatura e umidità a Firebase nel percorso "your-project.firebaseio.com/DHT11/Humidity/".
Firebase.pushString ("/ DHT11 / Humidity", fireHumid); // percorso di configurazione e invio delle letture Firebase.pushString ("/ DHT11 / Temperature", fireTemp); // imposta il percorso e invia le letture
Puoi vedere tutti i dati nel tuo account Firebase. Vai alla sezione " Database " in " Il tuo progetto " in "La mia console " in Firebase.
Per configurare Firebase per l'invio e il monitoraggio dei dati puoi fare riferimento al nostro precedente tutorial.
Di seguito sono riportati il codice completo e il video per questo monitoraggio di temperatura e umidità basato su IoT.