Inhoudsopgave:
- Stap 1: Vereiste componenten
- Stap 2: De vereiste bibliotheken installeren
- Stap 3: ESP32 LoRa Thingspeak Gateway
- Stap 4: ESP32 LoRa-sensorknooppunt
- Stap 5: Thingspeak instellen
- Stap 6: Gatewaycode
- Stap 7: Sensorknooppuntcode
- Stap 8: Bewaak gegevens op Thingspeak Server
- Stap 9: Referenties
Video: ESP32 Lora Thingspeak Gateway met sensorknooppunt - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
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
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
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
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
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:
Lora Gateway (Dragino LG01-P): 6 stappen
Lora Gateway (Dragino LG01-P): LoRa es een rode LPWAN, por sus siglas en inglés (LOW POWER WIDE AREA NETWORK). Es una red de largo alcance y bajo consumo de energy, ideal para dispositivos IoT. Entre las aplicaciones más comunes se encuentran; Ciudades inteligentes, Landbouw
Hoe u uw eigen WIFI-gateway kunt maken om uw Arduino op een IP-netwerk aan te sluiten? 11 stappen (met afbeeldingen)
Hoe maak je je eigen wifi-gateway om je Arduino met een IP-netwerk te verbinden?: Zoals zoveel mensen denk je dat Arduino een zeer goede oplossing is voor domotica en robotica! Maar op het gebied van communicatie komen Arduino's gewoon met seriële verbindingen. Ik werk aan een robot die permanent verbonden moet zijn met een server die ar
Aan de slag met ESP32 - ESP32-kaarten installeren in Arduino IDE - ESP32-knippercode: 3 stappen
Aan de slag met ESP32 | ESP32-kaarten installeren in Arduino IDE | ESP32-knippercode: in deze instructie zullen we zien hoe we met esp32 kunnen werken en hoe we esp32-kaarten in Arduino IDE kunnen installeren en we zullen esp 32 programmeren om knippercode uit te voeren met behulp van arduino ide
ESP32 met E32-433T LoRa-module zelfstudie - LoRa Arduino-interface: 8 stappen
ESP32 met E32-433T LoRa-module zelfstudie | LoRa Arduino-interface: Hé, wat is er, jongens! Akarsh hier van CETech. Dit project van mij is een interface met de E32 LoRa-module van eByte, een krachtige 1-watt transceivermodule met een ESP32 met behulp van Arduino IDE. We begrepen de werking van de E32 in onze laatste tutorial
Huishoudelijke apparaten bedienen via LoRa - LoRa in Domotica - LoRa-afstandsbediening: 8 stappen
Huishoudelijke apparaten bedienen via LoRa | LoRa in Domotica | LoRa-afstandsbediening: bedien en automatiseer uw elektrische apparaten vanaf lange afstanden (kilometers) zonder de aanwezigheid van internet. Dit kan via LoRa! Hé, wat is er, jongens? Akarsh hier van CETech. Ook deze print heeft een OLED-display en 3 relais die een