Inhaltsverzeichnis:

ESP32 Lora Thingspeak Gateway mit Sensorknoten - Gunook
ESP32 Lora Thingspeak Gateway mit Sensorknoten - Gunook

Video: ESP32 Lora Thingspeak Gateway mit Sensorknoten - Gunook

Video: ESP32 Lora Thingspeak Gateway mit Sensorknoten - Gunook
Video: ESP32 LoRaWAN Gateway tutorial with Sensor Node 2024, November
Anonim
ESP32 Lora Thingspeak Gateway mit Sensorknoten
ESP32 Lora Thingspeak Gateway mit Sensorknoten

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

ESP32 LoRa Thingspeak Gateway
ESP32 LoRa Thingspeak Gateway
ESP32 LoRa Thingspeak Gateway
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

ESP32 LoRa-Sensorknoten
ESP32 LoRa-Sensorknoten
ESP32 LoRa-Sensorknoten
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

Einrichten von Thingspeak
Einrichten von Thingspeak

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

Überwachen Sie Daten auf dem Thingspeak-Server
Überwachen Sie Daten auf dem Thingspeak-Server
Überwachen Sie Daten auf dem Thingspeak-Server
Überwachen Sie Daten auf dem Thingspeak-Server

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: