Inhoudsopgave:

ESP32 Lora Thingspeak Gateway met sensorknooppunt - Ajarnpa
ESP32 Lora Thingspeak Gateway met sensorknooppunt - Ajarnpa

Video: ESP32 Lora Thingspeak Gateway met sensorknooppunt - Ajarnpa

Video: ESP32 Lora Thingspeak Gateway met sensorknooppunt - Ajarnpa
Video: Introduction to Heltec LoRa CubeCell Development Board HTCC-AB01 2024, November
Anonim
ESP32 Lora Thingspeak-gateway met sensorknooppunt
ESP32 Lora Thingspeak-gateway met sensorknooppunt

in dit IoT-project ontwierp ik ESP32 LoRa Gateway en ook ESP32 LoRa Sensor Node om de sensormeting draadloos te volgen vanaf een afstand van een paar kilometer. De afzender leest de vochtigheids- en temperatuurgegevens met behulp van de DHT11-sensor. Vervolgens verzendt het de gegevens via LoRa Radio. De gegevens worden ontvangen door de ontvangermodule. De ontvanger stuurt de gegevens dan na een bepaalde tijd naar Thingspeak Server.

Stap 1: Vereiste componenten

1. ESP32-kaart - 2"

2. Lora-module SX1278/SX1276

3. DHT11 Vochtigheidstemperatuursensor

4. Broodplank

5. Jumper-draden aansluiten

Stap 2: De vereiste bibliotheken installeren

We moeten eerst verschillende bibliotheken installeren:

1. DHT11-bibliotheek

2. LoRa-bibliotheek

Stap 3: ESP32 LoRa Thingspeak Gateway

ESP32 LoRa Thingspeak Gateway
ESP32 LoRa Thingspeak Gateway
ESP32 LoRa Thingspeak Gateway
ESP32 LoRa Thingspeak Gateway

Laten we nu het zender- en ontvangercircuit bekijken voor het bouwen van ESP32 LoRa Gateway & Sensor Node. Ik heb beide circuits op een breadboard gemonteerd. Je kunt het op PCB maken als je wilt.

Hier is een ESP32 LoRa-module SX1278 Gateway Circuit. Dit onderdeel werkt als een ontvanger. De vochtigheids- en temperatuurgegevens worden ontvangen met LoRa Radio en geüpload naar Thingspeak Server.

Stap 4: ESP32 LoRa-sensorknooppunt

ESP32 LoRa-sensorknooppunt
ESP32 LoRa-sensorknooppunt
ESP32 LoRa-sensorknooppunt
ESP32 LoRa-sensorknooppunt

Hier is een ESP32 LoRa-sensorknooppuntcircuit met DHT11-sensor. Dit onderdeel werkt als een zender. De vochtigheids- en temperatuurgegevens worden gelezen door de DHT11-vochtigheidstemperatuursensor en verzonden met behulp van LoRa-radio.

Stap 5: Thingspeak instellen

Thingspeak instellen
Thingspeak instellen

Om de sensorgegevens op de Thingspeak-server te controleren, moet u eerst de Thingspeak instellen. Ga naar https://thingspeak.com/ om de Thingspeak-server in te stellen. Maak een account aan of log gewoon in als je het account eerder hebt aangemaakt. Maak dan een nieuw kanaal aan met de volgende details.

Stap 6: Gatewaycode

#erbij betrekken

//Bibliotheken voor LoRa #include #include //definieer de pinnen die worden gebruikt door de LoRa-zendontvangermodule #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 //433E6 voor Azië, 866E6 voor Europa, 915E6 voor Noord-Amerika // Vervang door uw netwerkreferenties String apiKey = "14K8UL2QEK8BTHN6"; // Voer uw Write API-sleutel van ThingSpeak in const char *ssid = "Wifi SSID"; // vervang door je wifi ssid en wpa2 key const char *password = "Wachtwoord"; const char* server = "api.thingspeak.com"; WiFiClient-client; // Initialiseer variabelen om LoRa-gegevens int rssi te krijgen en op te slaan; String loRaMessage; String temperatuur; String vochtigheid; String lees-ID; // Vervangt tijdelijke aanduiding door DHT-waarden String processor (const String& var) {//Serial.println(var); if(var == "TEMPERATUUR") { retourtemperatuur; } else if(var == "VOCHTHEID") { retour vochtigheid; } else if (var == "RRSI") { return String (rssi); } retourneer String (); } void setup() { Serial.begin(115200); int teller; // LoRa-zendontvangermodule instellen LoRa.setPins (ss, rst, dio0); //setup LoRa transceiver module while (!LoRa.begin(BAND) && counter <10) {Serial.print("."); teller++; vertraging (2000); } if (counter == 10) { // Verhogen readingID bij elke nieuwe lezing Serial.println ("Starten van LoRa is mislukt!"); } Serial.println ("LoRa-initialisatie OK!"); vertraging (2000); // Maak verbinding met het wifi-netwerk met SSID en wachtwoord Serial.print ("Verbinding maken met "); Seriële.println(ssid); WiFi.begin(ssid, wachtwoord); while (WiFi.status() != WL_CONNECTED) {delay (2000); Serieel.print("."); } // Druk het lokale IP-adres af en start de webserver Serial.println(""); Serial.println("WiFi verbonden."); Serial.println("IP-adres: "); Serial.println(WiFi.localIP()); } // Lees LoRa-pakket en ontvang de sensormetingen void loop () {int packetSize = LoRa.parsePacket (); if (packetSize) { Serial.print("Lora pakket ontvangen: "); while (LoRa.available()) // Lees pakket { String LoRaData = LoRa.readString (); Serial.print (LoRaData); int pos1 = LoRaData.indexOf('/'); int pos2 = LoRaData.indexOf('&'); readingID = LoRaData.substring (0, pos1); // Get readingID temperatuur = LoRaData.substring (pos1 +1, pos2); // Get temperatuur vochtigheid = LoRaData.substring(pos2+1, LoRaData.length()); // Krijg vochtigheid} rssi = LoRa.packetRssi (); // Download RSSI Serial.print(" met RSSI "); Serieel.println(rssi); } if (client.connect(server, 80)) // "184.106.153.149" of api.thingspeak.com { String postStr = apiKey; postStr += "&field1="; postStr += String (lees-ID); postStr += "&field2="; postStr += String (temperatuur); postStr += "&field3="; postStr += String (vochtigheid); 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("Verbinding: sluiten\n"); client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n"); client.print("Inhoudstype: applicatie/x-www-form-urlencoded\n"); client.print ("Inhoudslengte: "); client.print(postStr.length()); cliënt.print("\n\n"); cliënt.print(postStr); } //vertraging (30000); }

Stap 7: Sensorknooppuntcode

#erbij betrekken

#include //Bibliotheken voor LoRa #include "DHT.h" #define DHTPIN 4 //pin waar de dht11 is aangesloten DHT dht(DHTPIN, DHT11); //definieer de pinnen die worden gebruikt door de LoRa-transceivermodule #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 //433E6 voor Azië, 866E6 voor Europa, 915E6 voor Noord-Amerika // pakketteller int readingID = 0; int-teller = 0; Tekenreeks LoRaMessage = ""; vlottertemperatuur = 0; vlottervochtigheid = 0; // Initialiseer LoRa-module void startLoRA () { LoRa.setPins (ss, rst, dio0); //setup LoRa transceiver module while (!LoRa.begin(BAND) && counter <10) {Serial.print("."); teller++; vertraging (500); } if (counter == 10) { // Verhogen readingID bij elke nieuwe reading readingID++; Serial.println ("Starten van LoRa is mislukt!"); } Serial.println ("LoRa-initialisatie OK!"); vertraging (2000); } void startDHT() {if (isnan(vochtigheid) || isnan(temperatuur)) {Serial.println("Kan niet lezen van DHT-sensor!"); opbrengst; } } void getReadings(){ vochtigheid = dht.readHumidity(); temperatuur = dht.readTemperature(); Serial.print(F("Vochtigheid: ")); Seriële.afdruk (vochtigheid); Serial.print(F("% temperatuur: ")); Seriële.afdruk (temperatuur); Serial.println(F("°C")); } void sendReadings () { LoRaMessage = String (readingID) + "/" + String (temperatuur) + "&" + String (vochtigheid); // Stuur LoRa-pakket naar ontvanger LoRa.beginPacket (); LoRa.print (LoRaMessage); LoRa.endPacket(); Serial.print("Verzendpakket: "); Serial.println(readingID); leesID++; Serial.println (LoRaMessage); } void setup () { // initialiseer Serial Monitor Serial.begin (115200); dht.begin(); startDHT(); startLoRA(); } void loop() { getReadings(); sendLezingen(); vertraging (500); }

Stap 8: Bewaak gegevens op Thingspeak Server

Gegevens bewaken op Thingspeak Server
Gegevens bewaken op Thingspeak Server
Gegevens bewaken op Thingspeak Server
Gegevens bewaken op Thingspeak Server

Nadat de code is geüpload, kunt u de seriële monitor openen op zowel het gateway- als het sensorknooppuntcircuit. U zult gegevens verzenden en ontvangen als de code correct is. Nu kunt u Thingspeak Private View bezoeken. Daar kunt u zien dat de gegevens voor pakketnummer, temperatuur, vochtigheid en gateway worden geüpload na een interval van 15 seconden.

Stap 9: Referenties

1.

2.

Aanbevolen: