بوابة ESP32 Lora Thingspeak مع عقدة المستشعر: 9 خطوات
بوابة ESP32 Lora Thingspeak مع عقدة المستشعر: 9 خطوات

فيديو: بوابة ESP32 Lora Thingspeak مع عقدة المستشعر: 9 خطوات

فيديو: بوابة ESP32 Lora Thingspeak مع عقدة المستشعر: 9 خطوات
فيديو: Introduction to Heltec LoRa CubeCell Development Board HTCC-AB01 2025, كانون الثاني
Anonim
بوابة ESP32 Lora Thingspeak مع عقدة الاستشعار
بوابة ESP32 Lora Thingspeak مع عقدة الاستشعار

في مشروع إنترنت الأشياء هذا ، صممت بوابة ESP32 LoRa وأيضًا عقدة مستشعر ESP32 LoRa لمراقبة قراءة المستشعر لاسلكيًا من مسافة كيلومترات قليلة. سيقرأ المرسل بيانات الرطوبة ودرجة الحرارة باستخدام مستشعر DHT11. ثم ينقل البيانات عبر راديو LoRa. يتم استلام البيانات بواسطة وحدة الاستقبال. سيرسل المتلقي البيانات بعد ذلك إلى خادم Thingspeak بعد فترة زمنية معينة.

الخطوة 1: المكونات المطلوبة

1. مجلس ESP32 - 2

2. وحدة لورا SX1278 / SX1276

3. DHT11 استشعار درجة حرارة الرطوبة

4. اللوح

5. توصيل أسلاك العبور

الخطوة الثانية: تثبيت المكتبات المطلوبة

نحتاج إلى تثبيت مكتبات مختلفة أولاً:

1. مكتبة DHT11

2. مكتبة لورا

الخطوة 3: بوابة ESP32 LoRa Thingspeak

بوابة ESP32 LoRa Thingspeak
بوابة ESP32 LoRa Thingspeak
بوابة ESP32 LoRa Thingspeak
بوابة ESP32 LoRa Thingspeak

الآن دعونا نرى دائرة المرسل والمستقبل لبناء ESP32 LoRa Gateway & Sensor Node. قمت بتجميع كل من الدائرة على لوح التجارب. يمكنك صنعه على ثنائي الفينيل متعدد الكلور إذا كنت تريد ذلك.

هنا دائرة بوابة ESP32 LoRa Module SX1278. هذا الجزء يعمل كجهاز استقبال. يتم تلقي بيانات الرطوبة ودرجة الحرارة باستخدام راديو LoRa وتحميلها على خادم Thingspeak.

الخطوة 4: عقدة مستشعر ESP32 LoRa

عقدة مستشعر لورا ESP32
عقدة مستشعر لورا ESP32
عقدة مستشعر لورا ESP32
عقدة مستشعر لورا ESP32

إليك دائرة عقدة مستشعر ESP32 LoRa مع مستشعر DHT11. هذا الجزء يعمل كجهاز إرسال. تتم قراءة بيانات الرطوبة ودرجة الحرارة بواسطة مستشعر درجة حرارة الرطوبة DHT11 ويتم إرسالها باستخدام راديو LoRa.

الخطوة الخامسة: إعداد الكلام

إعداد الكلام
إعداد الكلام

من أجل مراقبة بيانات المستشعر على خادم Thingspeak ، تحتاج أولاً إلى إعداد Thingspeak. لإعداد خادم Thingspeak ، تفضل بزيارة https://thingspeak.com/. قم بإنشاء حساب أو قم ببساطة بتسجيل الدخول إذا قمت بإنشاء الحساب مسبقًا. ثم قم بإنشاء قناة جديدة بالتفاصيل التالية.

الخطوة 6: كود البوابة

#يشمل

// Libraries for LoRa #include #include // حدد المسامير المستخدمة بواسطة وحدة الإرسال والاستقبال LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 for Asia ، 866E6 for Europe ، 915E6 for North America // استبدال ببيانات اعتماد الشبكة الخاصة بك String apiKey = "14K8UL2QEK8BTHN6" ؛ // أدخل مفتاح كتابة API من ThingSpeak const char * ssid = "Wifi SSID" ؛ // استبدل بـ wifi ssid و wpa2 key const char * password = "Password" ؛ const char * server = "api.thingspeak.com" ؛ عميل WiFiClient ؛ // تهيئة المتغيرات للحصول على بيانات LoRa وحفظها int rssi ؛ سلسلة loRaMessage ؛ درجة حرارة السلسلة رطوبة الأوتار سلسلة قراءة معرف ؛ // يستبدل العنصر النائب بقيم DHT ومعالج السلسلة (const String & var) {//Serial.println(var)؛ إذا (var == "TEMPERATURE") {إرجاع درجة الحرارة ؛ } else if (var == "HUMIDITY") {إرجاع الرطوبة ؛ } else if (var == "RRSI") {return String (rssi) ؛ } عودة سلسلة ()؛ } void setup () {Serial.begin (115200)؛ عداد int // إعداد وحدة جهاز الإرسال والاستقبال LoRa LoRa.setPins (ss ، rst ، dio0) ؛ // إعداد وحدة جهاز الإرسال والاستقبال LoRa while (! LoRa.begin (BAND) && counter <10) {Serial.print (".")؛ عداد ++ ؛ تأخير (2000) ؛ } إذا (عداد == 10) {// زيادة معرف القراءة في كل قراءة جديدة Serial.println ("فشل بدء LoRa!") ؛ } Serial.println ("LoRa Initialization OK!")؛ تأخير (2000) ؛ // الاتصال بشبكة Wi-Fi باستخدام SSID وكلمة المرور Serial.print ("الاتصال بـ") ؛ Serial.println (ssid) ؛ WiFi.begin (SSID ، كلمة المرور) ؛ while (WiFi.status ()! = WL_CONNECTED) {delay (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 packet تلقي:") ؛ while (LoRa.available ()) // قراءة الحزمة {String LoRaData = LoRa.readString () ؛ Serial.print (LoRaData) ؛ int pos1 = LoRaData.indexOf ('/') ؛ int pos2 = LoRaData.indexOf ('&') ؛ ReadingID = LoRaData.substring (0، pos1) ، // احصل على درجة حرارة معرف القراءة = 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 (ReadingID) ؛ postStr + = "& field2 ="؛ postStr + = سلسلة (درجة حرارة) ؛ postStr + = "& field3 =" ؛ postStr + = سلسلة (رطوبة) ؛ postStr + = "& field4 =" ؛ postStr + = سلسلة (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: كود عقدة الاستشعار

#يشمل

# تضمين // مكتبات لـ LoRa # تتضمن "DHT.h" # تعريف DHTPIN 4 // دبوس حيث يتم توصيل 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 = 0 ؛ سلسلة LoRaMessage = "" ؛ درجة حرارة تعويم = 0 ؛ الرطوبة العائمة = 0 ؛ // تهيئة وحدة LoRa باطلة startLoRA () {LoRa.setPins (ss ، rst ، dio0) ؛ // إعداد وحدة جهاز الإرسال والاستقبال LoRa while (! LoRa.begin (BAND) && counter <10) {Serial.print (".")؛ عداد ++ ؛ تأخير (500) ؛ } if (counter == 10) {// Increment readingID في كل قراءة قراءة جديدة معرّف ++ ؛ Serial.println ("فشل بدء LoRa!") ؛ } Serial.println ("LoRa Initialization OK!")؛ تأخير (2000) ؛ } void startDHT () {if (isnan (humidity) || isnan (temperature)) {Serial.println ("Failed to read from DHT sensor!")؛ إرجاع؛ }} void getReadings () {humidity = dht.readHumidity ()؛ درجة الحرارة = dht.readTemperature () ؛ Serial.print (F ("الرطوبة:")) ؛ Serial.print (الرطوبة) ؛ Serial.print (F ("٪ Temperature:")) ؛ Serial.print (درجة الحرارة) ؛ Serial.println (F ("° C")) ؛ } إرسال باطل () {LoRaMessage = String (readingID) + "/" + String (temperature) + "&" + String (humidity)؛ // إرسال حزمة LoRa إلى المتلقي LoRa.beginPacket () ؛ LoRa.print (LoRaMessage) ؛ LoRa.endPacket () ، Serial.print ("إرسال الحزمة:") ؛ Serial.println (ReadingID) ؛ readID ++؛ Serial.println (LoRaMessage) ؛ } void setup () {// initialize Serial Monitor Serial.begin (115200)؛ dht.begin () ، startDHT () ، startLoRA () ، } void loop () {getReadings ()؛ sendReadings () ، تأخير (500) ؛ }

الخطوة 8: مراقبة البيانات على خادم Thingspeak

مراقبة البيانات على خادم Thingspeak
مراقبة البيانات على خادم Thingspeak
مراقبة البيانات على خادم Thingspeak
مراقبة البيانات على خادم Thingspeak

بمجرد تحميل الرمز ، يمكنك فتح Serial Monitor على كل من Gateway & Sensor Node Circuit. سوف يتم إرسال البيانات واستلامها إذا كان الرمز صحيحًا. الآن يمكنك زيارة Thingspeak Private View. هناك يمكنك رؤية البيانات الخاصة برقم الحزمة ودرجة الحرارة والرطوبة والبوابة يتم تحميلها بعد فاصل زمني مدته 15 ثانية.

الخطوة 9: المراجع

1.

2.