
جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-23 12:53

في مشروع إنترنت الأشياء هذا ، صممت بوابة 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 Gateway & Sensor Node. قمت بتجميع كل من الدائرة على لوح التجارب. يمكنك صنعه على ثنائي الفينيل متعدد الكلور إذا كنت تريد ذلك.
هنا دائرة بوابة ESP32 LoRa Module SX1278. هذا الجزء يعمل كجهاز استقبال. يتم تلقي بيانات الرطوبة ودرجة الحرارة باستخدام راديو LoRa وتحميلها على خادم Thingspeak.
الخطوة 4: عقدة مستشعر ESP32 LoRa


إليك دائرة عقدة مستشعر 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


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

MuMo - LoRa Gateway: ### UPDATE 10-03-2021 // ستتوفر أحدث المعلومات / التحديثات على صفحة github: https: //github.com/MoMu-Antwerp/MuMoWhat هو MuMo؟ MuMo هو تعاون بين تطوير المنتج (قسم من جامعة أنتويرب) تحت
مقياس ثاني أكسيد الكربون ، باستخدام المستشعر SCD30 مع Arduino Mega: 5 خطوات

مقياس ثاني أكسيد الكربون ، باستخدام جهاز الاستشعار SCD30 مع Arduino Mega: Para medir la Concentración de CO2، la humedad y la temperatura، el SCD30 Requiere التفاعلي مع الوسط المحيط. la calibración ya no sea válida
عقدة RaspberryPi WSPR: 7 خطوات

RaspberryPi WSPR Node: كنت أرغب في إنشاء جهاز إرسال WSPRnet (Weak Signal Propegation Reporter) لجعل قدمي مبللة في لعبة WSPRnet والبدء في رؤية إلى أي مدى يمكنني إرسال منارة. كان لدي بعض هذه المعدات ، وقررت أن أقوم بتقديم محترف سريع
بوابة لورا على أساس MicroPython ESP32: 10 خطوات (بالصور)

بوابة لورا استنادًا إلى MicroPython ESP32: لقد حظيت Lora بشعبية كبيرة في السنوات الأخيرة. عادة ما تكون وحدة الاتصالات اللاسلكية التي تستخدم هذه التقنية رخيصة (باستخدام الطيف الحر) ، وصغيرة الحجم ، وموفرة للطاقة ولها مسافة اتصال طويلة ، وتستخدم بشكل أساسي للتواصل المتبادل
بوابة ESP32 المقيدة لتكوين إعدادات IP الثابتة و DHCP: 8 خطوات

بوابة ESP32 المقيدة لتكوين إعدادات IP الثابتة و DHCP: ESP 32 عبارة عن جهاز مزود بشبكة WiFi و BLE مدمجة. إنه نوع من نعمة لمشاريع إنترنت الأشياء. فقط أعط SSID وكلمة المرور وتكوينات IP ودمج الأشياء في السحابة. ولكن ، يمكن أن تكون إدارة إعدادات IP وبيانات اعتماد المستخدم رأسًا