Inhaltsverzeichnis:
- Schritt 1: Erforderliche Komponenten
- Schritt 2: Installieren der erforderlichen Bibliotheken
- Schritt 3: ESP32 LoRa Thingspeak Gateway
- Schritt 4: ESP32 LoRa-Sensorknoten
- Schritt 5: Thingspeak einrichten
- Schritt 6: Gateway-Code
- Schritt 7: Sensorknotencode
- Schritt 8: Daten auf dem Thingspeak-Server überwachen
- Schritt 9: Referenzen
Video: ESP32 Lora Thingspeak Gateway mit Sensorknoten - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:17
In diesem IoT-Projekt habe ich ESP32 LoRa Gateway & auch ESP32 LoRa Sensor Node entworfen, um den Sensormesswert drahtlos aus einigen Kilometern Entfernung zu überwachen. Der Sender liest die Feuchtigkeits- und Temperaturdaten mit dem DHT11-Sensor. Anschließend überträgt es die Daten per LoRa Radio. Die Daten werden vom Empfängermodul empfangen. Der Empfänger sendet die Daten dann nach einem bestimmten Intervall an den Thingspeak Server.
Schritt 1: Erforderliche Komponenten
1. ESP32-Platine - 2
2. Lora-Modul SX1278/SX1276
3. DHT11 Feuchtigkeits-Temperatursensor
4. Steckbrett
5. Anschließen von Überbrückungsdrähten
Schritt 2: Installieren der erforderlichen Bibliotheken
Wir müssen zuerst verschiedene Bibliotheken installieren:
1. DHT11-Bibliothek
2. LoRa-Bibliothek
Schritt 3: ESP32 LoRa Thingspeak Gateway
Sehen wir uns nun die Sender- und Empfängerschaltung für den Aufbau des ESP32 LoRa Gateway & Sensor Node an. Ich habe beide Schaltungen auf einem Steckbrett zusammengebaut. Sie können es auf PCB machen, wenn Sie möchten.
Hier ist eine ESP32 LoRa-Modul SX1278 Gateway-Schaltung. Dieser Teil arbeitet als Empfänger. Die Feuchtigkeits- und Temperaturdaten werden mit LoRa Radio empfangen und auf den Thingspeak Server hochgeladen.
Schritt 4: ESP32 LoRa-Sensorknoten
Hier ist eine ESP32-LoRa-Sensorknotenschaltung mit DHT11-Sensor. Dieser Teil arbeitet als Sender. Die Feuchtigkeits- und Temperaturdaten werden vom DHT11 Feuchtigkeits-Temperatursensor gelesen und mit LoRa-Funk übertragen.
Schritt 5: Thingspeak einrichten
Um die Sensordaten auf dem Thingspeak Server zu überwachen, müssen Sie zuerst den Thingspeak einrichten. Um den Thingspeak-Server einzurichten, besuchen Sie https://thingspeak.com/. Erstellen Sie ein Konto oder melden Sie sich einfach an, wenn Sie das Konto zuvor erstellt haben. Erstellen Sie dann einen neuen Kanal mit den folgenden Details.
Schritt 6: Gateway-Code
#enthalten
//Bibliotheken für LoRa #include #include //definiere die Pins, die vom LoRa-Transceiver-Modul verwendet werden #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 //433E6 für Asien, 866E6 für Europa, 915E6 für Nordamerika // Durch Ihre Netzwerkanmeldeinformationen ersetzen String apiKey = "14K8UL2QEK8BTHN6"; // Geben Sie Ihren Write API-Schlüssel von ThingSpeak ein const char *ssid = "Wifi SSID"; // Ersetzen Sie durch Ihre WLAN-Ssid und Ihren wpa2-Schlüssel const char *password = "Password"; const char* server = "api.thingspeak.com"; WiFiClient-Client; // Variablen initialisieren, um LoRa-Daten zu erhalten und zu speichern int rssi; String loRaMessage; String-Temperatur; String-Feuchtigkeit; Zeichenfolge Lese-ID; // Ersetzt Platzhalter durch DHT-Werte String-Prozessor(const String& var){ //Serial.println(var); if(var == "TEMPERATURE") { Rücklauftemperatur; aufrechtzuerhalten. Sonst if(var == "HUMIDITY") { Feuchtigkeit zurückgeben; aufrechtzuerhalten. Sonst if (var == "RRSI") { return String (rssi); } String() zurückgeben; aufrechtzuerhalten. Void setup () { Serial.begin (115200); int-Zähler; // LoRa-Transceiver-Modul einrichten LoRa.setPins (ss, rst, dio0); // LoRa-Transceiver-Modul einrichten, während (! LoRa.begin (BAND) & counter <10) {Serial.print ("."); Zähler++; Verzögerung (2000); aufrechtzuerhalten. Wenn (Zähler == 10) {// Erhöhen Sie die ReadingID bei jedem neuen Lesen Serial.println ("Starting LoRa fehlgeschlagen!"); } Serial.println ("LoRa-Initialisierung OK!"); Verzögerung (2000); // Verbinden Sie sich mit dem Wi-Fi-Netzwerk mit SSID und Passwort Serial.print ("Connecting to"); Serial.println (ssid); WiFi.begin(ssid, Passwort); Während (WiFi.status () != WL_CONNECTED) { Verzögerung (2000); Serial.print("."); } // Lokale IP-Adresse drucken und Webserver Serial.println (""); Serial.println ("WiFi verbunden."); Serial.println("IP-Adresse:"); Serial.println (WiFi.localIP()); } // LoRa-Paket lesen und Sensormesswerte abrufen Void loop () { Int packetSize = LoRa.parsePacket (); if (packetSize) { Serial.print ("Lora-Paket erhalten: "); while (LoRa.available ()) // Paket lesen { String LoRaData = LoRa.readString (); Serial.print (LoRaData); int pos1 = LoRaData.indexOf('/'); int pos2 = LoRaData.indexOf('&'); LeseID = LoRaData.substring(0, pos1); // ReadingID-Temperatur abrufen = LoRaData.substring (pos1 +1, pos2); // Temperatur Luftfeuchtigkeit abrufen = LoRaData.substring(pos2+1, LoRaData.length()); // Feuchtigkeit abrufen } rssi = LoRa.packetRssi(); // RSSI Serial.print (" mit RSSI "); Serial.println (rssi); } if (client.connect(server, 80)) // "184.106.153.149" or api.thingspeak.com { String postStr = apiKey; postStr += "&field1="; postStr += String(readingID); postStr += "&field2="; postStr += String(Temperatur); postStr += "&field3="; postStr += String(Luftfeuchtigkeit); postStr += "&field4="; postStr += String(rssi); postStr += "\r\n\r\n\r\n\r\n"; client.print("POST /update HTTP/1.1\n"); client.print("Host: api.thingspeak.com\n"); client.print("Verbindung: schließen\n"); client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n"); client.print("Content-Type: application/x-www-form-urlencoded\n"); client.print("Inhaltslänge: "); client.print (postStr.length()); client.print("\n\n"); client.print(postStr); } // Verzögerung (30000); }
Schritt 7: Sensorknotencode
#enthalten
#include //Bibliotheken für LoRa #include "DHT.h" #define DHTPIN 4 // Pin, wo das dht11 angeschlossen ist DHT dht (DHTPIN, DHT11); // Definieren Sie die vom LoRa-Transceiver-Modul verwendeten Pins #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 //433E6 für Asien, 866E6 für Europa, 915E6 für Nordamerika // Paketzähler Int ReadingID = 0; int-Zähler = 0; String LoRaMessage = ""; Schwimmertemperatur = 0; Schwebefeuchte = 0; // LoRa-Modul initialisieren void startLoRA () { LoRa.setPins (ss, rst, dio0); // LoRa-Transceiver-Modul einrichten, während (! LoRa.begin (BAND) & counter <10) {Serial.print ("."); Zähler++; Verzögerung (500); aufrechtzuerhalten. Wenn (Zähler == 10) {// Erhöhen Sie die ReadingID bei jedem neuen Reading ReadingID++; Serial.println ("Starten von LoRa fehlgeschlagen!"); } Serial.println ("LoRa-Initialisierung OK!"); Verzögerung (2000); aufrechtzuerhalten. Void startDHT () { if (isnan (Luftfeuchtigkeit) || isnan (Temperatur)) { Serial.println ("Fehler beim Lesen vom DHT-Sensor!"); Rückkehr; aufrechtzuerhalten. aufrechtzuerhalten. Void getReadings () {Feuchtigkeit = dht.readHumidity (); Temperatur = dht.readTemperature(); Serial.print (F ("Feuchtigkeit: ")); Serial.print (Luftfeuchtigkeit); Serial.print (F ("% Temperatur: ")); Serial.print (Temperatur); Serial.println (F ("°C")); aufrechtzuerhalten. Void sendReadings () { LoRaMessage = String (readingID) + "/" + String (Temperatur) + "&" + String (Luftfeuchtigkeit); // LoRa-Paket an den Empfänger senden LoRa.beginPacket (); LoRa.print (LoRaMessage); LoRa.endPacket(); Serial.print ("Paket senden: "); Serial.println (readingID); LeseID++; Serial.println (LoRaMessage); aufrechtzuerhalten. Void setup () { // Serial Monitor Serial.begin (115200) initialisieren; dht.begin(); startDHT(); startLoRA(); aufrechtzuerhalten. Void Schleife () { getReadings (); sendReadings(); Verzögerung (500); }
Schritt 8: Daten auf dem Thingspeak-Server überwachen
Sobald der Code hochgeladen wurde, können Sie den seriellen Monitor sowohl auf dem Gateway- als auch auf dem Sensorknotenkreis öffnen. Sie werden Daten senden und empfangen, wenn der Code korrekt ist. Jetzt können Sie Thingspeak Private View besuchen. Dort sehen Sie, dass die Daten für Paketnummer, Temperatur, Luftfeuchtigkeit & Gateway nach dem Intervall von 15 Sekunden hochgeladen werden.
Schritt 9: Referenzen
1.
2.
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
Bewegungsaktivierte Cosplay Wings mit Circuit Playground Express - Teil 1: 7 Schritte (mit Bildern)
Bewegungsaktivierte Cosplay-Flügel mit Circuit Playground Express - Teil 1: Dies ist Teil 1 eines zweiteiligen Projekts, in dem ich Ihnen meinen Prozess zur Herstellung eines Paars automatisierter Feenflügel zeige. Der erste Teil des Projekts ist der Mechanik der Flügel, und der zweite Teil macht es tragbar und fügt die Flügel hinzu
Raspberry Pi mit Node.js mit der Cloud verbinden – wikiHow
So verbinden Sie Raspberry Pi mit Node.js mit der Cloud: Dieses Tutorial ist nützlich für alle, die einen Raspberry Pi mit Node.js mit der Cloud, insbesondere mit der AskSensors IoT-Plattform, verbinden möchten. Sie haben keinen Raspberry Pi? Wenn Sie derzeit keinen Raspberry Pi besitzen, empfehle ich Ihnen, sich einen Raspberry Pi zuzulegen
So verwandeln Sie Ihren Raspberry Pi in ein Remote Access Gateway – wikiHow
So verwandeln Sie Ihren Raspberry Pi in ein Remote Access Gateway: Hey Leute! Angesichts der jüngsten Ereignisse hat unser Team von remote.it hart daran gearbeitet, Ideen zu sammeln, um die Arbeit aus der Ferne schmerzfrei und zugänglich zu machen. Wir haben das remote.itPi SD Card Image entwickelt, eine SD-Karte, die Sie in eine neue
ESP8266 mit Thingspeak und DHT11 Tutorial - Webserver: 7 Schritte
ESP8266 mit Thingspeak und DHT11 Tutorial | Webserver: Hey, was ist los, Leute! Akarsh hier von CETech. Dieses Projekt von mir ist eher eine Lernkurve, um die Thingspeak-Plattform zusammen mit der Idee von MQTT zu verstehen und dann Thingspeak mit einem ESP8266 zu verwenden. Gegen Ende des Artikels werden wir co