الإصدار 6.2.0 ، البيانات: 29 يناير 2020
المؤلف: M. Westenberg ([email protected])
حقوق الطبع والنشر: M. Westenberg ([email protected])
جميع الحقوق محفوظة. يتم توفير هذا البرنامج والمواد المصاحبة بموجب شروط ترخيص معهد ماساتشوستس للتكنولوجيا الذي يصاحب هذا التوزيع ، وهو متاح على https://opensource.org/licenses/mit-license.php
يتم توزيع هذا البرنامج على أمل أن يكون مفيدًا ، ولكن بدون أي ضمان ؛ بدون حتى الضمان الضمني للتسويق أو اللياقة لغرض معين.
تحتفظ بها مارتن ويستنبرغ ([email protected])
بادئ ذي بدء: يرجى قراءة هذا الملف والوثائق التي يجب أن تحتوي على معظم المعلومات التي تحتاجها للحصول على. لسوء الحظ ، ليس لدي الوقت الكافي للمتابعة على جميع رسائل البريد الإلكتروني ، وبما أن معظم المعلومات بما في ذلك pin-Out ، إلخ ، فإنني موجودة على هذه الصفحات ، وآمل أن يكون لديك الوقت الكافي لقراءتها ونشر أي أسئلة متبقية.
لدي أكثر من 10 لوحات Wemos D1 Mini التي تعمل ، بعضها بنيت نفسي ، حوالي 10+ على هالارد ، 3 على ComResult و 4 لوحات ESP32. انهم جميعا يعملون دون مشاكل في هذا الرمز. ومع ذلك ، فقد وجدت أن مفاصل اللحام والأسلاك الجيدة تحدث كل الفرق ، لذلك إذا حصلت على إعادة ضبط/أخطاء لا يمكنك توضيحها ، فيرجى إلقاء نظرة ثانية على الأسلاك الخاصة بك.
يحتوي هذا المستودع على تطبيق إثبات مفهوم من بوابة LoRawan قناة واحدة لـ ESP8266. بدء الإصدار 5.2 أيضًا يتم دعم ESP32 لـ TTGO (وغيرها). ينفذ البرنامج بوابة Lora قياسية مع الاستثناءات والتغييرات التالية:
بوابة لورا هذه ليست بوابة كاملة ولكنها تنفذ فقط بوابة تردد واحدة/واحدة. الحد الأدنى لمقدار الترددات التي تدعمها بوابة كاملة هي 3 ، ودعم معظم الترددات 9 أو أكثر. بدأ هذا البرنامج كدليل على المفهوم لإثبات أن رقاقة RRFM95 ذات التكلفة المنخفضة التكلفة التي كانت موجودة في كل عقدة Lora تقريبًا في أوروبا يمكن استخدامها كبديل رخيص للبوابات الكاملة الأكثر تكلفة التي كانت تستخدم شريحة SX1301.
نظرًا لأن برنامج هذه البوابة غالبًا ما يتم استخدامه خلال مرحلة تطوير المشروع أو في المواقف التجريبية ، فإن البرنامج مرن ويمكن تكوينه بسهولة وفقًا للبيئة أو متطلبات العملاء. هناك طريقتان للتفاعل مع البرنامج:
تم العثور على توثيق كامل لبوابة القناة الفردية في Things4u.github.io ، يرجى إلقاء نظرة على دليل الأجهزة أسفل الفصل Gateway.
تم اختبار بوابة القناة الفردية على بوابة مع Wemos D1 Mini ، باستخدام جهاز إرسال جهاز إرسال الأسلاك HoPerf RFM95W. تم إجراء الاختبارات على إصدار 868 من Lora وبعض الاختبارات على 433 MHz. العقد Lora التي تم اختبارها مرة أخرى هذه البوابة هي:
تم اختبار الرمز على ما لا يقل عن 8 لوحات بوابة منفصلة على حد سواء استنادًا إلى Hallard و Comresult Boards. ما زلت أعمل على دبوس ESP32 والوظائف (المتوقع قريبًا).
يوصى بتجميع وبدء بوابة القناة الفردية بأقل قدر ممكن من التعديلات. هذا يعني أنه يجب عليك استخدام الإعدادات الافتراضية في ملفات التكوين 2 قدر الإمكان وتغيير SSID/كلمة المرور فقط لإعداد WiFi الخاص بك ودبابيس ESP8266 التي تستخدمها في loramodem.h. يصف هذا القسم الحد الأدنى للتكوين اللازم للحصول على بوابة عمل يمكن تكوينها أكثر باستخدام صفحة الويب.
من خلال مدير المكتبة:
الآن يجب أن تعمل بوابةك. استخدم صفحة الويب لتعيين "Debug" إلى 1 ويجب أن تكون قادرًا على رؤية الحزم القادمة على الشاشة التسلسلية.
هناك طريقتان لتغيير تكوين بوابة القناة المفردة:
حيث لديك خيار ، الخيار 2 أكثر ودية وفائدة.
يحتوي ملف configgway.h على إعدادات البوابة القابلة للتكوين للمستخدم. جميع التعريفات الخاصة بهم تم تعيينها من خلال بيانات #Define. بشكل عام ، سيؤدي تعيين #define إلى 1 إلى تمكين الوظيفة وإعدادها على 0 سيؤدي إلى تعطيلها.
أيضًا ، يمكن تهيئة بعض الإعدادات عن طريق تعيين قيمتها باستخدام #Define ولكن يمكن تغييرها في وقت التشغيل في واجهة الويب. بالنسبة لبعض الإعدادات ، فإن تعطيل الوظيفة باستخدام #Define سيؤدي إلى إزالة الوظيفة من خادم الويب أيضًا.
ملاحظة بخصوص استخدام الذاكرة: يحتوي ESP8266 على قدر هائل من الذاكرة المتاحة لمساحة البرنامج ونظام ملفات spiffs. ومع ذلك ، فإن الذاكرة المتاحة للكومة والمتغيرات تقتصر على حوالي 80 ألف بايت (بالنسبة إلى ESP-32 هذا أعلى). يُنصح المستخدم بإيقاف تشغيل الوظائف غير المستخدمة من أجل توفير استخدام الذاكرة. إذا انخفضت الكومة إلى أقل من 18 كيلو بايت ، فقد لا تتصرف بعض الوظائف كما هو متوقع (في الحالة القصوى ، قد يعطل البرنامج).
يتم استخدام ملف Confignode.h لتعيين نقطة الوصول إلى WiFi وهيكل المستشعرات المعروفة إلى بوابة القناة 1. يجب أن يتم تعيين نقاط وصول WiFi المعروفة (SSID وكلمة المرور) في وقت الترجمة.
عندما لا يتم استخدام البوابة فقط كبوابة ولكن أيضًا لأغراض تصحيح الأخطاء ، لا يمكن أن تحدد المستخدم المستخدمة فقط اسم عقدة المستشعر ولكن أيضًا فك تشفير الرسالة.
يمكن للمستخدم تحديد ما إذا كان يتم استخدام وحدة تحكم USB لرسائل الإخراج أم لا. عند تعيين _dusb إلى 0 يتم تعطيل جميع الإخراج عن طريق المسلسل (في الواقع لا يتم تضمين العبارات التسلسلية في الكود).
#define _dusb 1
حدد فئة العمليات التي تدعمها البوابة. يتم دعم الفئة A ويحتوي على التشغيل الأساسي لأجهزة استشعار البطارية.
يحتوي الفئة B على وضع التشغيل منارة/بطارية. سترسل البوابة OU منارة إلى المستشعرات المتصلة التي تمكنهم من مزامنة الوصلة الهابطة.
يحتوي الوضع العام (المستمر) من الفئة C على دعم للأجهزة التي ربما لا يتم تشغيلها للبطارية وستستمع إلى الشبكة في جميع الأوقات. ونتيجة لذلك ، فإن زمن انتقال هذه الأجهزة أقصر أيضًا من أجهزة الفئة A. لا تعتمد أجهزة الفئة C على طاقة البطارية وستقوم بتمديد Windows حتى نافذة الإرسال التالية. في الواقع ، فإن عمليات الإرسال فقط هي التي تجعل الجهاز إحباطًا للاستماع طالما يستمر هذا tranmission. لا يمكن لأجهزة الفئة C القيام بتشغيل الفئة B.
#define _class "a"
ستبدأ جميع الأجهزة كأجهزة من الفئة "أ" ، وقد تقرر "الترقية" إلى الفئة ب أو ج.
نحن ندعم تكوين اثنين من الإثارة خارج الصندوق: هالارد و compresult. إذا كنت تستخدم واحدة من هذين ، فما عليك سوى تعيين المعلمة على القيمة الصحيحة. إذا كانت تعريفات PIN مختلفة ، فقم بتحديث ملف loramodem.h لتعكس هذه الإعدادات. 1: Hallard 2: Comresult Pin Out 3: ESP32 Pin Out 4: Other ، حدد بنفسك في Loramodem.H
#define _pin_out 1
يتم ضبط المعلمة التالية shoudl على 0 في ظل الظروف العادية. يسمح للنظام بتنسيق نظام ملفات spiffs.
#define spiff_format 0
قم بتعيين عامل _spreading على قيمة SF7 ، SF8 - SF12. يرجى ملاحظة أن هذه القيمة مرتبطة ارتباطًا وثيقًا بالقيمة المستخدمة لـ _cad. إذا تم تمكين _CAD ، فإن قيمة _Spreading لا تستخدم من قبل البوابة لأنها تحتوي على جميع عوامل الرئاسة.
#define _spreading SF9
يرجى ملاحظة أن التردد الافتراضي المستخدم هو 868.1 MHz والذي يمكن تغييره في ملف loramodem.h. يُنصح المستخدم بعدم تغيير هذا التثبيت واستخدام تردد 868.1 MHz الافتراضي فقط.
الكشف عن نشاط القناة (CAD) هو وظيفة لشريحة Lora RFM95 للكشف عن الرسائل الواردة (النشاط). قد تصل هذه الرسائل الواردة إلى أي من عوامل الانتشار المعروفة SF7-SF12. من خلال تمكين CAD ، يمكن للبوابة تلقي رسائل لأي من عوامل الانتشار.
في الواقع يتم استخدامه في العملية العادية لإخبار المتلقي بأن إشارة أخرى تستخدم القناة بالفعل.
تأتي وظيفة CAD بسعر (صغير): لن تتمكن الشريحة من تلقي إشارات ضعيفة للغاية حيث ستستخدم وظيفة CAD إعداد تسجيل RSSI للرقاقة لتحديد ما إذا كانت تتلقى إشارة (أو ضوضاء فقط). نتيجة لذلك ، لا يتم تلقي إشارات ضعيفة للغاية مما يعني أن نطاق البوابة سيتم تقليله في وضع CAD.
#define _cad 1
اعتبارًا من الإصدار 4.0.6 ، تسمح البوابة عبر تحديث الهواء إذا كان الإعداد A_OTA قيد التشغيل. يتطلب برنامج Air Over مرة واحدة إعداد الإصدار 4.0.6 عبر USB إلى البوابة ، وبعد ذلك يتم تمكين البرنامج (افتراضي) للاستخدام.
يدعم الإصدار الأول وظيفة OTA فقط باستخدام IDE والتي تعني في الممارسة العملية أن IDE يجب أن تكون في نفس قطاع الشبكة مثل البوابة.
ملاحظة: يجب عليك استخدام برنامج Bonjour (Apple) على شبكتك في مكان ما. يتوفر إصدار لمعظم المنصات (يتم شحنها باستخدام iTunes لنظام التشغيل Windows على سبيل المثال). يمكّن برنامج Bonjour البوابة من استخدام MDNS لحل معرف البوابة الذي تم تعيينه بواسطة OTA ، وبعد ذلك تظهر منافذ التنزيل في IDE.
TODO: لم يتم اختبار برنامج OTA (بعد) بالاقتران مع برنامج WiFimanager.
#define a_ota 1
هذا الإعداد يتيح خادم الويب. على الرغم من أن خادم الويب نفسه يتطلب الكثير من الذاكرة ، إلا أنه يساعد بشكل كبير على تكوين وقت تشغيل Gatewayat وتفقد سلوكه. كما يوفر إحصائيات الرسائل الأخيرة المستلمة. تحدد المعلمة A_Refresh ما إذا كان يجب على خادم الويب تجديد كل ثوانٍ من X.
#define a_server 1 // تحديد خادم الويب المحلي فقط إذا تم تعيين هذا التعريف
#define a_refresh 1 // هل خادم الويب ممكّن لتحديث نعم/لا؟ (نعم على ما يرام)
#define a_maxbufsize 192 // يجب أن تكون أكبر من 128 ، ولكنها صغيرة بما يكفي للعمل
تحدد المعلمة A_Refresh ما إذا كان بإمكاننا تعيين إعداد Refresh Yes/No في WebBrowser أم لا. عادةً ما يتم وضع الإعداد في WebBrowser على "لا" كإعداد افتراضي ، ولكن يمكننا ترك التعريف على "1" لتمكين هذا الإعداد في WebBrowser.
من أجل أن ترسل بوابة رسائل الوصلة الهابطة على عامل الانتشار مسبقًا وعلى التردد الافتراضي ، يجب عليك تعيين المعلمة _strict_1ch إلى 1. لاحظ أنه عندما لا يتم تعيينه على 1 ، ستستجيب البوابة لطلبات الوصلة الهابطة مع التردد وعوامل الانتشار التي يضبطها خادم الدائرة. وفي الوقت الحالي ، يستجيب TTN لرسائل الوصلة الهابطة لـ SF9-SF12 في RX2 Timeslot ومع التردد 869.525 ميجا هرتز وعلى SF12 (وفقًا لمعيار Lora عند إرسال RX2 TimeLot).
#define _strict_1ch 0
ينصحك بعدم تغيير الإعداد الافتراضي لهذه المعلمة.
من خلال ضبط OLED ، تقوم بتكوين النظام للعمل مع لوحات OLED على I2C. تعمل بعض اللوحات من قبل كل من SPI و I2C حيث I2C هو solwer. ومع ذلك ، نظرًا لأن SPI يستخدم لاتصالات جهاز استقبال RFM95 ، فأنت متشوق فقط باستخدام واحدة من هذه لأنها لن تعمل مع هذا البرنامج. بدلاً من ذلك ، اختر حل OLED الذي يعمل على I2C.
#define OLED 1
يتم تعريف القيم التالية لـ OLED:
عندما يتم تعريف هذا (== 1) ، سنقوم بجمع إحصائيات كل رسالة وإخراجها إلى نظام ملفات spiffs. نتأكد من أننا نستخدم عددًا من الملفات مع كل عدد ثابت من السجلات للإحصاءات. يخبرنا رقم REC عدد السجلات المسموح بها في كل ملف إحصائيات. بمجرد أن يكون رقم REC أعلى من عدد السجلات المسموح بها ، نفتح ملفًا جديدًا. بمجرد أن يتجاوز عدد الملفات عدد ملفات الإحصائيات العدد ، نقوم بحذف الملف القديم ونفتح ملفًا جديدًا. عند تحديد زر "السجل" أعلى شاشة واجهة المستخدم الرسومية ، تكون جميع ملفات السجل ouptu إلى الجهاز التسلسلي USB. وبهذه الطريقة ، يمكننا فحص سجلات أكثر بكثير من تركيب شاشة واجهة المستخدم الرسومية أو الإخراج التسلسلي.
#define stat_log 1
يتم تعيين دبابيس I2C SDA/SCL في ملف configgway.h مباشرة بعد #Define of OLED. المعيار يستخدم ESP8266 دبابيس D1 و D2 لخطوط SCL و SDA I2C ولكن يمكن تغييرها بواسطة المستخدم. عادة ما يكون THSI ضروريًا. تم العثور على وظائف OLED في ملف _loramodem.ino ، ويمكن تكييفه لإظهار الحقول الأخرى. يتم استدعاء الوظائف عند استلام رسالة (!) ، وبالتالي فإن هذا سيضيف إلى عدم استقرار ESP لأن هذه الوظائف قد تتطلب وقتًا أكثر مما كان متوقعًا. إذا كان الأمر كذلك ، فإن SWITHC خارج وظيفة OLED أو بناء في وظيفة في الحلقة الرئيسية () التي تعرض في وقت المستخدم (وليس المقاطعة).
تسمح البوابة بالاتصال بخادمين في نفس الوقت (كما تفعل معظم بوابات لورا راجع للشغل). يجب عليك الاتصال بجهاز التوجيه Lora قياسي واحد على الأقل ، في حالة استخدام شبكة الأشياء (TTN) من التأكد من تعيينك:
#define _ttnserver "Router.eu.Thethings.network"
#define _ttnport 1700
في حالة إعداد الخادم الخاص بك ، يمكنك تحديد كما يلي باستخدام عنوان URL الخاص بالموجه ومنفذك الخاص:
#define _thingserver "your_server.com" // url url server لبرنامج خادم Lora UDP.JS
#define _thingport 1701 // يجب أن يستمع خادم UDP الخاص بك إلى هذا المنفذ
اضبط معلمات الهوية للبوابة الخاصة بك:
#define _description "esp-gateway"
#define _email "[email protected]"
#define _platform "ESP8266"
#define _lat 52.00
#define _lon 5.00
#define _alt 0
من الممكن استخدام البوابة كعقدة. بهذه الطريقة ، يتم الإبلاغ عن قيم المستشعر المحلية/الداخلية. هذه هي وظيفة وحدة المعالجة المركزية والذاكرة ، حيث تتضمن رسالة استشعار وظائف EAS و CMAC.
#define gatewaynode 0
أخرى أدناه في ملف التكوين Confignode.h ، من الممكن تعيين العنوان ومعلومات Lora الأخرى لعقدة Gateway.
أسهل طريقة لتكوين البوابة على WiFi هي استخدام وظيفة WiFimanager. هذه الوظيفة تعمل خارج الصندوق. سيقوم WiFimanager بوضع البوابة في وضع AccessPoint بحيث يمكنك الاتصال به باعتباره AccessPoint WiFi.
#define _wifimanager 0
إذا تم تمكين WiFi Manager ، فتأكد من تحديد اسم AccessPoint إذا كانت البوابة في وضع AccessPoint وكلمة المرور.
#define ap_name "esp8266-gway-things4u"
#define ap_passwd "ttnautopw"
اسم نقطة الوصول القياسية المستخدمة من قبل البوابة هو "ESP8266 GWAY" وكلمة مرورها هي "ttnautopw". بعد الربط بنقطة الوصول مع هاتفك المحمول أو الكمبيوتر ، انتقل إلى htp: //192.168.4.1 في متصفح واطلب البوابة التي تريدها شبكة WiFi ، وتحديد كلمة المرور.
ستقوم البوابة بعد ذلك بإعادة ضبط الشبكة المحددة وتربطها. إذا سارت الأمور على ما يرام ، فستتذكر ESP8266 الشبكة التي يجب أن تتصل بها. ملاحظة: طالما أن نقطة الوصول التي ترتبط بها البوابة موجودة ، فإن البوابة لن تعمل بعد الآن مع قائمة WPA لنقاط الوصول المعروفة. إذا لزم الأمر ، يمكنك حذف نقطة الوصول الحالية في خادم الويب ودورة الطاقة بوابة إجبارها على قراءة صفيف WPA مرة أخرى.
#if gatewaynode == 1
#define _devaddr {0x26 ، 0x01 ، 0x15 ، 0x3d}
#define _appskey {0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00}
#define _nwkskey {0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00 ، 0x00}
#define _sensor_interval 300
#endif
يمكن استخدام خادم الويب المدمج لعرض معلومات الحالة وتصحيح الأخطاء. كما يسمح خادم الويب للمستخدم بتغيير إعدادات معينة في وقت التشغيل مثل مستوى التصحيح أو التشغيل وإيقاف وظيفة CAD. يمكن الوصول إليه باستخدام عنوان URL التالي: http: //: 80 أين يتم تقديم IP بواسطة جهاز التوجيه إلى ESP8266 عند بدء التشغيل. ربما يكون الأمر مثل 192.168.1.xx يعرض خادم الويب إعدادات التكوين المختلفة بالإضافة إلى توفير وظائف لتعيين المعلمات.
يمكن تعيين المعلمات التالية باستخدام خادم الويب.
يعتمد البرنامج على عدة أجزاء من البرامج ، وهو Arduino IDE لـ ESP8266 هو الأكثر أهمية. يتم استخدام العديد من المكتبات الأخرى أيضًا من قبل هذا البرنامج ، وتأكد من تثبيت تلك المكتبات مع IDE:
للراحة ، تم العثور على المكتبات أيضًا في مستودع GitHub في دليل المكتبات. يرجى ملاحظة أنهم ليسوا جزءًا من بوابة ESP 1Channel وقد يكون لديهم ترخيص خاص بهم. ومع ذلك ، فإن هذه المكتبات ليست جزءًا من برنامج بوابة القناة الواحدة.
راجع http://things4u.github.io في قسم الأجهزة للحصول على تعليمات البناء والاتصال.
التبعيات التالية صالحة لبوابة القناة الواحدة:
لا تزال الأشياء التالية مدرجة في قائمة أمنياتي إلى بوابة القناة الواحدة:
يتم توفير الملفات المصدر لرسم البوابة في هذا المستودع بموجب ترخيص معهد ماساتشوستس للتكنولوجيا. يتم تضمين المكتبات المدرجة في هذا المستودع للراحة فقط ولديها ترخيصها الخاص ، وليست جزءًا من رمز Gateway ESP 1CH.