1- مقدمة
OpenThread هو تطبيق مفتوح المصدر لبروتوكول شبكات Thread®، وهو بروتوكول قوي وآمن للشبكات اللاسلكية المتداخلة مُصمم لأجهزة إنترنت الأشياء (IoT). تم تطوير OpenThread من قِبل فريق Nest من Google وهو متاح مجانًا لمنتدى المطوّرين كمشروع مفتوح المصدر.
تنشئ Thread Specification بروتوكول اتصال لاسلكي موثوق به وآمن وموفّر للطاقة للأجهزة ذات الموارد المحدودة الموجودة عادةً في المنازل الذكية والمباني التجارية. يشمل OpenThread النطاق الكامل لطبقة الشبكة داخل Thread، مثل IPv6، و6LoWPAN، وIEEE 802.15.4 مع أمان MAC، وإنشاء رابط الشبكة المتداخلة، وتوجيه الشبكة المتداخلة.
دمجت Telink تنفيذ OpenThread في نظام Zephyr RTOS، ما يتيح التوافق السلس مع أجهزة Telink. يمكن الوصول إلى رمز المصدر لهذا الدمج بسهولة على GitHub، ويتم توفيره أيضًا كحزمة تطوير برامج (SDK).
في هذا الدرس التطبيقي حول الترميز، ستبرمج OpenThread على أجهزة فعلية، وستنشئ شبكة Thread وتديرها وتبادل الرسائل بين العُقد. توضِّح الصورة أدناه عملية إعداد الأجهزة التي تتضمّن جهاز توجيه OT الحدودي (OTBR) وجهاز Thread في الدرس التطبيقي حول الترميز.
ما ستتعرَّف عليه
- إعداد تنفيذ OpenThread باستخدام بيئة تطوير Telink Zephyr.
- لإنشاء نماذج واجهة سطر الأوامر OpenThread (
ot-cli-ftd
وot-rcp
) وإدراجها في لوحات التطوير Telink B91، - لإعداد جهاز توجيه الحدود OpenThread (OTBR) باستخدام Docker على جهاز Raspberry Pi 3B أو إصدار أحدث.
- لإنشاء شبكة Thread على أجهزة OTBR، عليك اتّباع الخطوات التالية:
- لإضافة أجهزة إلى شبكة Thread باستخدام ميزة "تصحيح الأخطاء خارج النطاق"
- للتحقق من صحة الاتصال بين العقد في شبكة Thread باستخدام واجهة سطر الأوامر (CLI).
المتطلبات
الأجهزة:
- مجلسا تطوير B91.
- جهاز Raspbian Pi 3B أو إصدار أحدث مع صورة نظام التشغيل Raspbian
- جهاز يعمل بنظام التشغيل Linux ومزوّد بمنفذَي USB على الأقل
- مفتاح (أو جهاز توجيه) متصل بالإنترنت وعدة كابلات إيثرنت.
البرامج:
- أداة نسخ وتصحيح أخطاء Telink — LinuxBDT.
- أداة طرفية للمنفذ التسلسلي، مثل PuTTY.
- الأدوات الأخرى مثل، Git وWest.
2. المتطلبات الأساسية
مفاهيم سلسلة المحادثات وواجهة سطر الأوامر بنظام OpenThread
قد يكون من المفيد الاطّلاع على الدرس التطبيقي حول الترميز الخاص بمحاكاة OpenThread للتعرّف على مفاهيم Thread الأساسية وواجهة سطر الأوامر OpenThread قبل هذا الدرس التطبيقي حول الترميز.
جهاز Linux
يعمل جهاز Linux (الإصدار 20.04 LTS من نظام التشغيل Ubuntu أو الإصدارات الأحدث) كجهاز إنشاء لإعداد بيئة تطوير Telink Zephyr وتحميل جميع لوحات تطوير Thread. لإنجاز هذه المهام، يتطلب جهاز Linux منفذي USB متاحين واتصال إنترنت.
اتصال المنافذ التسلسلية والمحطات الطرفية
يمكنك توصيل الجهاز مباشرةً بمنفذ USB في الجهاز الذي يعمل بنظام التشغيل Linux. بالإضافة إلى ذلك، ستحتاج إلى أداة طرفية للمنفذ التسلسلي للوصول إلى الأجهزة.
في هذا الدرس التطبيقي حول الترميز، يتم استخدام أداة طرفية PuTTY للتحكم في رابط FTD وRaspberry Pi. يقدم هذا الدليل نظرة عامة على استخدامه، ولكن يمكن أيضًا استخدام برامج طرفية أخرى.
مجموعة أدوات تطوير Telink B91
يحتاج هذا الدرس التطبيقي حول الترميز إلى مجموعتَين من مجموعات أدوات تطوير B91. تعرض الصورة أدناه الحد الأدنى من المكوّنات المطلوبة في مجموعة واحدة.
سيتم استخدام إحدى هاتين المجموعتين كمعالج راديو مساعد (RCP)، في حين ستستخدم المجموعة الأخرى كجهاز مزود بسلاسل كاملة (FTD). إذا لم يسبق لك امتلاك المجموعة، يمكنك الحصول على مزيد من التفاصيل من موقع Telink الإلكتروني الرسمي. بعض المكونات التي سيتم استخدامها هي كما يلي:
الفهرس | الاسم |
1 | مجلس تطوير Telink B91 |
2 | لوح حرق Telink |
3 | هوائي بتردد 2.4 جيجا هرتز |
4 | كابل USB (من USB A إلى USB صغير) |
الإصدار Raspbian OS 3B أو إصدار أحدث مع نسخة نظام التشغيل Raspbian
في هذا الدرس التطبيقي حول الترميز، يجب توفُّر إصدار Raspbian Pi 3B أو إصدار أحدث مع صورة Raspbian Bullseye Lite OS أو Raspbian Bullseye مع جهاز كمبيوتر مكتبي. يتصل هذا الجهاز بالإنترنت من خلال إيثرنت، وسيتم ضبطه كمضيف لجهاز OpenThread ضبط موجّه الحدود (OTBR).
الاتصال بالشبكة
مفتاح تبديل (أو جهاز توجيه) متصل بالإنترنت وعدة كابلات إيثرنت. ويتم استخدام هذه الرموز لتوصيل جهاز Raspberry Pi بجهاز Linux، ما يؤدي إلى تسهيل تهيئة المستخدم لـ Raspberry Pi عبر المضيف.
LinuxBDT
تسمح لك أداة حرق وتصحيح الأخطاء (BDT) التي تنطبق على جميع سلاسل Telink Chip بمحو برامج OpenThread الثابتة وتصحيحها على لوحات التطوير Telink B91. ثبِّت إصدار linuxBDT المستند إلى X86 على الجهاز الذي يعمل بنظام التشغيل Linux.
غير ذلك
- Git لإعداد بيئة تطوير Telink Zephyr.
- الغرب، لإدارة مشروع Zephyr وإنشاء برامج ثنائية لـ OpenThread.
3. إعداد البرامج الثابتة
إعداد بيئة تطوير Telink Zephyr
في الجهاز الذي يعمل بنظام التشغيل Linux، افتح الوحدة الطرفية لواجهة سطر الأوامر (CLI) وابدأ تنفيذ الأوامر التالية للتأكد من أنّ APT محدّث.
$ sudo apt update $ sudo apt upgrade
بعد الانتهاء من ذلك، تابع الخطوات التالية.
- ثبّت التبعيات.
$ wget https://apt.kitware.com/kitware-archive.sh $ sudo bash kitware-archive.sh $ sudo apt install --no-install-recommends git cmake ninja-build \ gperf ccache dfu-util device-tree-compiler python3-dev python3-pip \ python3-setuptools python3-tk python3-wheel xz-utils file make gcc \ gcc-multilib g++-multilib libsdl2-dev
يتطلب Zephyr حاليًا الحد الأدنى من إصدارات التبعيات الرئيسية، مثل CMake (الإصدار 3.20.0) وPython3 (3.6) وDevicetree Compiler (1.4.6).$ cmake --version $ python3 --version $ dtc --version
يُرجى التحقّق من الإصدارات المثبَّتة على نظامك قبل متابعة الخطوات التالية. إذا لم تكن الإصدارات صحيحة، يمكنك تحويل نسخة APT إلى نسخة مطابقة مستقرة ومحدّثة، أو تعديل هذه التبعيات يدويًا. - تثبيت الإصدار الغربي
$ pip3 install --user -U west $ echo 'export PATH=~/.local/bin:"$PATH"' >> ~/.bashrc $ source ~/.bashrc
تأكَّد من أنّ~/.local/bin
ضِمن متغيّر بيئة$PATH
. - احصل على رمز المصدر لمشروع Zephyr.
$ west init ~/zephyrproject $ cd ~/zephyrproject $ west update $ west blobs fetch hal_telink $ west zephyr-export
- ثبِّت تبعيات Python إضافية لـ Zephyr.
$ pip3 install --user -r ~/zephyrproject/zephyr/scripts/requirements.txt
- قم بإعداد سلسلة أدوات Zephyr. يمكنك تنزيل سلسلة أدوات Zephyr (من 1 إلى 2 غيغابايت تقريبًا) إلى دليل محلي لتتمكن من تحميل معظم اللوحات.
$ wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.1/zephyr-sdk-0.16.1_linux-x86_64.tar.xz $ wget -O - https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.1/sha256.sum | shasum --check --ignore-missing
يمكنك تنزيل حزمة Zephyr SDK ووضعها في المسار المقترَح، كما هو موضّح أدناه.$HOME/zephyr-sdk[-x.y.z] $HOME/.local/zephyr-sdk[-x.y.z] $HOME/.local/opt/zephyr-sdk[-x.y.z] $HOME/bin/zephyr-sdk[-x.y.z] /opt/zephyr-sdk[-x.y.z] /usr/zephyr-sdk[-x.y.z] /usr/local/zephyr-sdk[-x.y.z]
حيث يكون الرمز [-x.y.z] عبارة عن نص اختياري يمكن أن يكون أي نص، مثل -0.16.1. لا يمكن نقل الدليل بعد تثبيت SDK. بعد ذلك، عليك تثبيت سلسلة أدوات Zephyr.$ tar xvf zephyr-sdk-0.16.1_linux-x86_64.tar.xz $ cd zephyr-sdk-0.16.1 $ ./setup.sh -t riscv64-zephyr-elf -h -c
- قم بإنشاء مثال Hello World. أولاً، تحقَّق من صحة ضبط مشروع Zephyr الرسمي باستخدام مثال Hello World، ثم تابع إعداد مشروعك المخصَّص.
$ cd ~/zephyrproject/zephyr $ west build -p auto -b tlsr9518adk80d samples/hello_world
يمكنك استخدام أمر إصدار West لإنشاء مثال hello_world من الدليل الجذري لمستودع Zephyr. يمكنك العثور على البرامج الثابتة باسمzephyr.bin
ضمنbuild/zephyr directory
. - أضِف النص البرمجي لبيئة Zephyr إلى
~/.bashrc
. نفِّذ الأوامر التالية.$ echo "source ~/zephyrproject/zephyr/zephyr-env.sh" >> ~/.bashrc $ source ~/.bashrc
- أضِف مستودع Telink Zephyr البعيد. نزِّل مستودع Telink محليًا كفرع للتطوير وعدِّله.
$ cd ~/zephyrproject/zephyr $ git remote add telink-semi https://github.com/telink-semi/zephyr $ git fetch telink develop $ git checkout develop $ west update $ west blobs fetch hal_telink
لمزيد من المعلومات، يمكنك الرجوع إلى مستند Zephyr – دليل البدء.
إعداد Telink LinuxBDT
يمكنك تنزيل أداة Telink LinuxBDT واستخراجها إلى دليل محلي على جهازك الذي يعمل بنظام التشغيل Linux، مثل الدليل الرئيسي ~
، ما يؤدي إلى تفعيل تثبيت البرامج الثابتة على لوحة تطوير B91.
$ cd ~ $ wget http://wiki.telink-semi.cn/tools_and_sdk/Tools/BDT/LinuxBDT.tar.bz2 $ tar -vxf LinuxBDT.tar.bz2
وصِّل لوحة Burning Board بجهاز Linux عبر واجهة USB، ثم أدخِل الأوامر التالية.
$ cd LinuxBDT $ sudo ./bdt lsusb -v Bus 002 Device 001: ID 1d6b:0003 xHCI Host Controller Bus 001 Device 003: ID 0bda:565a Integrated_Webcam_HD Bus 001 Device 023: ID 413c:301a Dell MS116 USB Optical Mouse Bus 001 Device 037: ID 248a:826a Telink Web Debugger v3.6 Bus 001 Device 001: ID 1d6b:0002 xHCI Host Controller
إذا ظهرت لك الرسالة "Telink Web Debugger v3.6"، يعني ذلك أنّه تم توصيل برنامج BDT بالجهاز الذي يعمل بنظام التشغيل Linux بنجاح.
تجميع البرامج الثابتة
سينشئ هذا الدرس التطبيقي حول الترميز نوعَين من برامج OpenThread الثابتة:
ot-cli-ftd
,- و
ot-rcp
.
طرق التجميع هي كما يلي:
- معالِج راديو مساعد(
ot-rcp
)$ cd ~/zephyrproject $ rm -rf build_ot_coprocessor $ west build -b tlsr9518adk80d -d build_ot_coprocessor zephyr/samples/net/openthread/coprocessor -- -DDTC_OVERLAY_FILE="usb.overlay" -DOVERLAY_CONFIG=overlay-rcp-usb-telink.conf
- جهاز Thread كامل الميزات مع سطر الأوامر التفاعلي (
ot-cli-ftd
)$ cd ~/zephyrproject $ rm -rf build_ot_cli_ftd $ west build -b tlsr9518adk80d -d build_ot_cli_ftd zephyr/samples/net/openthread/cli -- -DOVERLAY_CONFIG=overlay-telink-fixed-mac.conf -DCONFIG_OPENTHREAD_FTD=y
فلاش للبرامج الثابتة
وصِّل لوح تطوير B91 بلوح الاحتراق باستخدام كابل USB كما هو موضح في الشكل أدناه.
في سطر الأوامر، نفِّذ الأوامر التالية لنسخ البرامج الثابتة (باستخدام فلاش البرامج الثابتة ot-cli-ftd
كمثال).
$ cd ~/zephyrproject/build_ot_cli_ftd/zephyr $ cp zephyr.bin ~/LinuxBDT/bin/ot-cli-ftd.bin $ cd ~/LinuxBDT $ sudo ./bdt 9518 ac Activate OK! $ sudo ./bdt 9518 wf 0 -i bin/ot-cli-ftd.bin EraseSectorsize... Total Time: 2181 ms Flash writing... [100%][-] [##################################################] File Download to Flash at address 0x000000: 491700 bytes Total Time: 30087 ms
إنّ طريقة الفلاش في ot-rcp
هي نفسها الطريقة المستخدمة في ot-cli-ftd
. ومع ذلك، هناك اختلافات في مسارات البرامج الثابتة وأسمائها.
بعد استعراض لوحة التطوير، قم بتمييز لوحة التطوير B91 عن طريق وضع علامة عليها وفقًا لذلك. عليك تصنيف اللوح في وميض ot-cli-ftd
باسم "FTD Joiner" والوميض ot-rcp
على "RCP".
4. ضبط وحدة التحكّم التسلسلية لجهاز الانضمام FTD
كما هو موضّح في الصورة، عليك توصيل أداة FTD مباشرةً بمنفذ USB في جهاز Linux.
بعد توصيل جهاز Join FTD بجهاز Linux، افتح PuTTY. بعد ذلك، أنشئ وحدة طرفية جديدة واضبط معلومات المنفذ التسلسلي، ثم افتح المنفذ التسلسلي.
مرجع سطر أوامر OpenThread هنا: مرجع واجهة سطر الأوامر OpenThread. تأكَّد من استخدام ot
كبادئة لجميع الأوامر.
أمثلة:
> ot state disabled Done > ot channel 11 Done >
5. إعداد جهاز Raspberry Pi كجهاز توجيه بحدود OpenThread
جهاز التوجيه الحدودي OpenThread هو جهاز يتكون من جزأين رئيسيين:
- يشتمل إصدار Raspberry Pi على جميع الخدمات والبرامج الثابتة اللازمة لتعمل كجهاز توجيه حدودي (BR).
- تكون RCP مسؤولة عن اتصال Thread.
معالج راديو مساعد(RCP)
لتثبيت برامج ot-rcp
الثابتة، اتّبِع الخطوات نفسها المتّبعة في عملية تثبيت البرامج الثابتة ot-cli-ftd
. اربط لوحة التطوير B91 بمنفذ USB على جهاز Raspberry Pi، كما هو موضح في الشكل أدناه.
توت باي
- تأكَّد من كتابة Raspbian Bullseye Lite OS أو Raspbian Bullseye مع كمبيوتر مكتبي بشكل صحيح على بطاقة SD.
- لديك خيار إما استخدام بروتوكول النقل الآمن في Raspbian Pi أو العمل مباشرةً باستخدام Raspbian Desktop. سيستخدم هذا الدرس التطبيقي حول الترميز بروتوكول النقل الآمن.
- قبل مواصلة تثبيت OTBR Docker في الخطوة التالية، تأكَّد من تحديث المستودع المحلي ومدير الحزم أولاً.
$ sudo apt-get update $ sudp apt-get upgrade
تثبيت Docker
فإذا حدّثت للتو المستودع المحلي ومدير الحزم APT في الخطوة السابقة، فأعد تشغيل Raspberry Pi ثم افتح نافذة المحطة الطرفية SSH.
- تثبيت Docker:
$ curl -sSL https://get.docker.com | sh
- ضَع الحساب الحالي في مجموعة Docker لمنح الإذن بحيث لا يلزم إضافة
sudo
قبل كل أمر.$ sudo usermod -aG docker $USER
يجب إعادة تشغيل جهاز Raspberry Pi ليتم تفعيله. - إذا لم يبدأ Docker، شغِّله:
$ sudo dockerd
- تُنشئ النصوص البرمجية لجدار الحماية OTBR قواعد داخل حاوية Docker. وقبل ذلك، نفِّذ
modprobe
لتحميل وحدة النواة kernel في iptables.$ sudo modprobe ip6table_filter
إعداد Docker وتشغيله
يسحب هذا الدرس التطبيقي حول الترميز مباشرةً صورة OTBR Docker من OpenThread Docker Hub. تمّ اختبار هذه الصورة والتحقّق منها من قِبل فريق OpenThread.
- سحب أحدث صورة:
$ docker pull openthread/otbr:latest
- تحقَّق من قائمة الصور في حاوية Docker:
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE openthread/otbr latest db081f4de15f 6 days ago 766MB
- حدِّد اسم المنفذ التسلسلي لجهاز RCP من خلال وضع علامة في المربّع
/dev
، وتشير السمةttyACM0
إلى أنّه تم توصيل RCP بشكل صحيح.$ ls /dev/tty* ... /dev/ttyACM0 ...
- شغِّل OTBR Docker للمرة الأولى، مع الإشارة إلى المنفذ التسلسلي لـ RCP (
ttyACM0
). إذا أردت مواصلة استخدام OTBR Docker، استخدِم الأمر docker start otbr.$ docker run --name "otbr" --sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" -p 8080:80 --dns=127.0.0.1 -it --volume /dev/ttyACM0:/dev/ttyACM0 --privileged openthread/otbr --radio-url spinel+hdlc+uart:///dev/ttyACM0
- افتح نافذة طرفية جديدة لبروتوكول SSH لاختبار الاتصال بين Raspberry Pi وRCP.
$ docker exec -ti otbr sh -c "sudo ot-ctl" > state disabled Done
أوامر Docker الاختيارية:
- الحصول على معلومات عن حاوية Docker قيد التشغيل:
$ docker ps -aq
- إيقاف OTBR Docker:
$ docker stop otbr
- إزالة OTBR Docker:
$ docker rm otbr
- إعادة تحميل OTBR Docker:
$ docker restart otbr
في هذه المرحلة، أصبح جهاز FTD Joiner وOTBR جاهزين، ويمكنك المتابعة إلى الخطوة التالية لإنشاء شبكة Thread.
6. إنشاء شبكة Thread
إنشاء شبكة Thread Network على RCP
نستخدم واجهة ot-ctl المتوفّرة على OTBR لإنشاء شبكة Thread. إذا خرجت من واجهة الأوامر في القسم الأخير، أدخل الأمر التالي لتشغيلها مرة أخرى في الوحدة الطرفية لبروتوكول النقل الآمن:
$ docker exec -ti otbr sh -c "sudo ot-ctl"
بعد ذلك، أدخل الأوامر بالترتيب المحدد في الجدول، وتأكد من أن كل خطوة تحقق النتيجة المتوقعة قبل المتابعة إلى الخطوة التالية.
الفهرس | Command | مقدمة | الاستجابة المتوقعة | ||
1 |
| قم بإنشاء مجموعة بيانات شبكة عشوائية جديدة. | تم | ||
2 |
| نقل مجموعة البيانات الجديدة إلى مجموعة البيانات التشغيلية النشطة في مساحة تخزين غير متطايرة | تم | ||
3 |
| اعرض واجهة IPv6. | تم | ||
4 |
| تفعيل عملية بروتوكول Thread والإرفاق بشبكة Thread | تم | ||
انتظِر لمدة 10 ثوانٍ إلى أن تظهر واجهة سلسلة المحادثات. | |||||
5 |
| تحقَّق من حالة الجهاز.يمكن استدعاء هذا الأمر عدة مرات حتى يصبح القائد وينتقل إلى الخطوة التالية. | قائد | ||
6 |
| تحقق من مجموعة البيانات التشغيلية النشطة الكاملة وسجل مفتاح الشبكة. | الطابع الزمني النشط: 1 |
سيُستخدَم مفتاح الشبكة الذي تم إنشاؤه عشوائيًا من خلال OTBR أثناء إنشاء الشبكة عندما ينضم ot-cli-ftd
جهاز إلى شبكة Thread هذه.
إضافة رابط FTD إلى سلسلة المحادثات من خلال عملية التكليف خارج الإطار
يشير التشغيل خارج النطاق إلى نقل بيانات اعتماد الشبكة إلى الأجهزة التي تنتظر انضمام الشبكة من خلال طرق غير لاسلكية (على سبيل المثال، الدخول يدويًا في واجهة سطر الأوامر OpenThread). أدخل الأوامر التالية بالترتيب في وحدة التحكم التسلسلية إلى أداة Join FTD.
الفهرس | Command | مقدمة | الردود المتوقعة | ||
1 |
| لا يلزم سوى مفتاح الشبكة للاتصال بشبكة Thread. | تم | ||
2 |
| نقل مجموعة البيانات الجديدة إلى مجموعة البيانات التشغيلية النشطة في مساحة تخزين غير متطايرة | تم | ||
3 |
| اعرض واجهة IPv6. | تم | ||
4 |
| تفعيل عملية بروتوكول Thread والإرفاق بشبكة Thread | تم | ||
الانتظار لمدة 20 ثانية إلى أن ينضم الجهاز إلى الموقع ويضبط إعداداته | |||||
5 |
| تحقَّق من حالة الجهاز. | طفل/جهاز توجيه |
علم الطوبولوجيا
أدخِل أوامر مثل ipaddr
وchild table
وrouter table
في محطة SSH الطرفية للحصول على ردود مثل مقتطفات الرمز التالية.
> ipaddr rloc fd8c:60bc:a98:c7ba:0:ff:fe00:b000 Done > child table | ID | RLOC16 | Timeout | Age | LQ In | C_VN |R|D|N|Ver|CSL|QMsgCnt|Suprvsn| Extended MAC | +-----+--------+------------+------------+-------+------+-+-+-+---+---+-------+-------+------------------+ | 1 | 0xb001 | 240 | 23 | 3 | 51 |1|1|1| 3| 0 | 0 | 129 | 82bc12fbe783468e | Done > router table | ID | RLOC16 | Next Hop | Path Cost | LQ In | LQ Out | Age | Extended MAC | Link | +----+--------+----------+-----------+-------+--------+-----+------------------+------+ | 44 | 0xb000 | 63 | 0 | 0 | 0 | 0 | 7ae354109d611f7e | 0 | Done ... > child table | ID | RLOC16 | Timeout | Age | LQ In | C_VN |R|D|N|Ver|CSL|QMsgCnt|Suprvsn| Extended MAC | +-----+--------+------------+------------+-------+------+-+-+-+---+---+-------+-------+------------------+ Done > router table | ID | RLOC16 | Next Hop | Path Cost | LQ In | LQ Out | Age | Extended MAC | Link | +----+--------+----------+-----------+-------+--------+-----+------------------+------+ | 33 | 0x8400 | 63 | 0 | 3 | 3 | 13 | e61487c1cda940a6 | 1 | | 44 | 0xb000 | 63 | 0 | 0 | 0 | 0 | 7ae354109d611f7e | 0 | Done
RLOC16
من OTBR هو 0xb000
وRLOC16
في FTD هو في الأساس 0xb001
. بعد ذلك، تصبح قيمة RLOC16
الخاصة بأداة الربط FTD 0x8400
بعد الحصول على رقم تعريف جهاز التوجيه. يتضح لي أنّ أداة ربط FTD تمت ترقيتها من جهاز ثانوي إلى جهاز توجيه.
تحتوي شبكة Thread الحالية على عقدتين، والمخطط الهيكلي كما هو موضح في الشكل أدناه.
7. الاتصال بين أجهزة مزوّدة بسلاسل
إشعارات ICMPv6
ونستخدم الأمر ping
للتأكّد مما إذا كان بإمكان أجهزة Thread المتصلة بالشبكة نفسها الاتصال ببعضها بعضًا. عليك أولاً استخدام الأمر ipaddr
للحصول على مقياس RLOC للجهاز.
> ipaddr fd8c:60bc:a98:c7ba:0:ff:fe00:fc11 fdbd:7274:649c:1:1d19:9613:f705:a5af fd8c:60bc:a98:c7ba:0:ff:fe00:fc10 fd8c:60bc:a98:c7ba:0:ff:fe00:fc38 fd8c:60bc:a98:c7ba:0:ff:fe00:fc00 fd8c:60bc:a98:c7ba:0:ff:fe00:b000 # Routing Locator (RLOC) fd8c:60bc:a98:c7ba:5249:34ab:26d1:aff6 fe80:0:0:0:78e3:5410:9d61:1f7e Done
أدخل الأمر التالي في وحدة التحكم التسلسلية لـ Join FTD لتنفيذ عملية ping.
> ot ping fd8c:60bc:a98:c7ba:0:ff:fe00:b000 16 bytes from fd8c:60bc:a98:c7ba:0:ff:fe00:b000: icmp_seq=1 hlim=64 time=19ms 1 packets transmitted, 1 packets received. Packet loss = 0.0%. Round-trip min/avg/max = 19/19.0/19 ms. Done
تشير استجابة الإخراج للمنفذ التسلسلي إلى أن جانب OTBR قد تلقى طلب ping، وأن أداة الربط FTD قد تلقى استجابة ping التي يعرضها OTBR. تم الاتصال بين الجهازين بنجاح.
اتصالات UDP
وتشمل خدمات التطبيقات التي يوفرها OpenThread أيضًا بروتوكول UDP. يمكنك استخدام واجهة برمجة تطبيقات UDP لتمرير المعلومات بين العُقد في شبكة Thread أو تمرير المعلومات إلى الشبكات الخارجية من خلال جهاز توجيه الحدود. تتوفر المقدمة التفصيلية لواجهة برمجة تطبيقات UDP الخاصة بـ OpenThread في واجهة سطر الأوامر OpenThread - مثال على بروتوكول UDP. سيستخدم هذا الدرس التطبيقي حول الترميز بعض واجهات برمجة التطبيقات الخاصة به لنقل المعلومات بين OTBR وFTD Join.
أولاً، عليك الحصول على معرّف شريحة SIM المضمّنة (EID) المحلي لخدمة OTBR. هذا العنوان هو أيضًا أحد عناوين IPv6 لجهاز Thread، ويمكن استخدامه للوصول إلى أجهزة Thread في قسم شبكة Thread نفسه.
> ipaddr mleid fd8c:60bc:a98:c7ba:5249:34ab:26d1:aff6 Done
أدخل الأوامر التالية في الوحدة الطرفية لبروتوكول النقل الآمن لتمكين OTBR UDP وربط المنفذ 1022 بالجهاز.
> udp open Done > udp bind :: 1022 Done
أدخل الأوامر التالية في وحدة التحكم التسلسلية ومكّن UDP لـ FTD Join. عليك ربط المنفذ 1022 للجهاز، ثم إرسال رسالة hello
بحجم 5 بايت إلى OTBR.
> ot udp open Done > ot udp bind :: 1022 Done > ot udp send fd8c:60bc:a98:c7ba:5249:34ab:26d1:aff6 1022 hello Done
تخرج محطة SSH المعلومات التالية. يتلقّى OTBR رسالة hello
من أداة الانضمام FTD، ما يعني أن اتصال UDP ناجح.
> 5 bytes from fd8c:60bc:a98:c7ba:9386:63cf:19d7:5a61 1022 hello
8. تهانينا
لقد أنشأت شبكة Thread بسيطة وتحقَّقت من الاتصال داخل هذه الشبكة.
أنت تعرف الآن ما يلي:
- كيفية إنشاء بيئة تطوير Telink Zephyr واستخدامها.
- طريقة إنشاء البرنامجين الثنائيين
ot-cli-ftd
وot-rcp
، وإدراجهما في لوحات التطوير Telink B91. - كيفية إعداد إصدار Raspberry Pi 3B أو إصدار أحدث كجهاز توجيه الحدود OpenThread (OTBR) باستخدام Docker
- كيفية إنشاء شبكة Thread على خدمة OTBR.
- كيفية إضافة أجهزة إلى شبكة Thread من خلال عملية التكليف خارج النطاق.
- طريقة التحقّق من إمكانية الاتصال بين العُقد في شبكة Thread
قراءات إضافية
اطّلِع على openthread.io وGitHub للتعرّف على مصادر OpenThread المختلفة، بما في ذلك:
- الأنظمة الأساسية المتوافقة: يمكنك اكتشاف جميع الأنظمة الأساسية التي تتوافق مع OpenThread.
- إنشاء OpenThread: يمكنك معرفة المزيد من التفاصيل حول إنشاء OpenThread وضبطه.
- Thread Primer: يشمل جميع مفاهيم سلسلة المحادثات المضمَّنة في هذا الدرس التطبيقي حول الترميز
المستندات المرجعية: