Satura rādītājs:

ESP32 Lora Thingspeak vārteja ar sensora mezglu: 9 soļi
ESP32 Lora Thingspeak vārteja ar sensora mezglu: 9 soļi

Video: ESP32 Lora Thingspeak vārteja ar sensora mezglu: 9 soļi

Video: ESP32 Lora Thingspeak vārteja ar sensora mezglu: 9 soļi
Video: Проект шлюза LoRa to WiFi - ESP32, 2-канальный шлюз LoRa #short #Shorts 2024, Novembris
Anonim
ESP32 Lora Thingspeak vārteja ar sensora mezglu
ESP32 Lora Thingspeak vārteja ar sensora mezglu

Šajā IoT projektā es izstrādāju ESP32 LoRa vārteju un arī ESP32 LoRa sensora mezglu, lai bezvadu režīmā uzraudzītu sensora rādījumus no dažiem kilometriem. Sūtītājs nolasīs mitruma un temperatūras datus, izmantojot DHT11 sensoru. Pēc tam tas pārraida datus, izmantojot LoRa radio. Datus saņem uztvērēja modulis. Pēc tam uztvērējs pēc noteikta laika nosūtīs datus uz Thingspeak Server.

1. darbība. Nepieciešamās sastāvdaļas

1. ESP32 padome - 2

2. Lora modulis SX1278/SX1276

3. DHT11 mitruma temperatūras sensors

4. Maizes dēlis

5. Jumper vadu savienošana

2. darbība. Nepieciešamo bibliotēku instalēšana

Vispirms mums jāinstalē dažādas bibliotēkas:

1. DHT11 bibliotēka

2. LoRa bibliotēka

3. darbība: ESP32 LoRa Thingspeak vārteja

ESP32 LoRa Thingspeak vārteja
ESP32 LoRa Thingspeak vārteja
ESP32 LoRa Thingspeak vārteja
ESP32 LoRa Thingspeak vārteja

Tagad apskatīsim sūtītāja un uztvērēja ķēdi ESP32 LoRa vārtejas un sensora mezgla veidošanai. Es samontēju abas shēmas uz maizes dēļa. Ja vēlaties, varat to izgatavot uz PCB.

Šeit ir ESP32 LoRa moduļa SX1278 vārtejas shēma. Šī daļa darbojas kā uztvērējs. Dati par mitrumu un temperatūru tiek saņemti, izmantojot LoRa Radio un augšupielādēti Thingspeak serverī.

4. solis: ESP32 LoRa sensora mezgls

ESP32 LoRa sensora mezgls
ESP32 LoRa sensora mezgls
ESP32 LoRa sensora mezgls
ESP32 LoRa sensora mezgls

Šeit ir ESP32 LoRa sensora mezgla ķēde ar DHT11 sensoru. Šī daļa darbojas kā raidītājs. Mitruma un temperatūras datus nolasa DHT11 mitruma temperatūras sensors un pārsūta, izmantojot LoRa radio.

5. darbība: iestatiet Thingspeak

Thingspeak iestatīšana
Thingspeak iestatīšana

Lai uzraudzītu sensoru datus Thingspeak serverī, vispirms ir jāiestata Thingspeak. Lai iestatītu Thingspeak serveri, apmeklējiet vietni https://thingspeak.com/. Izveidojiet kontu vai vienkārši pierakstieties, ja kontu izveidojāt agrāk. Pēc tam izveidojiet jaunu kanālu ar šādu informāciju.

6. darbība: vārtejas kods

#iekļaut

// Bibliotēkas LoRa #include #include // definējiet LoRa raiduztvērēja moduļa izmantotās tapas #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 Āzijai, 866E6 Eiropai, 915E6 Ziemeļamerikai // Aizstāt ar tīkla akreditācijas datiem String apiKey = "14K8UL2QEK8BTHN6"; // Ievadiet savu rakstīšanas API atslēgu no ThingSpeak const char *ssid = "Wifi SSID"; // aizstāt ar savu wifi ssid un wpa2 atslēgu const char *password = "Parole"; const char* serveris = "api.thingspeak.com"; WiFiClient klients; // Inicializēt mainīgos, lai iegūtu un saglabātu LoRa datus int rssi; String loRaMessage; Stīgu temperatūra; Stīgu mitrums; Stīgu lasīšanasID; // Vietturi aizstāj ar DHT vērtībām String procesors (const String & var) {//Serial.println(var); if (var == "TEMPERATURE") {atgriešanās temperatūra; } cits if (var == "HUMIDITY") {atgriešanās mitrums; } else if (var == "RRSI") {return String (rssi); } atgriešanās virkne (); } void setup () {Serial.begin (115200); int skaitītājs; // LoRa raiduztvērēja moduļa iestatīšana LoRa.setPins (ss, rst, dio0); // iestatīt LoRa raiduztvērēja moduli while (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); skaitītājs ++; kavēšanās (2000); } if (skaitītājs == 10) {// Lasījuma ID palielināšana katrā jaunā lasījumā Serial.println ("LoRa palaišana neizdevās!"); } Serial.println ("LoRa inicializācija OK!"); kavēšanās (2000); // Savienojuma izveide ar Wi-Fi tīklu ar SSID un paroli Serial.print ("Connecting to"); Serial.println (ssid); WiFi.begin (ssid, parole); while (WiFi.status ()! = WL_CONNECTED) {kavēšanās (2000); Sērijas nospiedums ("."); } // Izdrukājiet vietējo IP adresi un palaidiet tīmekļa serveri Serial.println (""); Serial.println ("savienots WiFi"); Serial.println ("IP adrese:"); Serial.println (WiFi.localIP ()); } // Izlasiet LoRa paketi un iegūstiet sensora rādījumus void loop () {int packetSize = LoRa.parsePacket (); if (packetSize) {Serial.print ("Lora pakete saņemta:"); while (LoRa.available ()) // Lasīt paketi {String LoRaData = LoRa.readString (); Serial.print (LoRaData); int pos1 = LoRaData.indexOf ('/'); int pos2 = LoRaData.indexOf ('&'); lasīšanasID = LoRaData.substring (0, pos1); // Iegūt lasīšanas ID temperatūru = LoRaData.substring (pos1 +1, pos2); // Iegūt temperatūras mitrumu = LoRaData.substring (pos2+1, LoRaData.length ()); // Iegūt mitrumu} rssi = LoRa.packetRssi (); // Iegūt RSSI Serial.print ("ar RSSI"); Serial.println (rssi); } if (client.connect (server, 80)) // "184.106.153.149" vai api.thingspeak.com {String postStr = apiKey; postStr += "& lauks1 ="; postStr += String (lasīšanas ID); postStr += "& lauks2 ="; postStr += String (temperatūra); postStr += "& lauks3 ="; postStr += String (mitrums); postStr += "& field4 ="; postStr += String (rssi); postStr += "\ r / n / r / n / r / n / r / n"; client.print ("POST /atjaunināt HTTP /1.1 / n"); client.print ("Saimnieks: api.thingspeak.com / n"); client.print ("Savienojums: aizvērt / n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Content-Type: application/x-www-form-urlencoded / n"); client.print ("Content-Length:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); } // kavēšanās (30000); }

7. darbība: sensora mezgla kods

#iekļaut

#iekļaut // Bibliotēkas LoRa #iekļaut "DHT.h" #define DHTPIN 4 // pin, kur dht11 ir savienots DHT dht (DHTPIN, DHT11); // definēt LoRa raiduztvērēja moduļa izmantotās tapas #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 Āzijai, 866E6 Eiropai, 915E6 Ziemeļamerikai // pakešu skaitītājs int readingID = 0; int skaitītājs = 0; String LoRaMessage = ""; pludiņa temperatūra = 0; pludiņa mitrums = 0; // Inicializēt LoRa moduli void startLoRA () {LoRa.setPins (ss, rst, dio0); // iestatīt LoRa raiduztvērēja moduli while (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); skaitītājs ++; kavēšanās (500); } if (skaitītājs == 10) {// Palieliniet lasīšanas ID katru jaunu lasīšanas rādījumu ID ++; Serial.println ("LoRa palaišana neizdevās!"); } Serial.println ("LoRa inicializācija OK!"); kavēšanās (2000); } void startDHT () {if (isnan (mitrums) || isnan (temperatūra)) {Serial.println ("Neizdevās nolasīt no DHT sensora!"); atgriešanās; }} void getReadings () {mitrums = dht.readHumidity (); temperatūra = dht.readTemperature (); Sērijas nospiedums (F ("Mitrums:")); Sērijas nospiedums (mitrums); Sērijas nospiedums (F ("% temperatūra:")); Sērijas nospiedums (temperatūra); Sērijas.println (F ("° C")); } void sendReadings () {LoRaMessage = String (readingID) + "/" + String (temperatūra) + "&" + String (mitrums); // Sūtīt LoRa paketi uztvērējam LoRa.beginPacket (); LoRa.print (LoRaMessage); LoRa.endPacket (); Serial.print ("Sūtīšanas pakete:"); Serial.println (lasīšanas ID); lasīšanasID ++; Serial.println (LoRaMessage); } void setup () {// inicializēt Serial Monitor Serial.begin (115200); dht.begin (); startDHT (); startLoRA (); } void loop () {getReadings (); sendReadings (); kavēšanās (500); }

8. darbība: pārraugiet datus vietnē Thingspeak Server

Pārraugiet datus vietnē Thingspeak Server
Pārraugiet datus vietnē Thingspeak Server
Pārraugiet datus vietnē Thingspeak Server
Pārraugiet datus vietnē Thingspeak Server

Kad kods ir augšupielādēts, varat atvērt sērijas monitoru gan vārtejas, gan sensora mezgla ķēdē. Jūs nosūtīsit un saņemsit datus, ja kods ir pareizs. Tagad jūs varat apmeklēt Thingspeak Private View. Tur jūs varat redzēt datus par pakešu skaitu, temperatūru, mitrumu un vārteju, kas tiek augšupielādēti pēc 15 sekunžu intervāla.

9. solis: atsauces

1.

2.

Ieteicams: