ESP32 Lora Thingspeak -gateway met sensorknoop: 9 stappe
ESP32 Lora Thingspeak -gateway met sensorknoop: 9 stappe

Video: ESP32 Lora Thingspeak -gateway met sensorknoop: 9 stappe

Video: ESP32 Lora Thingspeak -gateway met sensorknoop: 9 stappe
Video: Connect to ThingSpeak (ESP32 + Arduino series) 2025, Januarie
Anonim
ESP32 Lora Thingspeak -gateway met sensorknoop
ESP32 Lora Thingspeak -gateway met sensorknoop

in hierdie IoT -projek het ek ESP32 LoRa Gateway en ook ESP32 LoRa Sensor Node ontwerp om die sensorlesing draadloos vanaf 'n paar kilometer afstande te monitor. Die sender sal die humiditeits- en temperatuurdata lees met behulp van die DHT11 -sensor. Dan stuur dit die data via LoRa Radio. Die data word deur die ontvanger -module ontvang. Die ontvanger sal die data dan na 'n sekere interval na die Thingspeak Server stuur.

Stap 1: Vereiste komponente

1. ESP32 -bord - 2

2. Lora Module SX1278/SX1276

3. DHT11 Humiditeit Temperatuur Sensor

4. Broodbord

5. Verbindingsdrade verbind

Stap 2: Die installering van die vereiste biblioteke

Ons moet eers verskillende biblioteke installeer:

1. DHT11 -biblioteek

2. LoRa -biblioteek

Stap 3: ESP32 LoRa Thingspeak Gateway

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

Laat ons nou die sender- en ontvanger -kring sien vir die bou van ESP32 LoRa Gateway & Sensor Node. Ek het albei die kring op 'n broodbord bymekaargemaak. U kan dit op PCB maak as u wil.

Hier is 'n ESP32 LoRa Module SX1278 Gateway Circuit. Hierdie deel werk as 'n ontvanger. Die humiditeits- en temperatuurdata word met behulp van LoRa Radio ontvang en na Thingspeak Server opgelaai.

Stap 4: ESP32 LoRa Sensor Node

ESP32 LoRa Sensor Node
ESP32 LoRa Sensor Node
ESP32 LoRa Sensor Node
ESP32 LoRa Sensor Node

Hier is 'n ESP32 LoRa Sensor Node Circuit met DHT11 Sensor. Hierdie deel werk as 'n sender. Die humiditeits- en temperatuurdata word deur die DHT11 Humidity Temperature Sensor gelees en met behulp van LoRa Radio oorgedra.

Stap 5: Die opstel van Thingspeak

Die opstel van Thingspeak
Die opstel van Thingspeak

Om die sensordata op Thingspeak Server te monitor, moet u eers die Thingspeak instel. Besoek https://thingspeak.com/ om die Thingspeak Server op te stel. Skep 'n rekening of meld net aan as u die rekening vroeër geskep het. Skep dan 'n nuwe kanaal met die volgende besonderhede.

Stap 6: Gateway -kode

#insluit

// Biblioteke vir LoRa #include #include // definieer die penne wat deur die LoRa -ontvangersmodule gebruik word #definieer ss 5 #definieer eerste 14 #definieer dio0 2 #definieer BAND 433E6 // 433E6 vir Asië, 866E6 vir Europa, 915E6 vir Noord -Amerika // Vervang met u netwerkbewyse String apiKey = "14K8UL2QEK8BTHN6"; // Voer u Write API -sleutel in van ThingSpeak const char *ssid = "Wifi SSID"; // vervang met u wifi ssid en wpa2 sleutel const char *password = "Password"; const char* server = "api.thingspeak.com"; WiFiClient -kliënt; // Initialiseer veranderlikes om LoRa -data int rssi te kry en op te slaan; String loRaMessage; Snaar temperatuur; String humiditeit; Snaarlees -ID; // Vervang plekhouer met DHT -waardes String -verwerker (const String & var) {//Serial.println(var); if (var == "TEMPERATUUR") {returtemperatuur; } anders as (var == "HUMIDITY") {humiditeit terugkeer; } anders if (var == "RRSI") {return String (rssi); } terugkeer string (); } ongeldige opstelling () {Serial.begin (115200); int toonbank; // opstel van LoRa transceiver module LoRa.setPins (ss, rst, dio0); // stel LoRa -ontvangersmodule op terwyl (! LoRa.begin (BAND) && teller <10) {Serial.print ("."); toonbank ++; vertraging (2000); } if (counter == 10) {// Verhoog lees -ID op elke nuwe lesing Serial.println ("Begin met LoRa misluk!"); } Serial.println ("LoRa -inisialisering OK!"); vertraging (2000); // Koppel aan 'n Wi-Fi-netwerk met SSID en wagwoord Serial.print ("Koppel aan"); Serial.println (ssid); WiFi.begin (ssid, wagwoord); terwyl (WiFi.status ()! = WL_CONNECTED) {vertraging (2000); Serial.print ("."); } // Druk die plaaslike IP -adres af en begin die webbediener Serial.println (""); Serial.println ("WiFi gekoppel."); Serial.println ("IP -adres:"); Serial.println (WiFi.localIP ()); } // Lees LoRa -pakkie en kry die sensorlesings se leemte -lus () {int packetSize = LoRa.parsePacket (); if (packetSize) {Serial.print ("Lora pakket ontvang:"); terwyl (LoRa.available ()) // Lees pakkie {String LoRaData = LoRa.readString (); Serial.print (LoRaData); int pos1 = LoRaData.indexOf ('/'); int pos2 = LoRaData.indexOf ('&'); readingID = LoRaData.substring (0, pos1); // Kry lees -ID temperatuur = LoRaData.substring (pos1 +1, pos2); // Kry temperatuurvochtigheid = LoRaData.substring (pos2+1, LoRaData.length ()); // Kry humiditeit} rssi = LoRa.packetRssi (); // Kry RSSI Serial.print ("met RSSI"); Serial.println (rssi); } if (client.connect (bediener, 80)) // "184.106.153.149" of api.thingspeak.com {String postStr = apiKey; postStr += "& field1 ="; postStr += String (readingID); postStr += "& field2 ="; postStr += String (temperatuur); postStr += "& field3 ="; postStr += String (humiditeit); postStr += "& field4 ="; postStr += String (rssi); postStr += "\ r / n / r / n / r / n / r / n"; client.print ("POST /opdater HTTP /1.1 / n"); client.print ("Gasheer: api.thingspeak.com / n"); client.print ("verbinding: sluit / n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Inhoudstipe: toepassing/x-www-vorm-urlencoded / n"); client.print ("Inhoudlengte:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); } // vertraging (30000); }

Stap 7: Sensorknooppuntkode

#insluit

#include // Libraries for LoRa #include "DHT.h" #define DHTPIN 4 // pin waar die dht11 gekoppel is DHT dht (DHTPIN, DHT11); // definieer die penne wat deur die LoRa -transceivermodule gebruik word #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 vir Asië, 866E6 vir Europa, 915E6 vir Noord -Amerika // packet counter int readingID = 0; int teller = 0; String LoRaMessage = ""; vlottemperatuur = 0; vlot humiditeit = 0; // Initialiseer LoRa -module ongeldig startLoRA () {LoRa.setPins (ss, rst, dio0); // stel LoRa -ontvangersmodule op terwyl (! LoRa.begin (BAND) && teller <10) {Serial.print ("."); toonbank ++; vertraging (500); } if (teller == 10) {// Verhoog lees -ID op elke nuwe lees -lees -ID ++; Serial.println ("Begin met LoRa misluk!"); } Serial.println ("LoRa -inisialisering OK!"); vertraging (2000); } ongeldig startDHT () {if (isnan (humiditeit) || isnan (temperatuur)) {Serial.println ("Kan nie lees van DHT -sensor nie!"); terugkeer; }} void getReadings () {humiditeit = dht.readHumidity (); temperatuur = dht.readTemperature (); Serial.print (F ("Humidity:")); Reeks.afdruk (humiditeit); Serial.print (F ("% temperatuur:")); Reeks.afdruk (temperatuur); Serial.println (F ("° C")); } void sendReadings () {LoRaMessage = String (readingID) + "/" + String (temperatuur) + "&" + String (humiditeit); // Stuur LoRa -pakkie na ontvanger LoRa.beginPacket (); LoRa.print (LoRaMessage); LoRa.endPacket (); Serial.print ("Pakket stuur:"); Serial.println (lees -ID); readingID ++; Serial.println (LoRaMessage); } ongeldige opstelling () {// initialiseer Serial Monitor Serial.begin (115200); dht.begin (); startDHT (); startLoRA (); } leemte -lus () {getReadings (); sendReadings (); vertraging (500); }

Stap 8: Monitor data op Thingspeak Server

Monitor data op Thingspeak -bediener
Monitor data op Thingspeak -bediener
Monitor data op Thingspeak -bediener
Monitor data op Thingspeak -bediener

Sodra die kode opgelaai is, kan u die seriële monitor op beide die gateway- en sensorknoopbaan oopmaak. U sal data stuur en ontvang as die kode korrek is. Nou kan u Thingspeak Private View besoek. Daar kan u die data vir pakkienommer, temperatuur, humiditeit en gateway na die interval van 15 sekondes sien.

Stap 9: Verwysings

1.

2.