Мазмуну:

ESP32 Lora Thingspeak шлюзу сенсор түйүнү менен: 9 кадам
ESP32 Lora Thingspeak шлюзу сенсор түйүнү менен: 9 кадам

Video: ESP32 Lora Thingspeak шлюзу сенсор түйүнү менен: 9 кадам

Video: ESP32 Lora Thingspeak шлюзу сенсор түйүнү менен: 9 кадам
Video: Introduction to Heltec LoRa CubeCell Development Board HTCC-AB01 2024, Ноябрь
Anonim
ESP32 Lora Thingspeak Gateway сенсор түйүнү менен
ESP32 Lora Thingspeak Gateway сенсор түйүнү менен

Бул IoT долбоорунда мен ESP32 LoRa Gateway жана ESP32 LoRa Sensor Node бир нече километр аралыктан зымсыз окууну көзөмөлдөө үчүн иштелип чыккан. Жөнөтүүчү DHT11 сенсорунун жардамы менен нымдуулук жана температура маалыматтарды окуйт. Андан кийин ал LoRa радиосу аркылуу маалыматтарды өткөрүп берет. Маалыматтар кабыл алуучу модуль тарабынан кабыл алынат. Кабыл алуучу белгилүү бир интервалдан кийин маалыматты Thingspeak Serverге жөнөтөт.

1 -кадам: компоненттери талап кылынат

1. ESP32 Board - 2

2. Лора модулу 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 шлюзу жана сенсор түйүнүн куруу үчүн жөнөтүүчү менен алуучунун схемасын көрөлү. Мен экөөнү тең нан табакка чогулттум. Кааласаңыз, аны ПХБдан жасай аласыз.

Бул жерде ESP32 LoRa Module SX1278 Gateway Circuit. Бул бөлүк алуучу катары иштейт. Нымдуулук жана температура жөнүндө маалыматтар LoRa Radio аркылуу алынат жана Thingspeak Serverге жүктөлөт.

4 -кадам: ESP32 LoRa сенсор түйүнү

ESP32 LoRa сенсор түйүнү
ESP32 LoRa сенсор түйүнү
ESP32 LoRa сенсор түйүнү
ESP32 LoRa сенсор түйүнү

Бул жерде DHT11 Sensor менен ESP32 LoRa Sensor Node Circuit. Бул бөлүк өткөргүч катары иштейт. Нымдуулук жана температура маалыматтары DHT11 нымдуулук температура сенсору тарабынан окулат жана LoRa радиосунун жардамы менен берилет.

5 -кадам: Thingspeakти орнотуу

Thingspeakти орнотуу
Thingspeakти орнотуу

Thingspeak Serverдеги сенсордук маалыматтарды көзөмөлдөө үчүн, адегенде Thingspeakти орнотушуңуз керек. Thingspeak Serverди орнотуу үчүн https://thingspeak.com/ дарегине баш багыңыз. Аккаунтту түзүңүз же жөн эле кириңиз, эгерде сиз мурда каттоо эсебин түзсөңүз. Андан кийин төмөнкү деталдар менен жаңы канал түзүңүз.

6 -кадам: Gateway Code

#кошуу

// LoRa үчүн китепканалар #кошуу #кошуу // LoRa transceiver модулу колдонгон казыктарды аныктоо #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 Азия үчүн, 866E6 Европа үчүн, 915E6 Түндүк Америка үчүн // Тармактык грамоталарыңыз менен алмаштырыңыз String apiKey = "14K8UL2QEK8BTHN6"; // ThingSpeak const char *ssid = "Wifi SSID" ден жазуу API ачкычыңызды киргизиңиз; // wifi ssid жана wpa2 key const char *password = "Password" менен алмаштырыңыз; const char* server = "api.thingspeak.com"; WiFiClient кардары; // LoRa маалыматтарды int rssi алуу жана сактоо үчүн өзгөрмөлөрдү баштоо; String loRaMessage; String температурасы; Сымдын нымдуулугу; String readingID; // Толтургучту DHT мааниси менен алмаштырат String Processor (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 counter; // LoRa transceiver модулун орнотуу LoRa.setPins (ss, rst, dio0); // LoRa transceiver модулун жөндөп жатканда (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); counter ++; кечигүү (2000); } if (counter == 10) {// Ар бир жаңы окуу боюнча Serial.println ("LoRa башталбай калды!") окуу IDсин көбөйтүү; } 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 пакетин окуңуз жана сенсордун окуусунан боштук циклин алыңыз () {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 ('&'); readingID = 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 (server, 80)) // "184.106.153.149" же api.thingspeak.com {String postStr = apiKey; postStr += "& field1 ="; postStr += String (readID); postStr += "& field2 ="; postStr += Сап (температура); postStr += "& field3 ="; postStr += сап (нымдуулук); postStr += "& field4 ="; postStr += String (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 ("Content-Length:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); } // кечигүү (30000); }

7 -кадам: Sensor Node Code

#кошуу

#include // LoRa үчүн китепканалар #include "DHT.h" #аныктоо DHTPIN 4 // pin, dht11 туташкан жерде DHT dht (DHTPIN, DHT11); // LoRa трансивер модулу колдонгон казыктарды аныктаңыз #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 Азия үчүн, Европа үчүн 866E6, Түндүк Америка үчүн 915E6 // packet counter int readingID = 0; int counter = 0; String LoRaMessage = ""; сүзүү температурасы = 0; калкып нымдуулук = 0; // LoLa модулун баштоо startLoRA () {LoRa.setPins (ss, rst, dio0); // LoRa transceiver модулун жөндөп жатканда (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); counter ++; кечигүү (500); } if (counter == 10) {// Ар бир жаңы окуу боюнча Окууну жогорулатууIDID ++; Serial.println ("LoRa башталбай калды!"); } Serial.println ("LoRa Initialization OK!"); кечигүү (2000); } void startDHT () {if (isnan (нымдуулук) || isnan (температура)) {Serial.println ("DHT сенсорунан окулбай калды!"); кайтуу; }} жараксыз getReadings () {нымдуулук = dht.readHumidity (); температура = dht.readTemperature (); Serial.print (F ("Нымдуулук:")); Serial.print (нымдуулук); Serial.print (F ("% Температура:")); Serial.print (температура); Serial.println (F ("° C")); } void sendReadings () {LoRaMessage = String (readingID) + "/" + String (температура) + "&" + String (нымдуулук); // LoRa пакетин LoRa.beginPacket алуучуга жөнөтүү (); LoRa.print (LoRaMessage); LoRa.endPacket (); Serial.print ("Пакет жөнөтүлүүдө:"); Serial.println (readID); readID ++; Serial.println (LoRaMessage); } void setup () {// Serial Monitor Serial.begin (115200) баштоо; dht.begin (); startDHT (); startLoRA (); } void loop () {getReadings (); sendReadings (); кечигүү (500); }

8 -кадам: Thingspeak Serverдеги маалыматтарды көзөмөлдөө

Thingspeak Serverдеги маалыматтарды көзөмөлдөө
Thingspeak Serverдеги маалыматтарды көзөмөлдөө
Thingspeak Serverдеги маалыматтарды көзөмөлдөө
Thingspeak Serverдеги маалыматтарды көзөмөлдөө

Код жүктөлгөндөн кийин, сиз Gateway жана Sensor Node Circuit'де Сериялык Мониторду ача аласыз. Код туура болсо, сиз маалыматтарды жөнөтөсүз жана аласыз. Эми сиз Thingspeak Private Viewга кире аласыз. Ал жерде пакет номери, температура, нымдуулук жана шлюз боюнча маалыматтар 15 секунддан кийин жүктөлгөнүн көрө аласыз.

9 -кадам: Шилтемелер

1.

2.

Сунушталууда: