Sensor Node ilə ESP32 Lora Thingspeak Gateway: 9 Addım
Sensor Node ilə ESP32 Lora Thingspeak Gateway: 9 Addım

Video: Sensor Node ilə ESP32 Lora Thingspeak Gateway: 9 Addım

Video: Sensor Node ilə ESP32 Lora Thingspeak Gateway: 9 Addım
Video: Знакомство с платой разработки Heltec LoRa CubeCell HTCC-AB01 2025, Yanvar
Anonim
Sensor Node ilə ESP32 Lora Thingspeak Gateway
Sensor Node ilə ESP32 Lora Thingspeak Gateway

Bu IoT Layihəsində, ESP32 LoRa Gateway və ESP32 LoRa Sensor Nodeunu bir neçə kilometr məsafədən sensorun oxunmasını simsiz olaraq izləmək üçün hazırladım. Göndərən DHT11 Sensorundan istifadə edərək rütubət və temperatur məlumatlarını oxuyacaq. Sonra məlumatları LoRa Radio vasitəsilə ötürür. Məlumat alıcı modulu tərəfindən qəbul edilir. Alıcı müəyyən bir müddətdən sonra məlumatları Thingspeak Server -ə göndərəcək.

Addım 1: Tələb olunan komponentlər

1. ESP32 lövhəsi - 2

2. Lora Modulu SX1278/SX1276

3. DHT11 Nəmlik Temperatur Sensoru

4. Çörək lövhəsi

5. Jumper tellərinin birləşdirilməsi

Addım 2: Lazımi Kitabxanaların Qurulması

Əvvəlcə fərqli kitabxanalar quraşdırmalıyıq:

1. DHT11 Kitabxanası

2. LoRa Kitabxanası

Addım 3: ESP32 LoRa Thingspeak Gateway

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

İndi ESP32 LoRa Gateway & Sensor Node qurmaq üçün göndərən və qəbul edən dövrə baxaq. Hər iki dövrəni bir çörək taxtasına yığdım. İstəyirsinizsə PCB üzərində edə bilərsiniz.

Budur ESP32 LoRa Modulu SX1278 Ağ Geçidi Dövrü. Bu hissə Alıcı kimi işləyir. Rütubət və temperatur məlumatları LoRa Radio istifadə edərək alınır və Thingspeak Server -ə yüklənir.

Addım 4: ESP32 LoRa Sensor Node

ESP32 LoRa Sensor Düyünü
ESP32 LoRa Sensor Düyünü
ESP32 LoRa Sensor Düyünü
ESP32 LoRa Sensor Düyünü

Budur DHT11 Sensorlu bir ESP32 LoRa Sensor Node Dövrü. Bu hissə ötürücü kimi işləyir. Rütubət və temperatur məlumatları DHT11 Nəmlik Temperatur Sensoru tərəfindən oxunur və LoRa Radio istifadə edərək ötürülür.

Addım 5: Thingspeak qurmaq

Thingspeak qurulması
Thingspeak qurulması

Thingspeak Serverdəki Sensor Verilərini izləmək üçün əvvəlcə Thingspeak -ı Qurmalısınız. Thingspeak Serverini qurmaq üçün https://thingspeak.com/ saytına daxil olun. Bir hesab yaradın və ya əvvəllər hesab yaratmısınızsa daxil olun. Sonra aşağıdakı detalları olan yeni bir kanal yaradın.

Addım 6: Ağ Geçidi Kodu

#daxil edin

// LoRa üçün kitabxanalar #daxil edin #daxil edin // LoRa ötürücü modulunun istifadə etdiyi pinləri təyin edin #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 Asiya üçün, Avropa üçün 866E6, Şimali Amerika üçün 915E6 // Şəbəkə etimadnamənizlə əvəz edin String apiKey = "14K8UL2QEK8BTHN6"; // Yazma API açarınızı ThingSpeak const char *ssid = "Wifi SSID" dən daxil edin; // wifi ssid və wpa2 key const *parol = "Şifrə" ilə əvəz edin; const char* server = "api.thingspeak.com"; WiFi müştəri; // LoRa məlumatlarını int rssi almaq və saxlamaq üçün dəyişənləri işə salın; String loRaMessage; String temperaturu; String nəmliyi; String oxuma ID; // Yer tutucunu DHT dəyərləri ilə əvəz edir String prosessoru (const String & var) {//Serial.println(var); if (var == "TEMPERATURE") {qaytarılma temperaturu; } else if (var == "Rütubət") {rütubəti qaytarın; } else if (var == "RRSI") {return String (rssi); } qayıt String (); } void setup () {Serial.begin (115200); int sayğacı; // LoRa qəbuledici modulunun LoRa.setPins qurulması (ss, ilk, dio0); // LoRa qəbuledici modulunu qurarkən (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); sayğac ++; gecikmə (2000); } if (counter == 10) {// Serial.println hər yeni oxunuşda artan oxuma ID ("LoRa'ya Başlanmadı!"); } Serial.println ("LoRa başlatma OK!"); gecikmə (2000); // SSID və parol ilə Wi-Fi şəbəkəsinə qoşulun Serial.print ("Bağlanır"); Serial.println (ssid); WiFi.begin (ssid, parol); while (WiFi.status ()! = WL_CONNECTED) {gecikmə (2000); Serial.print ("."); } // Yerli IP ünvanını çap edin və Serial.println ("") veb serverini işə salın; Serial.println ("WiFi qoşulub."); Serial.println ("IP ünvanı:"); Serial.println (WiFi.localIP ()); } // LoRa paketini oxuyun və sensor oxunuşlarının boşluğunu əldə edin () {int packetSize = LoRa.parsePacket (); if (packetSize) {Serial.print ("Lora paketi alındı:"); while (LoRa.available ()) // Paketi oxuyun {String LoRaData = LoRa.readString (); Serial.print (LoRaData); int pos1 = LoRaData.indexOf ('/'); int pos2 = LoRaData.indexOf ('&'); oxuma ID = LoRaData.substring (0, pos1); // ReadID temperaturu alın = LoRaData.substring (pos1 +1, pos2); // İstilik rütubətini əldə edin = LoRaData.substring (pos2+1, LoRaData.length ()); // Nəm alın} rssi = LoRa.packetRssi (); // RSSI Serial.print alın ("RSSI ilə"); Serial.println (rssi); } if (client.connect (server, 80)) // "184.106.153.149" və ya api.thingspeak.com {String postStr = apiKey; postStr += "& field1 ="; postStr += String (oxuma ID); postStr += "& field2 ="; postStr += String (temperatur); postStr += "& field3 ="; postStr += String (rütubət); postStr += "& field4 ="; postStr += String (rssi); postStr += "\ r / n / r / n / r / n / r / n"; client.print ("POST /yeniləmə HTTP /1.1 / n"); client.print ("Host: api.thingspeak.com / n"); client.print ("Bağlantı: yaxın / n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Content-Type: application/x-www-form-urlencoded / n"); client.print ("Məzmun-Uzunluq:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); } // gecikmə (30000); }

Addım 7: Sensor Node Kodu

#daxil edin

#include // LoRa üçün Kitabxanalar #"DHT.h" daxil edin #DHTPIN 4 təyin edin // dht11 -in DHT dht (DHTPIN, DHT11) ilə əlaqəli olduğu pin; // LoRa alıcı -verici modulunun istifadə etdiyi sancaqları təyin edin #define ss 5 #define birinci 14 #define dio0 2 #define BAND 433E6 // 433E6 Asiya üçün, Avropa üçün 866E6, Şimali Amerika üçün 915E6 // packet counter int readingID = 0; int sayğacı = 0; String LoRaMessage = ""; üzmə temperaturu = 0; üzən rütubət = 0; // LoLa modulunun başlanğıcını startLoRA () {LoRa.setPins (ss, rst, dio0); // LoRa qəbuledici modulunu qurarkən (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); sayğac ++; gecikmə (500); } if (counter == 10) {// Hər yeni oxunuşda oxunan ID artır +ID; Serial.println ("LoRa işə salınmadı!"); } Serial.println ("LoRa başlatma OK!"); gecikmə (2000); } etibarsız startDHT () {if (isnan (rütubət) || isnan (temperatur)) {Serial.println ("DHT sensorundan oxunmadı!"); qayıtmaq; }} void getReadings () {nem = dht.readHumidity (); temperatur = dht.readTemperature (); Serial.print (F ("Rütubət:")); Serial çap (rütubət); Serial.print (F ("% Temperatur:")); Serial çap (temperatur); Serial.println (F ("° C")); } void sendReadings () {LoRaMessage = String (oxuma ID) + "/" + String (temperatur) + "&" + String (rütubət); // LoRa paketini LoRa.beginPacket () alıcıya göndərin; LoRa.print (LoRaMessage); LoRa.endPacket (); Serial.print ("Paket göndərilir:"); Serial.println (oxuma ID); oxuma ID ++; Serial.println (LoRaMessage); } void setup () {// Serial Monitor Serial.begin (115200) başlatmaq; dht.begin (); startDHT (); startLoRA (); } void loop () {getReadings (); sendReadings (); gecikmə (500); }

Addım 8: Thingspeak Serverdəki məlumatları izləyin

Thingspeak Serverdəki məlumatları izləyin
Thingspeak Serverdəki məlumatları izləyin
Thingspeak Serverdəki məlumatları izləyin
Thingspeak Serverdəki məlumatları izləyin

Kod yükləndikdən sonra, həm Gateway, həm də Sensor Node Circuit -də Serial Monitoru aça bilərsiniz. Kod düzgündürsə məlumatları göndərəcək və alacaqsınız. İndi Thingspeak Şəxsi Görünüşünü ziyarət edə bilərsiniz. Orada, Paket Nömrəsi, Temperatur, Rütubət və Ağ Geçidi məlumatlarının 15 saniyəlik fasilədən sonra yükləndiyini görə bilərsiniz.

Addım 9: İstinadlar

1.

2.