L'umidità e la temperatura sono parametri molto comuni per la misurazione in molti luoghi come fattoria, serra, medicina, casa industriale e uffici. Abbiamo già coperto la misurazione dell'umidità e della temperatura utilizzando Arduino e visualizzato i dati sul display LCD.
In questo progetto IoT monitoreremo l'umidità e la temperatura su Internet utilizzando ThingSpeak, dove mostreremo i dati correnti di umidità e temperatura su Internet utilizzando il server ThingSpeak. È realizzato dalle comunicazioni dati tra Arduino, modulo sensore DHT11, modulo WIFI ESP8266 e LCD. Il termometro a scala Celsius e il misuratore di umidità a scala percentuale visualizzano la temperatura ambiente e l'umidità attraverso un display LCD e li invia anche al server ThingSpeak per il monitoraggio in tempo reale da qualsiasi parte del mondo.
Configurazione di lavoro e ThingSpeak:
Questo progetto basato sull'IoT con quattro sezioni, in primo luogo, il sensore di temperatura e umidità DHT11 rileva i dati di umidità e temperatura . In secondo luogo Arduino Uno estrae i dati del sensore DHT11 come numero adatto in percentuale e scala Celsius e li invia al modulo Wi-Fi. In terzo luogo , il modulo Wi-Fi ESP8266 invia i dati al server di ThingSpeak. Infine, ThingSpeak analizza i dati e li mostra in forma di grafico. Il display LCD opzionale viene utilizzato anche per visualizzare la temperatura e l'umidità.
ThingSpeak fornisce un ottimo strumento per progetti basati su IoT per Arduino. Utilizzando il sito ThingSpeak, possiamo monitorare i nostri dati su Internet da qualsiasi luogo e possiamo anche controllare il nostro sistema su Internet, utilizzando i canali e le pagine web fornite da ThingSpeak. ThingSpeak "raccoglie" i dati dai sensori, "analizza e visualizza" i dati e "agisce" innescando una reazione. Qui stiamo spiegando come inviare dati al server ThingSpeak utilizzando il modulo WIFI ESP8266:
1. Prima di tutto, l'utente deve creare un account su ThingSpeak.com, quindi accedere e fare clic su Inizia.
2. Ora vai al menu "Canali" e fai clic sull'opzione Nuovo canale nella stessa pagina per procedere ulteriormente.
3. Ora vedrai un modulo per creare il canale, compila il Nome e la Descrizione secondo la tua scelta. Quindi riempire "Umidità" e "Temperatura" nelle etichette Campo 1 e Campo 2, selezionare le caselle di controllo per entrambi i campi. Seleziona anche la casella di controllo per l'opzione "Rendi pubblico" sotto nel modulo e infine Salva il canale. Ora il tuo nuovo canale è stato creato.
4. Ora fai clic sulla scheda "Chiavi API" e salva le chiavi API di scrittura e lettura, qui stiamo usando solo la chiave di scrittura. Devi copiare questa chiave in char * api_key nel codice.
5. Successivamente, fare clic su "Importazione / esportazione dati" e copiare l'URL della richiesta GET del feed del canale di aggiornamento, che è:
api.thingspeak.com/update?api_key=SIWOYBX26OXQ1WMS&field1=0
6. Ora l'utente deve aprire "api.thingspeak.com" utilizzando la funzione httpGet con postUrl come "update? Api_key = SIWOYBX26OXQ1WMS & field1 = 0" e quindi inviare i dati utilizzando il feed di dati o l'indirizzo di richiesta di aggiornamento.
Prima di inviare i dati, l'utente deve modificare questa stringa di query o postUrl con i campi dei dati di temperatura e umidità, come mostrato di seguito. Qui abbiamo aggiunto entrambi i parametri nella stringa che dobbiamo inviare tramite la richiesta GET al server, dopodiché abbiamo utilizzato httpGet per inviare i dati al server. Controlla il codice completo di seguito.
Sprintf (postUrl, "update? Api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80);
L'intero processo è illustrato nella sezione Video, alla fine di questo articolo.
Il funzionamento di questo progetto si basa sulla comunicazione seriale a filo singolo per il recupero dei dati da DHT11. Prima Arduino invia un segnale di avvio al modulo DHT e quindi DHT fornisce un segnale di risposta con dati contenenti. Arduino raccoglie ed estrae i dati in due parti prima è l'umidità e la seconda è la temperatura e poi lo invia a 16x2 LCD e al server ThingSpeak. ThingSpeak visualizza i dati sotto forma di grafico come di seguito:
Puoi saperne di più sul sensore DHT11 e sulla sua interfaccia con Arduino qui.
Descrizione del circuito:
I collegamenti per questo progetto ThingSpeak di monitoraggio della temperatura e dell'umidità sono molto semplici. Qui viene utilizzato un display a cristalli liquidi per visualizzare la temperatura e l'umidità, che è direttamente collegato ad Arduino in modalità a 4 bit. I pin dell'LCD, ovvero RS, EN, D4, D5, D6 e D7, sono collegati ai pin digitali Arduino numero 14, 15, 16, 17, 18 e 19. Questo LCD è opzionale.
Il modulo sensore DHT11 è collegato al pin digitale 12 di Arduino. I pin Vcc e GND del modulo Wi-Fi ESP8266 sono collegati direttamente a 3,3 V e GND di Arduino e CH_PD è anche collegato a 3,3 V. I pin Tx e Rx di ESP8266 sono collegati direttamente ai pin 2 e 3 di Arduino. Anche la libreria seriale software viene utilizzata qui per consentire la comunicazione seriale sui pin 2 e 3 di Arduino. Abbiamo già trattato in dettaglio l'interfacciamento del modulo Wi-Fi ESP8266 con Arduino.
Parte di programmazione:
La parte di programmazione di questo progetto gioca un ruolo molto importante per eseguire tutte le operazioni. Prima di tutto includiamo le librerie richieste e inizializziamo le variabili.
#include "dht.h" // Include la libreria per dht #include
Dopo aver inserito la tua chiave API di scrittura e prendi alcune stringhe.
char * api_key = "SIWOYBX26OXQ1WMS"; // Immettere la chiave API di scrittura da ThingSpeak static char postUrl; int humi, tem; void httpGet (String ip, String path, int port = 80);
Nella funzione void loop () leggiamo la temperatura e l'umidità e quindi mostriamo quelle letture sul display LCD.
La funzione void send2server () viene utilizzata per inviare i dati al server. La funzione Send2server è una routine di servizio di interrupt del timer, che chiama ogni 20 secondi. Quando chiamiamo la funzione di aggiornamento, viene chiamata la routine del servizio di interruzione del timer.
void send2server () {char tempStr; char humidStr; dtostrf (tem, 5, 3, tempStr); dtostrf (humi, 5, 3, humidStr); sprintf (postUrl, "update? api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80); }