Mundarija:

Sensorli tugunli ESP32 Lora Thingspeak shlyuzi: 9 qadam
Sensorli tugunli ESP32 Lora Thingspeak shlyuzi: 9 qadam

Video: Sensorli tugunli ESP32 Lora Thingspeak shlyuzi: 9 qadam

Video: Sensorli tugunli ESP32 Lora Thingspeak shlyuzi: 9 qadam
Video: Nerv tizimi fiziologiyasi | Nerv tizimi | Tibbiyot 2024, Noyabr
Anonim
Sensor tugunli ESP32 Lora Thingspeak shlyuzi
Sensor tugunli ESP32 Lora Thingspeak shlyuzi

Ushbu IoT loyihasida men ESP32 LoRa Gateway va ESP32 LoRa Sensor tugunlarini bir necha kilometr masofadan simsiz o'qishni kuzatish uchun ishlab chiqdim. Yuboruvchi DHT11 Sensor yordamida namlik va harorat ma'lumotlarini o'qiydi. Keyin u LoRa Radio orqali ma'lumotlarni uzatadi. Ma'lumotlar qabul qiluvchi moduli tomonidan qabul qilinadi. Qabul qilgich ma'lum vaqtdan keyin ma'lumotlarni Thingspeak Serverga yuboradi.

1 -qadam: zarur komponentlar

1. ESP32 taxtasi - 2

2. Lora moduli SX1278/SX1276

3. DHT11 namlik harorati sensori

4. Non paneli

5. Jumper simlarini ulash

2 -qadam: Kerakli kutubxonalarni o'rnatish

Avval turli kutubxonalarni o'rnatishimiz kerak:

1. DHT11 kutubxonasi

2. LoRa kutubxonasi

3 -qadam: ESP32 LoRa Thingspeak shlyuzi

ESP32 LoRa Thingspeak shlyuzi
ESP32 LoRa Thingspeak shlyuzi
ESP32 LoRa Thingspeak shlyuzi
ESP32 LoRa Thingspeak shlyuzi

Keling, ESP32 LoRa Gateway va Sensor tugunini yaratish uchun yuboruvchi va qabul qiluvchining sxemasini ko'rib chiqaylik. Men ikkala sxemani non taxtasida yig'dim. Agar xohlasangiz, uni PCB -da qilishingiz mumkin.

Bu erda ESP32 LoRa moduli SX1278 shluzi davri. Bu qism qabul qiluvchi sifatida ishlaydi. Namlik va harorat haqidagi ma'lumotlar LoRa Radio yordamida olinadi va Thingspeak Serverga yuklanadi.

4 -qadam: ESP32 LoRa sensorli tugun

ESP32 LoRa sensorli tugun
ESP32 LoRa sensorli tugun
ESP32 LoRa sensorli tugun
ESP32 LoRa sensorli tugun

Bu erda DHT11 sensori bilan ESP32 LoRa sensori tugunlari davri. Bu qism uzatuvchi sifatida ishlaydi. Namlik va harorat ma'lumotlari DHT11 namlik harorati sensori tomonidan o'qiladi va LoRa radiosi orqali uzatiladi.

5 -qadam: Thingspeak -ni sozlash

Thingspeak -ni sozlash
Thingspeak -ni sozlash

Thingspeak serveridagi sensor ma'lumotlarini kuzatish uchun avval Thingspeak -ni sozlash kerak. Thingspeak serverini o'rnatish uchun https://thingspeak.com/ saytiga tashrif buyuring. Hisob qaydnomasini yarating yoki hisobni ilgari yaratgan bo'lsangiz, kiring. Keyin quyidagi ma'lumotlarni o'z ichiga olgan yangi kanal yarating.

6 -qadam: Gateway kodi

#qo'shing

// LoRa kutubxonalari #include #include // LoRa transceiver modulida ishlatiladigan pinlarni aniqlang #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 Osiyo uchun, Evropa uchun 866E6, Shimoliy Amerika uchun 915E6. // Tarmoq ma'lumotlari bilan almashtiring String apiKey = "14K8UL2QEK8BTHN6"; // ThingSpeak const char *ssid = "Wifi SSID" dan Write API kalitini kiriting; // wifi ssid va wpa2 kalitlari bilan almashtiring const char *password = "Parol"; const char* server = "api.thingspeak.com"; WiFiClient mijozi; // LoRa ma'lumotlarini int rssi olish va saqlash uchun o'zgaruvchilarni ishga tushirish; LoRaMessage qatori; String harorati; Ip namligi; String readingID; // to'ldirgichni DHT qiymatlari bilan almashtiradi String protsessori (const String & var) {//Serial.println(var); if (var == "TEMPERATURE") {qaytish harorati; } else if (var == "HUMIDITY") {namlikni qaytarish; } else if (var == "RRSI") {return String (rssi); } qaytish String (); } void setup () {Serial.begin (115200); int hisoblagich; // LoRa qabul qilish modulini o'rnatish LoRa.setPins (ss, rst, dio0); // LoRa qabul qilgich modulini sozlash paytida (! LoRa.begin (BAND) && taymer <10) {Serial.print ("."); hisoblagich ++; kechikish (2000); } if (counter == 10) {// Serial.println ("LoRa ishga tushirilmadi!") har bir yangi o'qishda o'qish identifikatorini oshirish; } Serial.println ("LoRa boshlanishi OK!"); kechikish (2000); // SSID va parol bilan Wi-Fi tarmog'iga ulanish Serial.print ("Ulanish"); Serial.println (ssid); WiFi.begin (ssid, parol); while (WiFi.status ()! = WL_CONNECTED) {kechiktirish (2000); Serial.print ("."); } // Mahalliy IP -manzilni chop eting va Serial.println ("") veb -serverini ishga tushiring; Serial.println ("Wi -Fi ulangan."); Serial.println ("IP -manzil:"); Serial.println (WiFi.localIP ()); } // LoRa paketini o'qing va sensorlar o'qilishini bekor qiling () {int packetSize = LoRa.parsePacket (); if (packetSize) {Serial.print ("Lora paketi qabul qilindi:"); while (LoRa.available ()) // Paketni o'qing {String LoRaData = LoRa.readString (); Serial.print (LoRaData); int pos1 = LoRaData.indexOf ('/'); int pos2 = LoRaData.indexOf ('&'); readID = LoRaData.substring (0, pos1); // ReadID haroratini oling = LoRaData.substring (pos1 +1, pos2); // Harorat namligini oling = LoRaData.substring (pos2+1, LoRaData.length ()); // Namlikni oling} rssi = LoRa.packetRssi (); // RSSI Serial.print -ni oling ("RSSI bilan"); Serial.println (rssi); } if (client.connect (server, 80)) // "184.106.153.149" yoki api.thingspeak.com {String postStr = apiKey; postStr += "& maydon1 ="; postStr += String (o'qish identifikatori); postStr += "& maydon2 ="; postStr += String (harorat); postStr += "& field3 ="; postStr += String (namlik); postStr += "& field4 ="; postStr += String (rssi); postStr += "\ r / n / r / n / r / n / r / n"; client.print ("POST /yangilash HTTP /1.1 / n"); client.print ("Xost: api.thingspeak.com / n"); client.print ("Ulanish: yopish / 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); } // kechikish (30000); }

7 -qadam: Sensor tugunlari kodi

#qo'shing

#include // LoRa uchun kutubxonalar #"DHT.h" ni qo'shing #DHTPIN 4 ni belgilang // dht11 DHT dht (DHTPIN, DHT11) ulangan pinni belgilang; // LoRa qabul qilgich modulida ishlatiladigan pinlarni aniqlang #define ss 5 #define rst 14 #define dio0 2 #deand BAND 433E6 // 433E6 Osiyo uchun, Evropa uchun 866E6, Shimoliy Amerika uchun 915E6 // packet counter int readingID = 0; int hisoblagich = 0; LoRaMessage qatori = ""; suzish harorati = 0; suzuvchi namlik = 0; // LoLa modulini ishga tushirish startLoRA () {LoRa.setPins (ss, rst, dio0); // LoRa qabul qilgich modulini sozlash paytida (! LoRa.begin (BAND) && taymer <10) {Serial.print ("."); hisoblagich ++; kechikish (500); } if (hisoblagich == 10) {// Har bir yangi o'qishda o'qish ID -ni ko'paytirishID ++; Serial.println ("LoRa ishga tushmadi!"); } Serial.println ("LoRa boshlanishi OK!"); kechikish (2000); } void startDHT () {if (isnan (namlik) || isnan (harorat)) {Serial.println ("DHT sensoridan o'qib bo'lmadi!"); qaytish; }} void getReadings () {namlik = dht.readHumidity (); harorat = dht.readTemperature (); Serial.print (F ("Namlik:")); Ketma -ket bosma (namlik); Serial.print (F ("% Harorat:")); Seriyali bosma (harorat); Serial.println (F ("° C")); } void sendReadings () {LoRaMessage = String (readingID) + "/" + String (harorat) + "&" + String (namlik); // LoRa paketini LoRa.beginPacket qabul qiluvchisiga yuborish (); LoRa.print (LoRaMessage); LoRa.endPacket (); Serial.print ("Paket yuborilmoqda:"); Serial.println (o'qish identifikatori); o'qish ID ++; Serial.println (LoRaMessage); } void setup () {// Serial Monitor Serial.begin (115200) ni ishga tushirish; dht.begin (); startDHT (); startLoRA (); } void loop () {getReadings (); sendReadings (); kechikish (500); }

8 -qadam: Thingspeak serveridagi ma'lumotlarni kuzatib boring

Thingspeak serveridagi ma'lumotlarni kuzatish
Thingspeak serveridagi ma'lumotlarni kuzatish
Thingspeak serveridagi ma'lumotlarni kuzatish
Thingspeak serveridagi ma'lumotlarni kuzatish

Kod yuklangandan so'ng, siz ketma -ket monitorni Gateway va Sensor tugunlari davrasida ochishingiz mumkin. Agar kod to'g'ri bo'lsa, siz ma'lumotlarni yuborasiz va qabul qilasiz. Endi siz Thingspeak Private View -ga tashrif buyurishingiz mumkin. U erda siz paketlar soni, harorat, namlik va shlyuz ma'lumotlarini 15 soniyadan so'ng yuklanganini ko'rishingiz mumkin.

9 -qadam: Adabiyotlar

1.

2.

Tavsiya: