كيفية توصيل عقدة LoRaWAN بشبكة TTN خطوة بخطوة

آخر تحديث: 25 يناير 2026
نبذة عن الكاتب: تكنوديجيتال
  • يتطلب LoRaWAN بوابة مهيأة بشكل صحيح (التردد، شبكة IP، الخادم) ومسجلة لدى TTN لكي تتمكن العقد من التواصل.
  • يتم تسجيل الأجهزة الطرفية في تطبيقات TTN باستخدام DevEUI و JoinEUI/AppEUI و AppKey (OTAA) أو NWKSKEY/APPSKEY/DEVADDR (ABP).
  • من الممكن استخدام أجهزة الاستشعار التجارية (SenseCAP، Decentlab، Dragino، Tabs) أو العقد التي تصنعها بنفسك باستخدام ESP32/Arduino ومكتبة LMIC لإرسال البيانات إلى TTN.
  • تسهل TTN عمليات التكامل مع Node-RED والمنصات الخارجية لعرض واستغلال بيانات إنترنت الأشياء التي تجمعها شبكة LoRaWAN.

قم بتوصيل عقدة LoRaWAN بشبكة TTN

إذا وصلت إلى هنا، فذلك لأنك ترغب في معرفة كيفية ربط عقدة LoRaWAN بشبكة TTN من البداية إلى النهاية ، دون إغفال أي تفاصيل: البوابات، والعقد، وأجهزة الاستشعار، والمكتبات، والمفاتيح، وإعدادات الشبكة. والخبر السار هو أنك لست بحاجة لأن تكون خبيرًا في الاتصالات؛ فمع دليل منظم جيدًا وقليل من الصبر، يمكنك إنشاء شبكة LoRaWAN فعّالة خاصة بك في وقت قصير.

في السطور التالية، ستتعرف خطوة بخطوة على كيفية إعداد بوابة، وتسجيلها على شبكة الأشياء (The Things Network)، وإضافة التطبيقات والأجهزة الطرفية، وبرمجة عقد LoRaWAN باستخدام لوحات ESP32 أو Arduino، بالإضافة إلى أمثلة باستخدام مستشعرات تجارية (SenseCAP، وDecentlab، وDragino، وTabs Browan). سنتناول أيضًا تفاصيل عملية لا تُذكر دائمًا في الأدلة: مثل المشاكل الشائعة، واختيار التردد، وتوصيلات الدبابيس، وحيل للتحقق من أن كل شيء يتواصل فعليًا مع شبكة الأشياء.

ما هما LoRa و LoRaWAN، ولماذا نستخدم TTN؟

LoRa وLoRaWAN مفهومان مترابطان، لكنهما ليسا متطابقين . LoRa هي تقنية تعديل ترددات لاسلكية بعيدة المدى ومنخفضة الطاقة، وهي ملكية خاصة لشركة Semtech. أما LoRaWAN فهو بروتوكول الشبكة الذي يعتمد على LoRa لإدارة كيفية تواصل الأجهزة الطرفية (العُقد) مع البوابات وخادم الشبكة.

في شبكة LoRaWAN النموذجية، يوجد مكونان رئيسيان: البوابات والعُقد . تعمل البوابات كجسور بين عالم LoRa (الراديو) وعالم IP (الإنترنت)، حيث تُعيد توجيه الحزم إلى خادم LoRaWAN. أما العُقد فهي أجهزة الاستشعار أو المُشغّلات التي تُرسل وتستقبل المعلومات باستخدام LoRa من وإلى هذه البوابات.

لربط كل هذا، أنت بحاجة إلى خادم LoRaWAN. يمكنك الاشتراك في خدمة خاصة (من شركات مثل موفيستار وفودافون، أو منصات مثل لوريوت وأكتيليتي وكيرلينك) أو استخدام شبكة The Things Network (TTN)، وهي شبكة عامة مفتوحة يديرها المجتمع.

تتميز شبكة TTN باحترامها لحوكمة البيانات، وحيادها، وإتاحة الفرصة للمساهمة ببوابات للشبكة . في العديد من المدن، يقوم السكان بتركيب البوابات بمبادرة شخصية، ويمكن لأي شخص الاستفادة من هذه التغطية دون أي تكلفة باستثناء تكلفة أجهزة العقد.

ترددات وقنوات وقيود تقنية LoRaWAN

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

في أوروبا، يُستخدم نطاق التردد 868 ميجاهرتز (EU868) بشكل أساسي . أما في الولايات المتحدة، فالنطاق الشائع هو 915 ميجاهرتز (US915). يُقدم تجار التجزئة الصينيون تشكيلة واسعة من وحدات 433 ميجاهرتز، والتي قد تكون مغرية نظرًا لسعرها، ولكنها ليست متوافقة دائمًا مع تقنية LoRaWAN أو نظام التشغيل في بلدك.

بالإضافة إلى التردد، يتم تنظيم بروتوكول LoRaWAN في قنوات، وعامل انتشار (SF)، وخطط تردد . يحدد عامل الانتشار السرعة والمدى: فكلما زاد عامل الانتشار، زاد المدى، ولكن زاد أيضًا وقت البث، مما يستهلك طاقة أكبر ويشغل مساحة أكبر من القناة.

في أوروبا، تُطبّق قاعدة "1%" المعروفة : لا يمكن لأي جهاز أن يشغل قناة الراديو إلا لنسبة صغيرة من الوقت، عادةً حوالي 1%. هذا يحدّ من عدد مرات إرسال البيانات، وهو أحد أسباب إرسال مستشعرات LoRaWAN للبيانات عادةً كل بضع دقائق، وليس كل بضع ثوانٍ.

التحضيرات واختيار الأجهزة للبوابة والعُقد

لإنشاء شبكة عملية، ستحتاج على الأقل إلى بوابة LoRaWAN واحدة وعقدة واحدة أو أكثر (مستشعرات) . يمكنك استخدام أجهزة من مصنعين مختلفين، طالما أنها متوافقة مع معيار LoRaWAN وتعمل على نفس نطاق التردد.

يُعدّ جهاز Dragino LPS8 أحد أشهر أجهزة البوابة الداخلية ، وهو مُدمج مع مُركِّز SX1308 ويدعم ما يصل إلى 10 قنوات متوازية. يأتي الجهاز مُهيأً مُسبقًا بخطط تردد مختلفة حسب البلد، ويعمل في أوروبا بتردد 868 ميجاهرتز. يتم تشغيله بجهد 5 فولت عبر منفذ USB-C ويتصل بشبكة IP عبر منفذ RJ-45 أو Wi-Fi.

من الأمثلة الأخرى على البوابات التي تعمل بكفاءة مع شبكة TTN، بوابة RAK7289 (المخصصة للاستخدام الخارجي، والمتينة، والمزودة بخيار LTE/4G) أو بوابات TTN-GW-868 MHz الرسمية، المصممة لتوفير التغطية في المدن أو مشاريع المدن الذكية. كما يُمكن بناء بوابة أحادية الخلية باستخدام لوحة ESP32 ووحدة SX1262 LoRa ، كما هو الحال مع مجموعة Wio-SX1262 وجهاز Xiaomi ESP32S3.

لديك خياران كعقد: استخدام أجهزة استشعار تجارية جاهزة بالفعل لـ LoRaWAN (SenseCAP S210x، Tabs Browan TBHH100، Dragino TrackerD، Decentlab، إلخ) أو بناء عقدك الخاصة باستخدام لوحات تطوير مثل TTGO LoRa32 V2.0، ESP32 + RMF95، Arduino + وحدة LoRa، إلخ.

قم بتهيئة بوابة LoRaWAN وقم بتوصيلها بشبكة TTN

تتمثل الخطوة الرئيسية الأولى في المشروع في تشغيل البوابة الإلكترونية وظهور عبارة "متصل" على شبكة TTN . على الرغم من أن لكل مصنّع لوحة تحكم خاصة به، إلا أن الخطوات المفاهيمية متشابهة للغاية.

باستخدام جهاز Dragino LPS8، على سبيل المثال، يمكنك إدارته عبر SSH أو HTTP . إذا قمت بتوصيله عبر كابل RJ-45، فستحتاج إلى معرفة عنوان IP المُخصص من خادم DHCP (باستخدام ماسح IP أو من خلال جهاز التوجيه الخاص بك). إذا كنت تفضل الإعداد الأولي عبر Wi-Fi، فسيقوم LPS8 بإنشاء شبكته الخاصة باسم SSID مثل "dragino-xxxxx" وكلمة مرور افتراضية مثل "dragino+dragino". سيؤدي الوصول إلى عنوان IP 10.130.1.1 إلى نقلك إلى لوحة التحكم عبر الويب، حيث يكون اسم المستخدم وكلمة المرور الأوليان عادةً "admin/dragino".

عند الدخول، ستظهر لك قائمة تحتوي على عدة أقسام، وقد تظهر علامة حمراء على بعض الخيارات للدلالة على وجود نقص في الإعدادات . الخطوة الأولى هي اختيار خطة التردد المناسبة لمنطقتك في تبويب LoRa؛ في أوروبا، هذه الخطة هي EU868 (حوالي 868 ميجاهرتز).

  واي فاي 6 جيجاهرتز مقابل 5 جيجاهرتز: دليل شامل للترددات والمعايير

بعد ذلك، انقر على علامة تبويب LoRaWAN أو خادم الشبكة . هناك، حدد خادم LoRaWAN الذي ستتصل به البوابة. بالنسبة لـ TTN، اختر "TTN" كمزود الخدمة، وأدخل عنوان الخادم الأوروبي (على سبيل المثال، eu1.cloud.thethings.network)، مع الإبقاء على منافذ UDP (عادةً 1700 للتحميل والتنزيل). في القسم نفسه، ستجد معرّف البوابة (EUI)، والذي سنحتاجه لاحقًا في TTN.

في قسم الشبكة، يمكنك ضبط كيفية اتصال البوابة بالإنترنت : شبكة محلية (LAN)، أو شبكة واسعة (WAN)، أو شبكة واسعة لاسلكية (Wi-Fi WAN). بالنسبة لواجهة الشبكة الواسعة، يمكنك اختيار عنوان IP ثابت أو استخدام بروتوكول DHCP؛ ويُنصح، كلما أمكن، باستخدام عنوان IP ثابت عبر اتصال سلكي لضمان اتصال أكثر استقرارًا وسهولة في الإدارة. يُستخدم قسم الشبكة المحلية (LAN) عادةً لشبكة نقاط الوصول الداخلية للبوابة؛ ومن الأفضل عدم تغيير هذا الإعداد دون فهم كامل لما تفعله، فقد يكون ذلك ضروريًا في حال حدوث أي مشكلة.

في قسم الواي فاي، يمكنك ضبط كل من نقطة الوصول التي أنشأها جهاز التوجيه نفسه واتصاله بشبكة واي فاي خارجية . ولأسباب أمنية، يُنصح بتغيير اسم الشبكة (SSID) وكلمة المرور الافتراضيين لنقطة الوصول اللذين جاءت مع الجهاز من المصنع.

في بوابات RAK7289، تكون العملية مشابهة: ادخل إلى لوحة التحكم عبر الويب، وقم بتكوين عنوان IP (ثابت أو DHCP) من خلال الشبكة ← واجهة WAN ، ثم في شبكة LoRa ← إعدادات الشبكة ← مُوجِّه الحزم، أدخل تفاصيل خادم TTN وسجّل مُعرِّف بوابة EUI لتسجيلها مع TTN لاحقًا. إذا كنت تستخدم جهاز توجيه يوفر خدمة DHCP، يمكنك تحديد موقع عنوان IP الخاص بالبوابة من خلال الاطلاع على جدول التأجير (باستخدام اسم المضيف، على سبيل المثال، "RAK7289") أو باستخدام أدوات مثل nmap.

تسجيل البوابة على شبكة الأشياء

بمجرد أن يصبح للبوابة اتصال بالإنترنت، ستحتاج إلى تسجيلها لدى TTN . إذا لم يكن لديك حساب، فقم أولاً بالتسجيل على موقع The Things Network الإلكتروني، ثم ادخل إلى وحدة التحكم في المنطقة المعنية (على سبيل المثال، https://eu1.cloud.thethings.network/).

في لوحة التحكم، حدد قسم البوابات وانقر على "تسجيل بوابة" . سيطلب منك TTN إدخال معرّف البوابة (اسم فريد ضمن حسابك)، ورمز تعريف المستخدم النهائي (EUI) للبوابة، وذلك حسب نوع البوابة. بالنسبة لبوابات Dragino LPS8 التي تستخدم مُوجِّه الحزم الكلاسيكي، يجب عليك تحديد خيار "أستخدم مُوجِّه الحزم القديم".

بالإضافة إلى ذلك، ستحدد خطة التردد (EU868 لأوروبا) ، والمنطقة أو جهاز التوجيه المناسب، والموقع (اختياريًا، الإحداثيات، داخلي/خارجي، إلخ). في البوابات مثل تلك أحادية الخلية المزودة بمعالج XIAO ESP32S3 وجهاز Wio-SX1262، قد يعرض البرنامج الثابت مُعرّف البوابة عبر المنفذ التسلسلي عند بدء التشغيل؛ ما عليك سوى نسخه واستخدامه في نموذج التسجيل.

بعد إكمال هذه المعلومات وتسجيل البوابة، ستعرض TTN مدقق حالة (متصل أو غير متصل) وقسم "حركة البيانات" حيث يمكنك عرض تدفق الحزم في الوقت الفعلي. إذا تم تكوين كل شيء بشكل صحيح على كل من البوابة وTTN، فسترى الحالة تتغير إلى "متصل" في غضون دقيقة أو دقيقتين، وستبدأ برؤية حركة البيانات عندما تبدأ العقد في الإرسال.

هذا يعني أن البنية التحتية (البوابة + الخادم) أصبحت الآن جاهزة للعمل . ومن هنا، يبدأ دور تهيئة التطبيقات والأجهزة الطرفية.

إنشاء التطبيق وتسجيل العقدة في شبكة TTN

في شبكة TTN، لا يتم تسجيل الأجهزة مباشرة في جذر الحساب، بل داخل التطبيقات . يجمع التطبيق عقدة واحدة أو أكثر ترسل بيانات ذات صلة، على سبيل المثال، جميع أجهزة الاستشعار البيئية في مبنى، أو العديد من أجهزة تتبع نظام تحديد المواقع العالمي (GPS) في مشروع تعليمي.

في لوحة تحكم TTN، انتقل إلى قسم التطبيقات وأنشئ تطبيقًا جديدًا . امنحه معرّفًا فريدًا، ووصفًا اختياريًا، واختر المنطقة المناسبة. ضمن هذا التطبيق، ستسجل كل عقدة LoRaWAN ببيانات اعتمادها (DevEUI، وJoinEUI/AppEUI، وAppKey أو مفاتيح أخرى حسب طريقة التفعيل).

بالنسبة لأجهزة الاستشعار التجارية مثل مستشعرات درجة الحرارة والرطوبة من نوع Browan TBHH100-868 ، عادةً ما يتم إرفاق ملصق يحتوي على DevEUI وAppEUI وAppKey. وتستخدم هذه الأجهزة عادةً طريقة OTAA (التنشيط عبر الهواء)، التي تُنشئ جلسات مفاتيح مع كل عملية انضمام إلى الشبكة، مما يجعلها أكثر أمانًا من ABP.

باستخدام OTAA، في TTN، يمكنك اختيار تسجيل جهاز طرفي جديد، وإدخال JoinEUI (AppEUI)، وDevEUI، وAppKey ، والتحقق من البيانات، ثم تأكيدها. بعد الحفظ، إذا تم تكوين العقدة بشكل صحيح وكانت ضمن نطاق البوابة، فسترى إشارات الشبكة، وتُجري عملية الانضمام، وستبدأ في رؤية رسائل الوصلة الصاعدة مع قياساتها في وحدة التحكم.

ينطبق الأمر نفسه على أجهزة الاستشعار مثل مستشعرات مستوى السائل ودرجة الحرارة من Decentlab : يوفر المصنّع المعرّف (ID) وDevEUI وAppEUI وAppKey، لكنه لا يعلم مسبقًا الخادم الذي ستستخدمه. أنت مسؤول عن تسجيل هذه المعلومات لدى TTN (أو خادم آخر) حتى يتم تسجيل جهاز الاستشعار. تأتي العديد من أجهزة Decentlab مسجلة مسبقًا لدى TTN عند الطلب، مما يُسهّل العملية بشكل أكبر.

تهيئة أجهزة استشعار LoRaWAN التجارية

دعونا نلقي نظرة على بعض الأمثلة الملموسة لكيفية إعداد وتسجيل أجهزة استشعار LoRaWAN التجارية التي ستتواصل بعد ذلك مع TTN من خلال بوابتك.

في سلسلة SenseCAP S210x (على سبيل المثال، أجهزة الاستشعار البيئية)، تتمثل آلية العمل المعتادة في استخدام تطبيق SenseCraft الخاص بالشركة المصنعة . أولاً، تقوم بتنزيل التطبيق، ثم تشغل المستشعر باستخدام زر (بالضغط عليه لبضع ثوانٍ حتى يومض مؤشر LED كل ثانية)، ثم في التطبيق، تحدد "مسح" لقراءة رمز الاستجابة السريعة (QR) الخاص بالجهاز.

يحتوي التطبيق على وضع "الإعدادات المتقدمة" حيث يمكنك اختيار "شبكة الأشياء" كمنصة . يجب عليك اختيار نفس خطة التردد الخاصة ببوابتك (على سبيل المثال، EU868) والتأكد من أن وضع الانضمام هو OTAA. سيعرض التطبيق معرّف الجهاز (EUI) ومعرّف التطبيق (AppEUI) (معرّف الانضمام) ومفتاح التطبيق (AppKey)؛ يُنصح بتدوين هذه المعلومات لأنك ستحتاج إلى إدخالها في شبكة الأشياء عند تسجيل الجهاز.

في حالة مستشعر Tabs Browan TBHH100-868 ، تأتي المفاتيح مُهيأة مسبقًا من المصنع. يقيس المستشعر درجة الحرارة والرطوبة، ويعمل ببطارية 3,6 فولت، ويرسل البيانات وفقًا للقواعد التالية: كل 60 دقيقة في حال عدم وجود تغيير، أو قبل ذلك إذا تغيرت درجة الحرارة بمقدار ±2 درجة مئوية أو الرطوبة بمقدار ±5%. لتسجيله، ما عليك سوى إدخال مفتاح التطبيق (APPKey) وواجهة المستخدم الرسومية (APPEUI) وواجهة المستخدم الرسومية للأجهزة (DevEUI) المُقدمة من الشركة المصنعة في خادم LoRaWAN الخاص بك (TTN، على سبيل المثال). قد تحدث أحيانًا مشكلة في التنسيق أو ترتيب البايتات (البت الأكثر أهمية/البت الأقل أهمية)، لذا من المهم التحقق من ذلك إذا لم يتم الاتصال في المرة الأولى.

  كيفية إعداد خادم NAS في المنزل خطوة بخطوة

تُستخدم أجهزة Dragino TrackerD كأجهزة تتبع GPS مزودة بزر طوارئ. تحتوي كل وحدة على مجموعة مفاتيح LoRaWAN خاصة بها. في شبكة TTN، تُسجل هذه المفاتيح عادةً في نفس التطبيق (مثل "تتبع المسار")، ويتم تكوين الجهاز، عند الحاجة، عبر منفذ تسلسلي (USB) باستخدام أوامر AT. توضح الوثائق بالتفصيل أوامر ضبط معدل الإرسال، وسلوك الإنذار، وما إلى ذلك. هام: تتطلب العديد من برامج Dragino الثابتة لصق أوامر AT كاملةً في الطرفية، وليس كتابتها حرفًا حرفًا.

في أجهزة الاستشعار مثل أجهزة استشعار المستوى والضغط والبيئة من Decentlab ، تتشابه الفلسفة: تُستخدم DevEUI وAppEUI وAppKey لربطها بشبكة TTN (أو أي شبكة أخرى). عادةً ما تحدد Decentlab فترة إرسال مدتها 10 دقائق لأنها حل وسط مُثبت بين استهلاك البيانات ودقتها، مع إمكانية تعديل هذه الفترة عند الطلب أو عبر الإعدادات. يمكن للمستخدمين عرض البيانات على منصة السحابة الخاصة بالشركة المصنعة أو دمج الجهاز في منصات خارجية (MyDevices، ResIoT، WMW، إلخ) بإضافة مُفكِّك البيانات المناسب.

قم ببناء عقدة LoRaWAN الخاصة بك باستخدام أجهزة مفتوحة المصدر

إذا كنت من هواة التعديل والتجريب، فإن أكثر ما يُمتعك هو بناء وبرمجة عقدة LoRaWAN الخاصة بك . ومن الخيارات الشائعة استخدام لوحة ESP32 مزودة بتقنية LoRa مدمجة، مثل TTGO LoRa32 V2.0 بتردد 868 ميجاهرتز، وإضافة مستشعر بسيط، مثل مستشعر درجة الحرارة DS18B20.

يتطلب هذا النهج أربعة أجزاء: لوحة التحكم (ESP32، Arduino، إلخ)، ووحدة راديو LoRa (على سبيل المثال RFM95 من النوع SX1276/78)، والمستشعر الذي تريد قياسه ، واختياريًا، الأجهزة الطرفية مثل شاشة OLED لعرض البيانات محليًا.

تأتي لوحة TTGO LoRa32 V2.0 مزودة بجهاز إرسال واستقبال LoRa مدمج، وشاشة OLED صغيرة حسب الإصدار. تعتمد هذه اللوحة على معالج ESP32، وتوفر اتصالاً بشبكة Wi-Fi وتقنية Bluetooth، وهي مثالية في كثير من الأحيان لبناء بوابة صغيرة أحادية القناة عند الاتصال بالإنترنت. مع ذلك، في هذه اللوحة واللوحات المشابهة، لا يتم توصيل بعض إشارات وحدة LoRa (DIO1، DIO2) مسبقًا بوحدة التحكم الدقيقة ، وسيتعين عليك توصيلها بنفسك.

على سبيل المثال، يستخدم جهاز TTGO LoRa32 V2.0 عادةً ترتيب الدبابيس التالي لتقنية LoRa: SCK على GPIO5، وMISO على GPIO19، وMOSI على GPIO27، وCS على GPIO18، وRESET على GPIO14، وDIO0 على GPIO26 . عادةً ما يتم توصيل DIO1 وDIO2 فعليًا بـ GPIO33 وGPIO32 على التوالي، واللذان يقعان متقابلين تمامًا في الصف المقابل، مما يُسهّل استخدام وصلة توصيل مباشرة.

توجد ثلاث طرق شائعة لإجراء هذه التوصيلات: لحام الأسلاك مباشرةً على الأطراف (للتجميع النهائي)، أو استخدام أسلاك التوصيل إذا كانت اللوحة مثبتة على لوحة تجارب ، أو توجيه التوصيلات إلى لوحة دوائر مطبوعة مخصصة يتم توصيل جهاز TTGO بها. عادةً ما يكون خيار أسلاك التوصيل هو الأنسب للاختبار.

برنامج Node: مكتبة LMIC، ومفاتيح التردد وTTN

لبرمجة عقدة LoRaWAN على Arduino/ESP32، يتم استخدام مكتبة MCCI LoRaWAN LMIC على نطاق واسع ، والتي تنفذ حزمة LoRaWAN وتدير كل شيء يتعلق بالقنوات، وعمليات الانضمام، وإعادة المحاولات، ونوافذ الاستقبال، وما إلى ذلك.

أولًا، ثبّت المكتبة من مدير المكتبات في بيئة تطوير أردوينو (Arduino IDE) بالبحث عن "LMIC" ثم اختيار "مكتبة MCCI LoRaWAN LMIC". بعد التثبيت، هناك ملاحظة هامة: بشكل افتراضي، تكون المكتبة مُهيأة للعمل مع US915 (الولايات المتحدة)، لذا إذا كنت في أوروبا، يجب عليك تغييرها إلى EU868.

للقيام بذلك، حدد موقع ملف lmic_project_config.h داخل مجلد المكتبة (على سبيل المثال: /Arduino/libraries/MCCI_LoRaWAN_LMIC_library/project_config/) وقم بتعديل التعريفات. قم بتعطيل CFG_us915 ​​وتفعيل CFG_eu868، مع التأكد من تفعيل نوع الراديو الصحيح (على سبيل المثال، CFG_sx1276_radio لوحدات SX1276/78). هذا تغيير يُجرى لمرة واحدة فقط، وينطبق على جميع مشاريع LMIC الخاصة بك.

ثم تفتح أحد الأمثلة المرفقة، على سبيل المثال ttn-abp ، الذي يرسل دوريًا عبارة "Hello, world!" كحمولة بيانات. يُستخدم هذا المثال كأساس لتكييفه مع لوحتك وبيانات اعتماد TTN الخاصة بك.

ستجد في الكود بنية lmic_pinmap التي تحدد منافذ NSS (CS) وRST وDIO . بشكل افتراضي، تكون هذه البنية مُخصصة عادةً لـ Feather M0 LoRa، لذا إذا كنت تستخدم TTGO LoRa32 V2.0، فستحتاج إلى تغيير هذه البنية لاستخدام .nss = 18 و.rst = 14 و.dio = {26, 33, 32} (بافتراض أنك قمت بتوصيل DIO1 بـ GPIO33 وDIO2 بـ GPIO32). إذا كان جهازك مختلفًا، فستحتاج إلى مراجعة وثائقه أو البحث عن مثال مُحدد.

بعد التأكد من صحة توصيلات الدبابيس، حان وقت تهيئة المفاتيح التي تُعرّف عقدتك في TTN . في مثال ttn-abp، تظهر المتغيرات NWKSKEY وAPPSKEY وDEVADDR مع كلمة FILLMEIN، لذا يمكنك ملؤها بقيمك الخاصة.

يمكنك الحصول على هذه البيانات من وحدة تحكم TTN عند إنشاء جهاز مُفعّل بتقنية ABP. توفر لك TTN مفتاح جلسة الشبكة (NWKSKEY)، ومفتاح جلسة التطبيق (APPSKEY)، وعنوان الجهاز (DEVADDR) . في واجهة المستخدم، تكون المفاتيح مخفية لأسباب أمنية، ولكن يمكنك إظهارها، والأهم من ذلك، نسخ القيمة مباشرةً كمصفوفة C (باستخدام زر "<>") مع مراعاة ترتيب البايتات الصحيح (msb). يؤدي النقر على أيقونة النسخ إلى نسخ المصفوفة إلى الحافظة، ويمكنك ببساطة لصقها في التعليمات البرمجية الخاصة بك في مكان كل عنصر FILLMEIN.

بالنسبة لـ NWKSKEY و APPSKEY، ستستخدم تنسيق مصفوفة البايت الذي توفره TTN ، بينما بالنسبة لـ DEVADDR، ستُعيّن القيمة السداسية العشرية كعدد صحيح واحد من النوع u4_t، على سبيل المثال، `static const u4_t DEVADDR = 0x26011111;`. وبهذا، ستتمكن عقدتك من المصادقة وتوجيه حزم البيانات إلى تطبيق TTN الخاص بك.

قم بدمج أجهزة الاستشعار في كود العقدة

بمجرد أن يعمل هيكل LoRaWAN الأساسي، حان الوقت لاستبدال عبارة "Hello, world!" المعتادة ببيانات المستشعر الحقيقية . بالاستمرار مع مثال TTGO LoRa32 وDS18B20، ستستخدم ناقل OneWire ومكتبة DallasTemperature.

  أجهزة الشبكة

في بداية البرنامج، قم بتضمين ملفات الرأس وتعريف منفذ ناقل البيانات: `#include <OneWire.h>`، `#include <DallasTemperature.h>`، و`#define ONE_WIRE_BUS X` ، حيث X هو منفذ GPIO الذي قمت بتوصيل المستشعر به. أنشئ كائن `OneWire` باسم `oneWire(ONE_WIRE_BUS)` وكائن `DallasTemperature` باسم `sensor(&oneWire). إذا لم تكن مكتبة DS18B20 مثبتة لديك، فأضفها من مدير المكتبات.

في دالة setup()، تقوم بتهيئة المستشعر باستخدام sensor.begin()، وإذا رغبت، يمكنك تحديد الدقة (على سبيل المثال، sensor.setResolution(11)) . بعد ذلك، يكون المستشعر جاهزًا لقراءة درجة الحرارة عند الحاجة.

الوظيفة الأساسية في LMIC لإرسال البيانات هي `do_send(osjob_t* j)`. ستجد داخلها فحصًا لوجود عملية إرسال جارية (`OP_TXRXPEND`). إذا لم تكن هناك عملية إرسال جارية، يمكنك استدعاء `sensor.requestTemperatures()`، والحصول على القيمة باستخدام `sensor.getTempCByIndex(0)`، وتخزينها في مصفوفة `mydata`. على سبيل المثال، يمكنك استخدام `mydata[0] = (uint8_t)sensor.getTempCByIndex(0);` لإرسال الجزء الصحيح فقط.

ثم تستدعي الدالة LMIC_setTxData2(1, mydata, sizeof(mydata), 0) ، حيث يمثل المعامل الأول منفذ LoRaWAN (1 في هذه الحالة)، والثاني حجم المخزن المؤقت، والثالث حجم البيانات، والأخير يشير إلى ما إذا تم تأكيد استلام الرسالة (1) أو عدم تأكيدها (0). بعد ذلك، تقوم المكتبة بجدولة الإرسال في أول خانة زمنية متاحة.

هناك العديد من التحسينات الممكنة: توسيع الحمولة لتشمل البيانات العشرية، وإضافة أجهزة استشعار أخرى، وتعبئة البيانات بتنسيق ثنائي فعال ، وما إلى ذلك. ولكن حتى في هذا الإصدار البسيط، لديك بالفعل عقدة ترسل بشكل دوري قياسات في الوقت الفعلي إلى TTN، وهي مرئية على وحدة التحكم وجاهزة للتكامل مع الأنظمة الأخرى.

تفعيل نظام OTAA، والأمن، والخبرة العملية

لقد ناقشنا حتى الآن بشكل أساسي تقنية ABP في أمثلة البرمجة، ولكن في بيئة الإنتاج، يُنصح بشدة باستخدام تقنية OTAA (التنشيط عبر الهواء) . تُعد OTAA هي الطريقة المستخدمة، على سبيل المثال، من قبل مستشعرات Decentlab والعديد من مستشعرات SenseCAP، لأنها تُعزز الأمان.

باستخدام تقنية OTAA، يتم التفاوض على جلسة LoRaWAN "أثناء البث" في كل مرة ينضم فيها الجهاز إلى الشبكة . وعندما يتم إيقاف تشغيل العقدة أو إعادة تشغيلها أو فقدان الاتصال، يتم إنشاء مفاتيح جلسة جديدة في المرة التالية التي تنضم فيها، مما يجعل من الصعب على أي شخص استنساخ الجهاز ببساطة عن طريق نسخ المفاتيح الثابتة.

في وحدة تحكم TTN، عند تحديد OTAA لجهاز، ستجد بدلاً من NWKSKEY وAPPSKEY الثابتين، DevEUI وJoinEUI/AppEUI وAppKey . يتم إنشاء مفاتيح الجلسة في كل مرة من هذه القيم ومن عملية التبادل مع الخادم، ولن ترى سوى المفاتيح المشتقة طوال مدة الجلسة.

في الواقع، وجد المستخدمون الذين يبدأون من الصفر مع LoRaWAN أنه مع وجود بوابة مسجلة لدى TTN ومستشعر OTAA مُهيأ بشكل صحيح، يمكن أن تكون عملية التسجيل بسيطة للغاية : إنشاء حساب على TTN، وتفعيل البوابة، وتسجيل المستشعر باستخدام المفاتيح التي يوفرها المصنع، وفي غضون دقائق قليلة عرض البيانات على منصة ويب (سواء كانت منصة Decentlab الخاصة، أو SenseCAP، أو لوحات معلومات تابعة لجهات خارجية).

تؤثر عوامل مثل موقع صندوق LoRa الخاص بالمستشعر (الأفضل في وضع رأسي، مما يفضل نمط الإشعاع للهوائي الداخلي) ، والبيئة اللاسلكية، وارتفاع البوابة بشكل كبير على التغطية الفعلية، ولكن عملية الإعداد تصبح آلية إلى حد ما بمجرد فهمها.

من TTN إلى تطبيقاتك: التكاملات والتصور

بعد أن بدأت العُقد بتحميل البيانات إلى شبكة TTN، تتمثل الخطوة التالية في دمج هذه المعلومات في تطبيقاتك أو لوحات المعلومات أو عمليات التشغيل الآلي . توفر TTN تكاملات قوية وواجهة برمجة تطبيقات (API) لهذا الغرض.

يُعد استخدام Node-RED لاستقبال البيانات من TTN ومعالجتها حسب الحاجة أسلوبًا شائعًا جدًا . تقوم بتهيئة اتصال MQTT أو HTTP باستخدام بيانات اعتماد تطبيق TTN الخاص بك، ثم تفك تشفير البيانات (وفقًا لتنسيق أجهزة الاستشعار لديك)، ومن ثم يمكنك القيام بأي شيء تقريبًا: الحفظ في قواعد البيانات، وعرض الرسوم البيانية، وإطلاق التنبيهات، وما إلى ذلك.

خيار آخر هو استخدام منصات خارجية متكاملة مع TTN ، مثل Datacake وMyDevices وResIoT وWMW وغيرها. تحتوي العديد من هذه المنصات على قوالب جاهزة لأجهزة مثل مستشعرات Decentlab أو بعض طرازات Dragino، لذا ما عليك سوى اختيار نوع الجهاز، وربطه بتطبيق TTN الخاص بك، ثم البدء في عرض البيانات على لوحات تحكم سهلة الاستخدام.

في المشاريع التعليمية، على سبيل المثال، استُخدمت شبكة TTN بالتزامن مع بوابات RAK7289 وأجهزة تتبع Dragino TrackerD لتحديد مواقع الأشخاص أو المركبات. وتتلخص آلية العمل فيما يلي: تسجيل البوابة، وتسجيل أجهزة التتبع في شبكة TTN، وعرض البيانات على وحدة التحكم، ثم عرضها في الوقت الفعلي على لوحة تحكم Datacake العامة مع خرائط ورسوم بيانية توضح الموقع ومستوى البطارية، وما إلى ذلك.

الشيء المهم الذي يجب فهمه هو أن TTN تعمل كطبقة شبكة LoRaWAN وموجه بيانات ؛ أنت تحدد طبقة التطبيق والتصور: من برنامج Python النصي الذي يستهلك واجهة برمجة التطبيقات إلى منصة بيانات إنترنت الأشياء الصناعية.

باختصار، يتطلب ربط عقدة LoRaWAN بشبكة TTN عدة خطوات (التردد الصحيح، وبوابة مُهيأة بشكل سليم، وتسجيل TTN، ومفاتيح العقدة، وتفعيل OTAA أو ABP، وبرمجيات الجهاز، وعمليات التكامل اللاحقة إن لزم الأمر)، ولكن كل جزء منها قابل للتنفيذ حتى بدون خبرة سابقة باتباع الإرشادات الصحيحة. بمجرد اكتمال الإعداد الأولي، يصبح نشر المزيد من العقد أو البوابات عملية قابلة للتكرار والتوسع بدرجة عالية، مما يجعلها مثالية لمشاريع الاستشعار واسعة النطاق، ومبادرات المدن الذكية، أو ببساطة للتعلم والتجربة في مجال إنترنت الأشياء بعيد المدى.