Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: Temperatur und Luftfeuchtigkeit messen
- Schritt 2: Projekt erstellen und konfigurieren
- Schritt 3: Bibliotheken installieren
- Schritt 4: Schließen Sie einen DHT11-Sensor an
- Schritt 5: Daten an die Cloud senden
- Schritt 6: Diagnose
- Schritt 7: Starten und Debuggen des Projekts
- Schritt 8: Dashboard-Konfiguration
- Schritt 9: Fazit
Video: Anschließen eines DHT11/DHT22-Sensors an die Cloud mit einem ESP8266-basierten Board - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
Im vorherigen Artikel habe ich mein ESP8266-basiertes NodeMCU-Board mit einem Cloud4RPi-Dienst verbunden. Jetzt ist es Zeit für ein echtes Projekt!
Lieferungen
Hardware-Anforderungen:
- Jedes Board, das auf einem ESP8266-Chip basiert (z. B. NodeMCU)
- Ein DHT11- oder DHT22-Sensor
Software und Dienste:
- DHT-Sensorbibliothek von Adafruit - v1.3.7
- Adafruit Unified Sensor - v1.0.3
- cloud4rpi-esp-arduino - v0.1.0
- Cloud4RPI - Cloud-Bedienfeld für IoT-Geräte
- PlatformIO-IDE für VSCode
Schritt 1: Temperatur und Luftfeuchtigkeit messen
Ich hatte bereits einen DHT11-Sensor und entschied mich daher, ihn für Temperatur- und Luftfeuchtigkeitsmessungen zu verwenden. Wählen wir eine Arduino-Bibliothek aus, um Sensordaten zu lesen.
Die Arduino-Registry enthält mehrere Bibliotheken, von denen ich die beliebteste ausgewählt habe.
Laut ihrem GitHub-Repository müssen wir auch ein Adafruit Unified Sensor-Paket hinzufügen.
Schritt 2: Projekt erstellen und konfigurieren
Wie Sie ein PlatformIO-Projekt erstellen und Bibliotheken installieren, habe ich bereits im ersten Teil beschrieben. Mein Projekt heißt „MyNodeMCU“. Der Aufbau ist oben dargestellt.
Dieses Projekt ist ein leicht modifiziertes Cloud4RPi-Beispiel. Ich habe mich entschieden, das Geräte-Token und die Wi-Fi-Anmeldeinformationen in der Konfigurationsdatei anstelle von Code zu speichern.
Die Datei platform.io sieht wie folgt aus:
[platformio]default_envs = nodemcuv2[env:nodemcuv2] Plattform = espressif8266 Framework = Arduino Board = nodemcuv2
Schritt 3: Bibliotheken installieren
Die Installation von Bibliotheken ist recht einfach. Sie können dies über die grafische Benutzeroberfläche der IDE tun oder indem Sie die erforderlichen Bibliotheksnamen zum Abschnitt lib_deps der Datei platform.io hinzufügen:
; …lib_deps = cloud4rpi-esp-arduino Adafruit Unified Sensor DHT-Sensorbibliothek build_flags = -D MQTT_MAX_PACKET_SIZE=1024 -D MQTT_MAX_TRANSFER_SIZE=128 -D CLOUD4RPI_DEBUG=0 -D SSID_NAME=\"_WIFI" -WIFI\_\ D CLOUD4RPI_TOKEN=\"_YOUR_DEVICE_TOKEN_\"
Hinzugefügte Bibliotheken werden automatisch im Unterordner eines Projekts installiert.
Der Header main.cpp sieht wie folgt aus:
#include #include #include #include "DHT.h"
Schritt 4: Schließen Sie einen DHT11-Sensor an
Adafruit bietet ein DHTtester.ino-Beispiel für eine Sensorverbindung.
Dieser Code initialisiert einen Sensor und definiert eine Struktur zum Speichern des Messergebnisses (falls es erfolgreich war):
#define DHTPIN 2 // Digitaler Pin mit dem DHT-Sensor verbunden #define DHTTYPE DHT11 // DHT 11 // … DHT dht(DHTPIN, DHTTYPE); dht.begin(); // … struct DHT_Result { float h; schweben t; }; DHT_Result dhtResult;
Die nächste Funktion zeigt, wie man Sensordaten ausliest und in der oben beschriebenen Datenstruktur speichert
Void readSensors () { float h = dht.readHumidity (); // Temperatur als Celsius lesen (Standard) float t = dht.readTemperature ();
// Prüfen, ob Lesevorgänge fehlgeschlagen sind und beenden
if (isnan (h) || isnan (t)) { Serial.println (F ("Fehler beim Lesen vom DHT-Sensor!")); Rückkehr; } dhtResult.h = h; dhtErgebnis.t = t; }
Schritt 5: Daten an die Cloud senden
Sobald wir diese Daten haben, besteht der nächste Schritt darin, sie an den Cloud4RPi-Dienst zu senden.
Die Cloud4RPi für Arduino-Seite beschreibt die Bibliotheks-API, die eine Reihe von Methoden ist, die verwendet werden, um:
- Variablen erstellen, lesen und aktualisieren,
- Variablenwerte über das MQTT-Protokoll in die Cloud senden.
Die Bibliothek unterstützt drei Variablentypen: Bool, Numeric und String.
Der Bibliotheksworkflow beginnt mit der Erstellung einer API-Instanz mit dem Device Token von der cloud4rpi.io-Website (weitere Informationen finden Sie in Teil 1 des Artikels).
#wenn definiert(CLOUD4RPI_TOKEN) Cloud4RPi c4r(CLOUD4RPI_TOKEN); #else Cloud4RPi c4r("!!!_NO_DEVICE_TOKEN_!!!"); #endif
Deklarieren Sie dann Variablen für DHT11-Messwerte:
c4r.declareNumericVariable("DHT11_Temp");c4r.declareNumericVariable("DHT11_Hum");
Rufen Sie dann Daten vom Sensor ab, speichern Sie sie in Variablen und veröffentlichen Sie die Daten in Cloud4RPi:
c4r.setVariable("DHT11_Temp", dhtResult.t);c4r.setVariable("DHT11_Hum", dhtResult.h); c4r.publishData();
Temperatur und Luftfeuchtigkeit ändern sich nicht schnell, so dass nicht mehr als ein Wert pro 5 Minuten gesendet werden muss.
Schritt 6: Diagnose
Cloud4RPi unterstützt Diagnosedaten zusammen mit Variablenwerten. Ich habe Betriebszeit, WLAN-Signalstärke und IP-Adresse als Diagnosedaten verwendet:
c4r.declareDiagVariable("IP_Address");c4r.declareDiagVariable("RSSI"); // WiFi-Signalstärke c4r.declareDiagVariable("Uptime");
Hinweis: Die Millis-Funktion, die ich verwende, um die Betriebszeit alle ~50 Tage auf Null zurückzusetzen. Was für mein Projekt mehr als genug ist.
Der folgende Code legt Diagnosevariablenwerte fest:
c4r.setDiagVariable("RSSI", (String)WiFi. RSSI() + " dBm");c4r.setDiagVariable("IP_Address", WiFi.localIP().toString()); c4r.setDiagVariable("Uptime", uptimeHumanReadable(currentMillis)); c4r.publishDiag();
Die Funktion uptimeHumanReadable wandelt Millisekunden in eine bequeme Form um:
String uptimeHumanReadable (ohne Vorzeichen lange Millisekunden) { static char uptimeStr[32]; lange Sekunden ohne Vorzeichen = Millisekunden / 1000; lange Minuten ohne Vorzeichen = Sekunden / 60; unsigned int Stunden = Minuten / 60; unsigned int days = Stunden / 24; Sekunden -= Minuten * 60; Minuten -= Stunden * 60; Stunden -= Tage * 24; sprintf(uptimeStr, "%d Tage %2.2d:%2.2d:%2.2d", (Byte)Tage, (Byte)Stunden, (Byte)Minuten, (Byte)Sekunden); return String(uptimeStr); }
Die Funktion gibt einen String wie diesen 5 Tage 10:23:14 anstelle einer seltsam großen Zahl aus.
Schritt 7: Starten und Debuggen des Projekts
Nach dem Kompilieren des erstellten Codes und dem Flashen in NodeMCU verbindet sich das Gerät mit einem Cloud-Dienst und beginnt mit dem Senden von Daten.
Sie können die Ausführlichkeit der Protokollierung erhöhen, indem Sie die Präprozessorvariable CLOUD4RPI_DEBUG auf 1 setzen (fügen Sie -D CLOUD4RPI_DEBUG=1 zum Abschnitt build_flags in der Datei platform.io hinzu).
Öffnen Sie als Nächstes die Website cloud4rpi.io und bemerken Sie das neue Gerät online. Öffnen Sie es, um alle vom Gerät empfangenen Variablenwerte anzuzeigen: Sensor und Diagnose.
Schritt 8: Dashboard-Konfiguration
In diesem Schritt ist die Datenverbindung zur Cloud betriebsbereit. Lassen Sie uns nun die visuelle Darstellung der Daten konfigurieren.
Ich habe die Dashboard-Konfigurations-UI verwendet, um das folgende Dashboard zu erstellen.
Das Dashboard kann geteilt werden, sodass ich es sofort mit meinem Freund teile.
Schritt 9: Fazit
Der vollständige Code des Projekts ist in der Gist verfügbar.
Das ist alles für jetzt!
Fragen und Anregungen sind in den Kommentaren willkommen.
Empfohlen:
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Die Kurzanleitung zum Erstellen eines Videos mit Ihrem IPhone und Hochladen auf Facebook oder YouTube: 9 Schritte
Die Kurzanleitung zum Erstellen eines Videos mit Ihrem IPhone und Hochladen auf Facebook oder YouTube: Verwenden Sie diesen einfachen 5-Schritte-Prozess (Instructables lässt es wie mehr Schritte aussehen, als es tatsächlich ist), um Ihr erstes YouTube- oder Facebook-Video zu erstellen und hochzuladen - mit nur dein iPhone
So steuern Sie ein Gerät mit Raspberry Pi und einem Relais – DIE GRUNDLAGEN: 6 Schritte
So steuern Sie ein Gerät mit Raspberry Pi und einem Relais - DIE GRUNDLAGEN: Dies ist ein einfaches und unkompliziertes Tutorial zur Steuerung eines Geräts mit Raspberry Pi und einem Relais, das für die Erstellung von IoT-Projekten hilfreich ist folgen Sie, auch wenn Sie keine Ahnung von Raspberry haben
So erstellen Sie eine funktionierende Ampel mit einem Auduino-Board – wikiHow
So erstellen Sie eine funktionierende Ampel mit einem Auduino-Board: Ampeln sind Signalgeräte, die häufig an Straßenkreuzungen, Fußgängerüberwegen und anderen Orten verwendet werden, um den Verkehrsfluss zu steuern. Eine handbetätigte Gasampel war die erste ihrer Art und die Technologie hat die Si
Li-Ionen-Akku parallel und in Reihe anschließen: 5 Schritte (mit Bildern)
So schließen Sie einen Li-Ionen-Akku parallel und in Reihe an