Агуулгын хүснэгт:

Мэдрэгчийн зангилаа бүхий ESP32 Lora Thingspeak гарц: 9 алхам
Мэдрэгчийн зангилаа бүхий ESP32 Lora Thingspeak гарц: 9 алхам

Видео: Мэдрэгчийн зангилаа бүхий ESP32 Lora Thingspeak гарц: 9 алхам

Видео: Мэдрэгчийн зангилаа бүхий ESP32 Lora Thingspeak гарц: 9 алхам
Видео: OptoCoupler ATX PSU vs NodeMCU - PSU Series #2 (Subtittled) 2024, Арваннэгдүгээр
Anonim
Мэдрэгч зангилаатай ESP32 Lora Thingspeak гарц
Мэдрэгч зангилаатай ESP32 Lora Thingspeak гарц

Энэхүү IoT төсөлд би ESP32 LoRa Gateway болон ESP32 LoRa Sensor Node -ийг зохион байгуулж, мэдрэгчийг хэдэн км -ийн зайнаас утасгүй хянах боломжтой болсон. Илгээгч нь DHT11 Sensor ашиглан чийгшил, температурын өгөгдлийг унших болно. Дараа нь өгөгдлийг LoRa Radio -ээр дамжуулдаг. Мэдээллийг хүлээн авагчийн модуль хүлээн авдаг. Хүлээн авагч нь тодорхой хугацааны дараа өгөгдлийг Thingspeak сервер рүү илгээх болно.

Алхам 1: Шаардлагатай бүрэлдэхүүн хэсгүүд

1. ESP32 самбар - 2

2. Лора модуль SX1278/SX1276

3. DHT11 чийгшлийн температур мэдрэгч

4. Талхны самбар

5. Холбогч утас холбох

Алхам 2: Шаардлагатай номын санг суулгах

Бид эхлээд өөр өөр номын санг суулгах хэрэгтэй:

1. DHT11 номын сан

2. LoRa номын сан

Алхам 3: ESP32 LoRa Thingspeak гарц

ESP32 LoRa Thingspeak гарц
ESP32 LoRa Thingspeak гарц
ESP32 LoRa Thingspeak гарц
ESP32 LoRa Thingspeak гарц

Одоо ESP32 LoRa гарц ба мэдрэгчийн зангилаа барих илгээгч ба хүлээн авагчийн хэлхээг үзье. Би схемийг хоёуланг нь талхны самбар дээр угсарсан. Хэрэв та хүсвэл PCB дээр хийж болно.

Энд ESP32 LoRa Module SX1278 Gateway Circuit байна. Энэ хэсэг нь хүлээн авагчийн үүрэг гүйцэтгэдэг. Чийгшил, температурын өгөгдлийг LoRa Radio ашиглан хүлээн авч Thingspeak сервер рүү байршуулдаг.

Алхам 4: ESP32 LoRa мэдрэгчийн зангилаа

ESP32 LoRa мэдрэгчийн зангилаа
ESP32 LoRa мэдрэгчийн зангилаа
ESP32 LoRa мэдрэгчийн зангилаа
ESP32 LoRa мэдрэгчийн зангилаа

DHT11 мэдрэгч бүхий ESP32 LoRa мэдрэгчийн зангилааны хэлхээг энд оруулав. Энэ хэсэг нь дамжуулагчаар ажилладаг. Чийглэг ба температурын өгөгдлийг DHT11 чийгшлийн температур мэдрэгч уншиж, LoRa радио ашиглан дамжуулдаг.

Алхам 5: Thingspeak -ийг тохируулах

Thingspeak -ийг тохируулж байна
Thingspeak -ийг тохируулж байна

Thingspeak сервер дээрх мэдрэгчийн өгөгдлийг хянахын тулд та эхлээд Thingspeak -ийг тохируулах хэрэгтэй. Thingspeak серверийг тохируулахын тулд https://thingspeak.com/ хаягаар зочилно уу. Бүртгэл үүсгэх эсвэл хэрэв та өмнө нь данс үүсгэсэн бол зүгээр л нэвтэрнэ үү. Дараа нь дараах дэлгэрэнгүй мэдээллийг агуулсан шинэ суваг үүсгэнэ үү.

Алхам 6: Гарцын код

#оруулах

// LoRa номын сангууд #include #include // LoRa дамжуулагч модульд ашиглагддаг тээглүүрүүдийг тодорхойлох #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 түлхүүр const char *password = "Нууц үг" -ээр солино уу; const char* server = "api.thingspeak.com"; WiFiClient үйлчлүүлэгч; // LoRa өгөгдлийг int rssi авах, хадгалахын тулд хувьсагчдыг эхлүүлэх; LoRaMessage мөр; Мөрний температур; Утасны чийгшил; String унших ID; // Орлуулагчийг DHT утгуудаар солино String процессор (const String & var) {//Serial.println(var); if (var == "TEMPERATURE") {буцах температур; } else if (var == "HUMIDITY") {буцах чийгшил; } else if (var == "RRSI") {return String (rssi); } буцах String (); } void setup () {Serial.begin (115200); int тоолуур; // LoRa дамжуулагч модулийг тохируулах LoRa.setPins (ss, rst, dio0); // LoRa дамжуулагч модулийг тохируулах үед (! LoRa.begin (BAND) && тоолуур <10) {Serial.print ("."); тоолуур ++; саатал (2000); } if (counter == 10) {// Serial.println шинэ унших бүр дээр унших ID -г нэмэгдүүлэх ("LoRa -г эхлүүлж чадсангүй!"); } Serial.println ("LoRa эхлүүлэх OK!"); саатал (2000); // SSID болон нууц үгээр Wi-Fi сүлжээнд холбогдох 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 ("Лора пакет хүлээн авсан:"); while (LoRa.available ()) // Пакетыг унших {String LoRaData = LoRa.readString (); Serial.print (LoRaData); int pos1 = LoRaData.indexOf ('/'); int pos2 = LoRaData.indexOf ('&'); унших ID = 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 (унших ID); postStr += "& field2 ="; postStr += String (температур); 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 ("Агуулгын төрөл: application/x-www-form-urlencoded / n"); client.print ("Агуулга-Урт:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); } // саатал (30000); }

Алхам 7: Мэдрэгчийн зангилааны код

#оруулах

#include // LoRa -ийн номын сангууд "DHT.h" -ийг оруулаарай #DHTPIN 4 -ийг тодорхойлно // dht11 -ийг DHT dht (DHTPIN, DHT11) холбосон зүү; // LoRa дамжуулагч модульд ашиглагддаг тээглүүрүүдийг тодорхойлох #define ss 5 #define rst 14 #define dio0 2 #deandine BAND 433E6 // 433E6 Азид, Европт 866E6, Хойд Америкт 915E6 // packet counter int readingID = 0; int тоолуур = 0; LoRaMessage мөр = ""; хөвөх температур = 0; хөвөх чийгшил = 0; // LoLa модулийг void startLoRA () {LoRa.setPins (ss, rst, dio0) эхлүүлэх; // LoRa дамжуулагч модулийг тохируулах үед (! LoRa.begin (BAND) && тоолуур <10) {Serial.print ("."); тоолуур ++; саатал (500); } if (counter == 10) {// Шинэ унших бүр дээр унших ID -г нэмэгдүүлэх +ID; Serial.println ("LoRa -г эхлүүлж чадсангүй!"); } Serial.println ("LoRa эхлүүлэх OK!"); саатал (2000); } void startDHT () {if (isnan (чийгшил) || isnan (температур)) {Serial.println ("DHT мэдрэгчээс уншиж чадсангүй!"); буцах; }} void getReadings () {чийгшил = dht.readHumidity (); температур = dht.readTemperature (); Serial.print (F ("Чийгшил:")); Цуврал хэвлэх (чийгшил); Serial.print (F ("% Температур:")); Цуврал хэвлэх (температур); Serial.println (F ("° C")); } void sendReadings () {LoRaMessage = String (унших ID) + "/" + мөр (температур) + "&" + мөр (чийгшил); // LoRa пакетийг хүлээн авагч руу LoRa.beginPacket () руу илгээх; LoRa.print (LoRaMessage); LoRa.endPacket (); Serial.print ("Пакет илгээж байна:"); Serial.println (унших ID); унших 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 сервер дээрх өгөгдлийг хянах

Кодыг байршуулсны дараа та гарц ба мэдрэгчийн зангилааны хэлхээний аль алинд нь цуваа мониторыг нээж болно. Хэрэв код зөв бол та өгөгдлийг илгээх, хүлээн авах болно. Та одоо Thingspeak Private View -д зочлох боломжтой боллоо. Тэнд та пакетийн дугаар, температур, чийгшил, гарцын өгөгдлийг 15 секундын дараа байршуулж байгааг харах боломжтой.

Алхам 9: Ашигласан материал

1.

2.

Зөвлөмж болгож буй: