Kazalo:

ESP32 Lora Thingspeak Gateway s senzorskim vozliščem: 9 korakov
ESP32 Lora Thingspeak Gateway s senzorskim vozliščem: 9 korakov

Video: ESP32 Lora Thingspeak Gateway s senzorskim vozliščem: 9 korakov

Video: ESP32 Lora Thingspeak Gateway s senzorskim vozliščem: 9 korakov
Video: ESP32 LoRaWAN Gateway tutorial with Sensor Node 2024, Julij
Anonim
ESP32 Lora Thingspeak prehod s senzorskim vozliščem
ESP32 Lora Thingspeak prehod s senzorskim vozliščem

v tem projektu IoT sem zasnoval ESP32 LoRa Gateway in tudi ESP32 LoRa Sensor Node za brezžično spremljanje odčitavanja senzorja z razdalje nekaj kilometrov. Pošiljatelj bo s senzorjem DHT11 prebral podatke o vlažnosti in temperaturi. Nato posreduje podatke prek radia LoRa. Podatke sprejema sprejemniški modul. Prejemnik bo po določenem intervalu podatke poslal na strežnik Thingspeak.

1. korak: potrebne komponente

1. Plošča ESP32 - 2

2. Modul Lora SX1278/SX1276

3. DHT11 Temperaturni senzor vlažnosti

4. Ogledna plošča

5. Priključitev mostičnih žic

2. korak: Namestitev potrebnih knjižnic

Najprej moramo namestiti različne knjižnice:

1. Knjižnica DHT11

2. Knjižnica LoRa

Korak: ESP32 LoRa Thingspeak Gateway

ESP32 LoRa Thingspeak prehod
ESP32 LoRa Thingspeak prehod
ESP32 LoRa Thingspeak prehod
ESP32 LoRa Thingspeak prehod

Zdaj pa poglejmo vezje pošiljatelja in sprejemnika za izgradnjo ESP32 LoRa prehodnega in senzorskega vozlišča. Tako vezje sem sestavil na plošči. Če želite, ga lahko naredite na tiskanem vezju.

Tukaj je vezje prehoda modula ESP32 LoRa SX1278. Ta del deluje kot sprejemnik. Podatki o vlažnosti in temperaturi se sprejemajo z LoRa Radio in nalagajo na strežnik Thingspeak.

4. korak: Senzorsko vozlišče ESP32 LoRa

Senzorsko vozlišče ESP32 LoRa
Senzorsko vozlišče ESP32 LoRa
Senzorsko vozlišče ESP32 LoRa
Senzorsko vozlišče ESP32 LoRa

Tukaj je vezje vozlišča senzorja ESP32 LoRa s senzorjem DHT11. Ta del deluje kot oddajnik. Podatke o vlažnosti in temperaturi odčita DHT11 senzor za temperaturo vlažnosti in jih posreduje prek radia LoRa.

5. korak: Nastavitev Thingspeak

Nastavitev Thingspeak
Nastavitev Thingspeak

Če želite spremljati podatke senzorja na strežniku Thingspeak, morate najprej nastaviti Thingspeak. Če želite nastaviti strežnik Thingspeak, obiščite https://thingspeak.com/. Ustvarite račun ali se preprosto prijavite, če ste račun ustvarili prej. Nato ustvarite nov kanal z naslednjimi podrobnostmi.

6. korak: Koda prehoda

#vključi

// Knjižnice za LoRa #include #include // opredelimo zatiče, ki jih uporablja oddajniški modul LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 za Azijo, 866E6 za Evropo, 915E6 za Severno Ameriko // Zamenjajte z omrežnimi poverilnicami String apiKey = "14K8UL2QEK8BTHN6"; // Vnesite ključ API za pisanje iz ThingSpeak const char *ssid = "Wifi SSID"; // zamenjajte s ključem wifi ssid in wpa2 const char *geslo = "Geslo"; const char* server = "api.thingspeak.com"; Odjemalec WiFiClient; // Inicializirajte spremenljivke za pridobivanje in shranjevanje podatkov LoRa int rssi; Niz loRaMessage; Temperatura strune; Vlažnost strune; Niz za branjeID; // nadomesti nadomestno mesto z vrednostmi DHT String procesor (const String & var) {//Serial.println(var); if (var == "TEMPERATURE") {temperatura povratka; } else if (var == "HUMIDITY") {povratna vlaga; } else if (var == "RRSI") {return String (rssi); } vrni niz (); } void setup () {Serial.begin (115200); int števec; // nastavitev oddajnega modula LoRa LoRa.setPins (ss, rst, dio0); // nastavimo oddajniški modul LoRa while (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); števec ++; zamuda (2000); } if (counter == 10) {// Pri vsakem novem branju Serial.println ("Zagon LoRa ni uspel!"); } Serial.println ("Inicializacija LoRa v redu!"); zamuda (2000); // Povežite se z omrežjem Wi-Fi s SSID in geslom Serial.print ("Povezovanje z"); Serial.println (ssid); WiFi.begin (ssid, geslo); while (WiFi.status ()! = WL_CONNECTED) {zakasnitev (2000); Serial.print ("."); } // Natisnite lokalni naslov IP in zaženite spletni strežnik Serial.println (""); Serial.println ("WiFi povezan."); Serial.println ("naslov IP:"); Serial.println (WiFi.localIP ()); } // Preberite paket LoRa in dobite odčitke senzorja void loop () {int packetSize = LoRa.parsePacket (); if (packetSize) {Serial.print ("Lora paket prejet:"); while (LoRa.available ()) // Branje paketa {String LoRaData = LoRa.readString (); Serial.print (LoRaData); int pos1 = LoRaData.indexOf ('/'); int pos2 = LoRaData.indexOf ('&'); readID = LoRaData.substring (0, pos1); // Dobimo temperaturo branja ID = LoRaData.substring (pos1 +1, pos2); // Dobimo temperaturno vlažnost = LoRaData.substring (pos2+1, LoRaData.length ()); // Dobimo vlažnost} rssi = LoRa.packetRssi (); // Pridobite RSSI Serial.print ("z RSSI"); Serial.println (rssi); } if (client.connect (server, 80)) // "184.106.153.149" ali api.thingspeak.com {String postStr = apiKey; postStr += "& polje1 ="; postStr += niz (branje ID); postStr += "& polje2 ="; postStr += niz (temperatura); postStr += "& field3 ="; postStr += niz (vlažnost); postStr += "& field4 ="; postStr += niz (rssi); postStr += "\ r / n / r / n / r / n / r / n"; client.print ("POST /posodobi HTTP /1.1 / n"); client.print ("Gostitelj: api.thingspeak.com / n"); client.print ("Povezava: zaprta / n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Vrsta vsebine: aplikacija/x-www-form-urlencoded / n"); client.print ("Content-Length:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); } // zakasnitev (30000); }

7. korak: Koda vozlišča senzorja

#vključi

#include // Knjižnice za LoRa #include "DHT.h" #define DHTPIN 4 // pin, kjer je dht11 povezan DHT dht (DHTPIN, DHT11); // definiramo zatiče, ki jih uporablja oddajniški modul LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 za Azijo, 866E6 za Evropo, 915E6 za Severno Ameriko // števec paketov int readingID = 0; int števec = 0; Niz LoRaMessage = ""; plavajoča temperatura = 0; vlažnost plovca = 0; // Inicializiraj modul LoRa void startLoRA () {LoRa.setPins (ss, rst, dio0); // nastavimo oddajniški modul LoRa while (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); števec ++; zamuda (500); } if (counter == 10) {// Povečaj readID pri vsakem novem branju readID ++; Serial.println ("Zagon LoRa ni uspel!"); } Serial.println ("Inicializacija LoRa v redu!"); zamuda (2000); } void startDHT () {if (isnan (vlažnost) || isnan (temperatura)) {Serial.println ("Odčitavanje s senzorja DHT ni uspelo!"); vrnitev; }} void getReadings () {vlažnost = dht.readHumidity (); temperatura = dht.readTemperature (); Serial.print (F ("Vlažnost:")); Serijski.tisk (vlažnost); Serial.print (F ("% Temperatura:")); Serijski.tisk (temperatura); Serial.println (F ("° C")); } void sendReadings () {LoRaMessage = String (readingID) + "/" + String (temperatura) + "&" + String (vlažnost); // pošlji paket LoRa prejemniku LoRa.beginPacket (); LoRa.print (LoRaMessage); LoRa.endPacket (); Serial.print ("Pošiljanje paketa:"); Serial.println (ID branja); branjeID ++; Serial.println (LoRaMessage); } void setup () {// inicializirajte Serial Monitor Serial.begin (115200); dht.begin (); startDHT (); startLoRA (); } void loop () {getReadings (); sendReadings (); zamuda (500); }

8. korak: Spremljajte podatke na strežniku Thingspeak

Spremljajte podatke na strežniku Thingspeak
Spremljajte podatke na strežniku Thingspeak
Spremljajte podatke na strežniku Thingspeak
Spremljajte podatke na strežniku Thingspeak

Ko je koda naložena, lahko odprete serijski monitor v vezju prehoda in senzorskega vozlišča. Podatke boste poslali in prejeli, če je koda pravilna. Zdaj lahko obiščete Thingspeak Private View. Tam lahko vidite podatke za številko paketa, temperaturo, vlažnost in prehod, ki so naloženi po intervalu 15 sekund.

9. korak: Reference

1.

2.

Priporočena: