Բովանդակություն:

ESP32 Lora Thingspeak Gateway սենսորային հանգույցով. 9 քայլ
ESP32 Lora Thingspeak Gateway սենսորային հանգույցով. 9 քայլ
Anonim
ESP32 Lora Thingspeak Gateway սենսորային հանգույցով
ESP32 Lora Thingspeak Gateway սենսորային հանգույցով

այս IoT նախագծում ես նախագծեցի ESP32 LoRa Gateway և նաև ESP32 LoRa Sensor Node ՝ մի քանի կիլոմետր հեռավորությունից անլար ընթերցման տվիչը վերահսկելու համար: Ուղարկողը կկարդա խոնավության և ջերմաստիճանի տվյալները ՝ օգտագործելով DHT11 ցուցիչ: Այնուհետեւ այն փոխանցում է տվյալները LoRa ռադիոյի միջոցով: Տվյալները ստացվում են ստացողի մոդուլով: Ստացողն այնուհետև որոշակի ընդմիջումից հետո տվյալները կուղարկի Thingspeak սերվերին:

Քայլ 1: Պահանջվում են բաղադրիչներ

1. ESP32 խորհուրդ - 2

2. Lora մոդուլ SX1278/SX1276

3. DHT11 Խոնավության ջերմաստիճանի տվիչ

4. Հացաթուղթ

5. Jumper լարերի միացում

Քայլ 2: Պահանջվող գրադարանների տեղադրում

Նախ պետք է տեղադրել տարբեր գրադարաններ.

1. DHT11 գրադարան

2. LoRa գրադարան

Քայլ 3. ESP32 LoRa Thingspeak Gateway

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

Այժմ եկեք տեսնենք ESP32 LoRa Gateway & Sensor Node- ի կառուցման համար ուղարկողի և ստացողի սխեման: Ես երկուսն էլ հավաքեցի հացահատիկի վրա: Եթե ցանկանում եք, կարող եք այն պատրաստել PCB- ով:

Ահա ESP32 LoRa մոդուլ SX1278 Gateway Circuit: Այս մասը աշխատում է որպես ընդունիչ: Խոնավության և ջերմաստիճանի տվյալները ստացվում են LoRa ռադիոյի միջոցով և վերբեռնվում Thingspeak սերվերում:

Քայլ 4: ESP32 LoRa ցուցիչ հանգույց

ESP32 LoRa սենսորային հանգույց
ESP32 LoRa սենսորային հանգույց
ESP32 LoRa սենսորային հանգույց
ESP32 LoRa սենսորային հանգույց

Ահա ESP32 LoRa ցուցիչ հանգույցի միացում DHT11 տվիչով: Այս մասը աշխատում է որպես հաղորդիչ: Խոնավության և ջերմաստիճանի տվյալները կարդացվում են DHT11 Humidity Temperature Sensor- ով և փոխանցվում են LoRa ռադիոյի միջոցով:

Քայլ 5: Thingspeak- ի կարգավորում

Setting Up Thingspeak
Setting Up Thingspeak

Thingspeak սերվերի սենսորային տվյալները վերահսկելու համար նախ անհրաժեշտ է կարգավորել Thingspeak- ը: Thingspeak սերվերը կարգավորելու համար այցելեք https://thingspeak.com/: Ստեղծեք հաշիվ կամ պարզապես մուտք գործեք, եթե հաշիվը ստեղծել եք ավելի վաղ: Այնուհետև ստեղծեք նոր ալիք ՝ հետևյալ մանրամասներով:

Քայլ 6: Դարպասի ծածկագիր

#ներառում

// LoRa- ի գրադարաններ #ներառել #ներառել // սահմանել LoRa հաղորդիչ մոդուլի կողմից օգտագործվող կապերը #սահմանել ss 5 #սահմանել առաջին 14 #սահմանել dio0 2 #սահմանել BAND 433E6 // 433E6 Ասիայի համար, 866E6 Եվրոպայի համար, 915E6 Հյուսիսային Ամերիկայի համար // Փոխարինեք ձեր ցանցի հավատարմագրերով String apiKey = "14K8UL2QEK8BTHN6"; // Մուտքագրեք ձեր Գրելու API բանալին ThingSpeak const char *ssid = "Wifi SSID"; // փոխարինել ձեր wifi ssid և wpa2 բանալին const char *գաղտնաբառ = "Գաղտնաբառ"; const char* սերվեր = "api.thingspeak.com"; WiFiClient հաճախորդ; // Նախաստորագրեք փոփոխականները ՝ LoRa տվյալները int rssi ստանալու և պահպանելու համար; Լարային loRaMessage; Լարային ջերմաստիճան; Լարային խոնավություն; Լարային ընթերցում ID; // Տեղապահը փոխարինում է DHT արժեքներով Լարային պրոցեսոր (const String & var) {//Serial.println(var); if (var == "TEMPERATURE") {վերադարձի ջերմաստիճան; } else if (var == "HUMIDITY") {վերադարձնել խոնավությունը; } else if (var == "RRSI") {return String (rssi); } return String (); } void setup () {Serial.begin (115200); int հաշվիչ; // LoRa.setPins մոդուլի LoRa.setPins (ss, rst, dio0); // կարգավորել LoRa հաղորդիչ մոդուլը մինչ (! LoRa.begin (BAND) && հաշվիչ <10) {Serial.print ("."); հաշվիչ ++; ուշացում (2000); } if (counter == 10) {// ReadID- ի ավելացում յուրաքանչյուր նոր ընթերցման համար Serial.println ("LoRa- ի մեկնարկը ձախողվեց"); } Serial.println ("LoRa Initialization OK!"); ուշացում (2000); // Միացեք Wi-Fi ցանցին SSID- ով և Serial.print գաղտնաբառով («Միացում»); Serial.println (ssid); WiFi.begin (ssid, գաղտնաբառ); while (WiFi.status ()! = WL_CONNECTED) {հետաձգում (2000); Serial.print ("."); } // Տպել տեղական IP հասցեն և սկսել վեբ սերվեր Serial.println (""); Serial.println («WiFi- ն միացված է»); Serial.println ("IP հասցե` "); Serial.println (WiFi.localIP ()); } // Կարդացեք LoRa փաթեթը և ստացեք տվիչների ընթերցումները void loop () {int packetSize = LoRa.parsePacket (); if (packetSize) {Serial.print («Lora փաթեթը ստացվել է»); while (LoRa.available ()) // կարդալ փաթեթ {String LoRaData = LoRa.readString (); Serial.print (LoRaData); int pos1 = LoRaData.indexOf ('/'); int pos2 = LoRaData.indexOf ('&'); readID = LoRaData.substring (0, pos1); // Ստացեք readID ջերմաստիճան = LoRaData.substring (pos1 +1, pos2); // Ստացեք ջերմաստիճանի խոնավություն = LoRaData.substring (pos2+1, LoRaData.length ()); // Ստացեք խոնավություն} rssi = LoRa.packetRssi (); // Ստացեք RSSI Serial.print ("RSSI- ով"); Serial.println (rssi); } if (client.connect (սերվեր, 80)) // "184.106.153.149" կամ api.thingspeak.com {String postStr = apiKey; postStr += "& դաշտ 1 ="; postStr += Լար (ընթերցման ID); postStr += "& դաշտ 2 ="; postStr += լարային (ջերմաստիճան); postStr += "& field3 ="; postStr += լարային (խոնավություն); postStr += "& դաշտ 4 ="; postStr += Լար (rssi); postStr += "\ r / n / r / n / r / n / r / n"; client.print ("POST /update HTTP /1.1 / n"); client.print ("Հաղորդավար` api.thingspeak.com / n "); client.print ("Միացում. փակել / n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Content-Type: application/x-www-form-urlencoded / n"); client.print ("Բովանդակություն-երկարություն."); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); } // ուշացում (30000); }

Քայլ 7: Սենսորային հանգույցի կոդ

#ներառում

#ներառել // LoRa- ի գրադարաններ #ներառել «DHT.h» #սահմանել DHTPIN 4 // քորոց, որտեղ dht11- ը միացված է DHT dht (DHTPIN, DHT11); // սահմանել LoRa հաղորդիչ մոդուլի կողմից օգտագործվող կապում #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 Ասիայի համար, 866E6 Եվրոպայի համար, 915E6 Հյուսիսային Ամերիկայի համար // փաթեթային հաշվիչ int ընթերցում ID = 0; int հաշվիչ = 0; Լարային LoRaMessage = ""; բոց ջերմաստիճանը = 0; բոց խոնավություն = 0; // Նախաստորագրեք LoRa մոդուլը void startLoRA () {LoRa.setPins (ss, rst, dio0); // կարգավորել LoRa հաղորդիչ մոդուլը մինչ (! LoRa.begin (BAND) && հաշվիչ <10) {Serial.print ("."); հաշվիչ ++; ուշացում (500); } if (counter == 10) {// ReadID- ի ավելացում յուրաքանչյուր նոր ընթերցման համար ID ++; Serial.println («LoRa- ի մեկնարկը ձախողվեց»); } Serial.println ("LoRa Initialization OK!"); ուշացում (2000); } void startDHT () {if (isnan (խոնավություն) || isnan (ջերմաստիճան)) {Serial.println ("Չհաջողվեց կարդալ DHT սենսորից"); վերադարձ; }} void getReadings () {խոնավություն = dht.readHumidity (); ջերմաստիճան = dht.readTemperature (); Serial.print (F ("Խոնավություն")); Serial.print (խոնավություն); Serial.print (F ("% peratերմաստիճանը.")); Serial.print (ջերմաստիճան); Serial.println (F ("° C")); } void sendReadings () {LoRaMessage = Լար (ընթերցում ID) + "/" + Լար (ջերմաստիճան) + "&" + Լար (խոնավություն); // LoRa փաթեթն ուղարկեք LoRa.beginPacket ստացողին (); LoRa.print (LoRaMessage); LoRa.endPacket (); Serial.print («Փաթեթ ուղարկելը.»); Serial.println (readID); ընթերցում ID ++; Serial.println (LoRaMessage); } void setup () {// սկզբնականացնել Serial Monitor Serial.begin (115200); dht.begin (); startDHT (); startLoRA (); } void loop () {getReadings (); sendReadings (); ուշացում (500); }

Քայլ 8: Վերահսկեք տվյալները Thingspeak սերվերի վրա

Վերահսկեք տվյալները Thingspeak սերվերի վրա
Վերահսկեք տվյալները Thingspeak սերվերի վրա
Վերահսկեք տվյալները Thingspeak սերվերի վրա
Վերահսկեք տվյալները Thingspeak սերվերի վրա

Երբ ծածկագիրը վերբեռնվի, կարող եք բացել Սերիական մոնիտորը ինչպես Gateway & Sensor Node Circuit- ում: Դուք կուղարկեք և կստանաք տվյալներ, եթե ծածկագիրը ճիշտ է: Այժմ կարող եք այցելել Thingspeak Private View: Այնտեղ կարող եք տեսնել Փաթեթի համարի, ջերմաստիճանի, խոնավության և դարպասի տվյալները վերբեռնվում են 15 վայրկյան ընդմիջումից հետո:

Քայլ 9: Հղումներ

1.

2.

Խորհուրդ ենք տալիս: