Luftfeuchtigkeit und Temperatur sind sehr häufige Parameter für die Messung an vielen Orten wie Bauernhof, Gewächshaus, Medizin, Industrie und Büro. Wir haben bereits die Feuchtigkeits- und Temperaturmessung mit Arduino behandelt und die Daten auf dem LCD angezeigt.
In diesem IoT-Projekt werden wir Luftfeuchtigkeit und Temperatur über das Internet mit ThingSpeak überwachen, wo wir die aktuellen Daten zu Luftfeuchtigkeit und Temperatur über das Internet mit dem ThingSpeak-Server anzeigen. Dies wird durch die Datenkommunikation zwischen Arduino, DHT11-Sensormodul, ESP8266-WIFI-Modul und LCD erreicht. Das Thermometer mit Celsius-Skala und das Feuchtigkeitsmessgerät mit Prozentwaage zeigen die Umgebungstemperatur und Luftfeuchtigkeit über ein LCD-Display an und senden sie zur Live-Überwachung von überall auf der Welt an den ThingSpeak-Server.
Arbeits- und ThingSpeak-Setup:
Dieses IoT-basierte Projekt besteht aus vier Abschnitten: Erstens erfasst der Feuchtigkeits- und Temperatursensor DHT11 die Feuchtigkeits- und Temperaturdaten . Zweitens extrahiert Arduino Uno die Daten des DHT11-Sensors als geeignete Zahl in Prozent und in der Celsius-Skala und sendet sie an das Wi-Fi-Modul. Drittens sendet das Wi-Fi-Modul ESP8266 die Daten an den Server von ThingSpeak. Und schließlich analysiert ThingSpeak die Daten und zeigt sie in grafischer Form an. Das optionale LCD wird auch zur Anzeige von Temperatur und Luftfeuchtigkeit verwendet.
ThingSpeak bietet ein sehr gutes Tool für IoT-basierte Projekte für Arduino. Durch die Verwendung der ThingSpeak-Site können wir unsere Daten von überall aus über das Internet überwachen und unser System über das Internet mithilfe der von ThingSpeak bereitgestellten Kanäle und Webseiten steuern. ThingSpeak 'sammelt' die Daten von den Sensoren, 'analysiert und visualisiert' die Daten und 'handelt', indem es eine Reaktion auslöst. Hier wird erläutert , wie Sie mithilfe des ESP8266-WIFI-Moduls Daten an den ThingSpeak-Server senden:
1. Zunächst muss der Benutzer ein Konto auf ThingSpeak.com erstellen, sich dann anmelden und auf Erste Schritte klicken.
2. Gehen Sie nun zum Menü 'Kanäle' und klicken Sie auf derselben Seite auf die Option Neuer Kanal, um den Vorgang fortzusetzen.
3. Nun sehen Sie ein Formular zum Erstellen des Kanals. Geben Sie den Namen und die Beschreibung nach Ihrer Wahl ein. Füllen Sie dann "Luftfeuchtigkeit" und "Temperatur" in Feld 1 und Feld 2 aus und aktivieren Sie die Kontrollkästchen für beide Felder. Aktivieren Sie auch das Kontrollkästchen für die Option "Öffentlich machen" unten im Formular und speichern Sie schließlich den Kanal. Jetzt wurde dein neuer Kanal erstellt.
4. Klicken Sie nun auf die Registerkarte 'API-Schlüssel' und speichern Sie die API-Schlüssel zum Schreiben und Lesen. Hier verwenden wir nur den Schreibschlüssel. Sie müssen diesen Schlüssel in char * api_key im Code kopieren .
5. Nachdem es, klicken Sie auf 'Data Import / Export' und kopieren Sie die Update - Kanal - Feed GET Anforderungs - URL, die lautet:
api.thingspeak.com/update?api_key=SIWOYBX26OXQ1WMS&field1=0
6. Jetzt muss der Benutzer "api.thingspeak.com" mit der httpGet- Funktion mit der postUrl als "update? Api_key = SIWOYBX26OXQ1WMS & field1 = 0" öffnen und dann Daten mithilfe des Datenfeeds oder der Aktualisierungsanforderungsadresse senden.
Vor dem Senden der Daten muss der Benutzer diese Abfragezeichenfolge oder postUrl mit Temperatur- und Feuchtigkeitsdatenfeldern bearbeiten, wie unten gezeigt. Hier haben wir beide Parameter in die Zeichenfolge eingefügt, die wir über die GET-Anforderung an den Server senden müssen, nachdem wir httpGet zum Senden der Daten an den Server verwendet haben. Überprüfen Sie den vollständigen Code unten.
Sprintf (postUrl, "update? Api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80);
Der gesamte Prozess wird im Abschnitt Video am Ende dieses Artikels demonstriert.
Die Arbeit dieses Projekts basiert auf der seriellen Einleitungskommunikation zum Abrufen von Daten von DHT11. Zuerst sendet Arduino ein Startsignal an das DHT-Modul und dann gibt DHT ein Antwortsignal mit enthaltenden Daten. Arduino sammelt und extrahiert die Daten in zwei Teilen: erstens Luftfeuchtigkeit und zweitens Temperatur. Anschließend sendet Arduino sie an 16x2 LCD und ThingSpeak Server. ThingSpeak zeigt die Daten in Form eines Diagramms wie folgt an:
Weitere Informationen zum DHT11-Sensor und seiner Schnittstelle zu Arduino finden Sie hier.
Schaltungsbeschreibung:
Die Anschlüsse für dieses ThingSpeak-Projekt zur Überwachung von Temperatur und Luftfeuchtigkeit sind sehr einfach. Hier wird eine Flüssigkristallanzeige zur Anzeige von Temperatur und Luftfeuchtigkeit verwendet, die im 4-Bit-Modus direkt mit Arduino verbunden ist. Die LCD-Pins RS, EN, D4, D5, D6 und D7 sind mit den digitalen Arduino-Pin-Nummern 14, 15, 16, 17, 18 und 19 verbunden. Dieses LCD ist optional.
Das DHT11-Sensormodul ist mit dem digitalen Pin 12 von Arduino verbunden. Die Vcc- und GND-Pins des Wi-Fi-Moduls ESP8266 sind direkt mit 3,3 V verbunden, und GND von Arduino und CH_PD sind ebenfalls mit 3,3 V verbunden. Die Tx- und Rx-Pins von ESP8266 sind direkt mit Pin 2 und 3 von Arduino verbunden. Die Software Serial Library wird auch hier verwendet, um die serielle Kommunikation an Pin 2 und 3 von Arduino zu ermöglichen. Wir haben die Schnittstelle des ESP8266-Wi-Fi-Moduls zu Arduino bereits ausführlich behandelt.
Programmierteil:
Die Programmierung eines Teils dieses Projekts spielt eine sehr wichtige Rolle für die Ausführung aller Operationen. Zunächst fügen wir die erforderlichen Bibliotheken hinzu und initialisieren Variablen.
#include "dht.h" // Einschließlich Bibliothek für dht #include
Geben Sie anschließend Ihren Write API-Schlüssel ein und nehmen Sie einige Zeichenfolgen.
char * api_key = "SIWOYBX26OXQ1WMS"; // Geben Sie Ihren Write API-Schlüssel über ThingSpeak ein. Statisches Zeichen postUrl; int humi, tem; void httpGet (String ip, String path, int port = 80);
In der Funktion void loop () lesen wir Temperatur und Luftfeuchtigkeit und zeigen diese dann auf dem LCD an.
Die Funktion void send2server () wird verwendet, um die Daten an den Server zu senden. Die Send2server-Funktion ist eine Timer-Interrupt-Serviceroutine, die alle 20 Sekunden aufgerufen wird. Wenn wir die Aktualisierungsfunktion aufrufen, wird die Timer-Interrupt-Serviceroutine aufgerufen.
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); }}