1. مقدمة
OpenThread عبارة عن تنفيذ مفتوح المصدر لبروتوكول شبكة Thread®، وهو بروتوكول شبكة لاسلكية متداخلة قوي وآمن ومصمَّم لأجهزة إنترنت الأشياء (IoT). تم تطوير OpenThread من قِبل فريق Nest في Google، وهو متاح مجانًا لمنتدى المطوّرين كمشروع مفتوح المصدر.
توفّر مواصفات Thread بروتوكول اتصال لاسلكي موثوقًا به وموفّرًا للطاقة للأجهزة محدودة الموارد التي يشيع العثور عليها في المنازل الذكية والمباني التجارية. يشتمل OpenThread على نطاق طبقة الشبكة بالكامل في Thread، مثل IPv6 و6LoWPAN وIEEE 802.15.4 مع أمان MAC وإنشاء رابط شبكة متداخلة وتوجيه الشبكة المتداخلة.
دمجت Telink تنفيذ OpenThread في Zephyr RTOS، ما يتيح التوافق السلس مع أجهزة Telink. يمكن الوصول إلى رمز المصدر الخاص بعملية الدمج هذه بسهولة على GitHub، ويتم توفيره أيضًا على شكل حزمة تطوير برامج (SDK).
في هذا الدرس التطبيقي حول الترميز، ستقوم ببرمجة OpenThread على الأجهزة الفعلية وإنشاء شبكة Thread وإدارتها وتبادل الرسائل بين العُقد. تعرِض الصورة أدناه إعداد الجهاز الذي يظهر فيه جهاز توجيه الحدود الخارجية (OTBR) وجهاز Thread واحد في الدرس التطبيقي حول الترميز.
ما ستتعرَّف عليه
- لإعداد تنفيذ OpenThread باستخدام بيئة تطوير Telink Zephyr
- لإنشاء نموذجَي OpenThread CLI (
ot-cli-ftd
وot-rcp
) وتثبيتهما على Telink B91 Development Boards - لإعداد جهاز توجيه الحدود OpenThread (OTBR) باستخدام Docker على جهاز Raspberry Pi 3B+ أو إصدار أحدث.
- لإنشاء شبكة Thread على بروتوكول OTBR.
- إضافة أجهزة إلى شبكة Thread باستخدام تصحيح الأخطاء خارج النطاق
- للتحقّق من الاتصال بين العُقد في شبكة Thread باستخدام واجهة سطر الأوامر.
المتطلبات
الأجهزة:
- لوحان للتطوير B91.
- إصدار واحد من Raspberry Pi 3B أو أعلى مع نسخة نظام التشغيل Raspbian
- جهاز Linux مزوَّد بمنفذي USB على الأقل
- مفتاح تحكّم (أو جهاز توجيه) متصل بالإنترنت وعدّة كابلات إيثرنت.
البرامج:
- أداة Telink Burning وتصحيح الأخطاء — LinuxBDT
- أداة المحطة الطرفية للمنفذ التسلسلي، مثل PuTTY
- أدوات أخرى مثل Git وWest.
2. المتطلبات الأساسية
مفاهيم Thread وOpenThread CLI
قد يكون من المفيد الاطّلاع على الدرس التطبيقي حول ترميز محاكاة OpenThread للتعرّف على المفاهيم الأساسية لسلسلة المحادثات وواجهة سطر الأوامر OpenThread قبل هذا الدرس التطبيقي حول الترميز.
جهاز Linux
يعمل جهاز Linux (الإصدار 20.04 من نظام التشغيل LTS أو الإصدارات الأحدث) كآلة إنشاء لإعداد بيئة تطوير Telink Zephyr وتنشيط جميع لوحات تطوير Thread. لإنجاز هذه المهام، يتطلب جهاز Linux منفذَي USB واتصال بالإنترنت.
اتصال المنافذ التسلسلية والأطراف الطرفية
يمكنك توصيل الجهاز مباشرةً بمنفذ USB في جهاز Linux. بالإضافة إلى ذلك، ستحتاج إلى أداة طرفية للمنفذ التسلسلي للوصول إلى الأجهزة.
في هذا الدرس التطبيقي حول الترميز، يتم استخدام الأداة الطرفية PuTTY للتحكم في أداة FTD Joiner وRaspberry Pi. وهو يُقدّم نظرة عامة حول استخدامه، مع أنّه يمكن أيضًا استخدام برامج طرفية أخرى.
مجموعة أدوات تطوير Telink B91
يحتاج هذا الدرس التطبيقي حول الترميز إلى مجموعتَين من مجموعات أدوات تطوير B91. تعرض الصورة أدناه الحد الأدنى من المكونات المطلوبة في مجموعة واحدة.
سيتم استخدام إحدى هاتين المجموعتين كـ RCP (معالج مساعد راديو)، بينما تعمل المجموعة الأخرى كجهاز FTD (جهاز مزوّد بمؤشر كامل للأسلاك). في حال عدم امتلاك مجموعة الأدوات بعد، يمكنك الحصول على المزيد من التفاصيل من موقع Telink الإلكتروني الرسمي. في ما يلي بعض المكوّنات المطلوب استخدامها:
الفهرس | الاسم |
1 | لوحة تطوير Telink B91 |
2 | لوح احتراق Telink |
3 | هوائي 2.4 جيجاهرتز |
4 | كابل USB (USB A إلى USB صغير) |
الإصدار Raspberry Pi 3B أو الإصدارات الأحدث مع نسخة نظام التشغيل Raspbian
في هذا الدرس التطبيقي حول الترميز، يجب استخدام جهاز Raspberry Pi 3B أو إصدار أحدث مع صورة Raspbian Bullseye Lite OS أو Rspbian Bullseye مع كمبيوتر مكتبي. ويتصل بالإنترنت عبر إيثرنت وسيتم ضبطه كمضيف لجهاز توجيه الحدود OpenThread (OTBR).
الاتصال بالشبكة
مفتاح تحكّم (أو جهاز توجيه) متصل بالإنترنت وعدّة كابلات إيثرنت. ويتم استخدامها لتوصيل Raspberry Pi بجهاز Linux، مما يسهل تكوين مستخدم Raspberry Pi عبر المضيف.
LinuxBDT
تسمح لك أداة Burning and Debugging أداة (BDT) من Telink، التي تنطبق على جميع سلاسل Telink Chip، بمحو برامج OpenThread الثابتة وترميزها على لوحات التطوير Telink B91. ثبِّت إصدار linux المستند إلى X86 linuxBDT على جهاز Linux.
غير ذلك
- Git لإعداد بيئة Telink Zephyr Development Environment
- الغرب، لإدارة مشروع Zephyr وإنشاء برامج ثنائية من OpenThread.
3- إعداد البرامج الثابتة
إعداد بيئة تطوير Telink Zephyr
في جهاز Linux، افتح نافذة CLI الطرفية وابدأ بتنفيذ الأوامر التالية للتأكد من أن APT محدّث.
$ sudo apt update $ sudo apt upgrade
بعد الانتهاء من ذلك، اتّبِع الخطوات التالية.
- ثبِّت التبعيات.
يتطلب Zephyr حاليًا الحد الأدنى من إصدارات التبعيات الرئيسية، مثل CMake (3.20.0) وPython3 (3.6) وDevicetree Compiler (1.4.6).$ 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
تحقق من الإصدارات المثبتة على نظامك قبل المتابعة إلى الخطوات التالية. إذا لم تكن الإصدارات صحيحة، يمكنك تبديل النسخة المطابِقة لـ APT إلى نسخة مطابقة ثابتة ومحدّثة، أو تحديث هذه التبعيات يدويًا.$ cmake --version $ python3 --version $ dtc --version
- ثبِّت الجهاز في الغرب.
تأكَّد من أنّ الحقل$ 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
- تثبيت تبعيات بايثون إضافية لـ Zephyr.
$ pip3 install --user -r ~/zephyrproject/zephyr/scripts/requirements.txt
- ابدأ إعداد سلسلة أدوات Zephyr. يمكنك تنزيل سلسلة أدوات Zephyr (حوالي 1~2 غيغابايت) إلى دليل محلي للسماح لك بتشغيل معظم اللوحات.
قم بتنزيل حزمة Zephyr SDK ووضعها في المسار المُقترَح، كما هو موضح أدناه.$ 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
عندما يكون [-x.y.z] نصًا اختياريًا يمكن أن يكون أي نص، مثل -0.16.1. لا يمكن نقل الدليل بعد تثبيت حزمة تطوير البرامج (SDK). بعد ذلك، عليك تثبيت سلسلة أدوات Zephyr.$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]
$ 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، ثم تابع إعداد مشروعك المخصص.
استخدم أمر إصدار West لإنشاء مثال hello_world من الدليل الجذر لمستودع Zephyr. يمكنك العثور على البرامج الثابتة المُسمّاة "$ cd ~/zephyrproject/zephyr $ west build -p auto -b tlsr9518adk80d samples/hello_world
zephyr.bin
" ضمن "build/zephyr directory
". - أضِف النص البرمجي لبيئة Zephyr إلى
~/.bashrc
. نفِّذ الأوامر التالية.$ echo "source ~/zephyrproject/zephyr/zephyr-env.sh" >> ~/.bashrc $ source ~/.bashrc
- أضِف مستودع Telink Zephyr البعيد. تنزيل Telink repo محليًا كفرع للتطوير وتحديثه
$ 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، مثل الدليل الرئيسي ~
، لإتاحة تحديث البرامج الثابتة لبرامج Flash في لوحة تطوير 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
- جهاز سلسلة محادثات مكتمل الميزات ويستخدم سطر أوامر تفاعلي (
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 بلوحة Burning Board باستخدام كابل 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.
بعد توصيل جهاز FTD Joiner بجهاز Linux، افتح PuTTY. بعد ذلك، أنشِئ وحدة طرفية جديدة واضبط معلومات المنفذ التسلسلي وافتح المنفذ التسلسلي.
يتوفّر مرجع سطر أوامر OpenThread هنا: OpenThread CLI Reference. تأكَّد من إضافة بادئة لجميع الأوامر إلى ot
.
أمثلة:
> ot state disabled Done > ot channel 11 Done >
5- إعداد Raspberry Pi كجهاز توجيه الحدود OpenThread
جهاز توجيه الحدود OpenThread هو جهاز يتكون من جزأين رئيسيين:
- يحتوي Rspberry Pi على جميع الخدمات والبرامج الثابتة المطلوبة للعمل كجهاز توجيه الحدود (BR).
- RCP مسؤول عن التواصل عبر سلسلة المحادثات.
معالج راديو مساعد (RCP)
لتشغيل برامج ot-rcp
الثابتة، يُرجى اتّباع الخطوات نفسها الواردة في عملية تثبيت البرامج الثابتة ot-cli-ftd
. قم بتوصيل لوحة التطوير B91 بمنفذ USB على جهاز Raspberry Pi، كما هو موضح في الشكل أدناه.
توت باي
- تأكَّد من كتابة صورة Rspbian Bullseye Lite OS أو Rspbian Bullseye مع جهاز كمبيوتر سطح المكتب بشكلٍ صحيح على بطاقة SD.
- يمكنك اختيار إما استخدام بروتوكول النقل الآمن في Raspberry 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
أمام كل أمر. يجب إعادة تشغيل Raspberry Pi لكي يتم تفعيله.$ sudo usermod -aG docker $USER
- إذا لم يبدأ Docker، ابدأ بتشغيله:
$ sudo dockerd
- تنشئ النصوص البرمجية لجدار الحماية OTBR قواعد داخل حاوية Docker. قبل ذلك، نفِّذ
modprobe
لتحميل وحدة النواة في أجهزة iptable.$ 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
- إيقاف Docker لـ OTBR:
$ docker stop otbr
- إزالة Docker لـ OTBR:
$ docker rm otbr
- إعادة تحميل Docker: OTBR:
$ docker restart otbr
في هذه المرحلة، أصبح جهاز ضم FTD وOTBR جاهزَين، ويمكنك المتابعة إلى الخطوة التالية لإنشاء شبكة Thread.
6- إنشاء شبكة Thread
إنشاء شبكة Thread Network على RCP
نستخدم واجهة الأوامر ot-ctl على بروتوكول OTBR لإنشاء شبكة Thread. إذا خرجت من واجهة الأوامر في القسم الأخير، أدخل الأمر التالي لبدء تشغيلها مرة أخرى في الوحدة الطرفية لبروتوكول النقل الآمن (SSH):
$ docker exec -ti otbr sh -c "sudo ot-ctl"
بعد ذلك، أدخِل الأوامر بالترتيب المحدد في الجدول، وتأكَّد من أنّ كل خطوة تحقّق النتيجة المتوقعة قبل المتابعة إلى الخطوة التالية.
الفهرس | Command | مقدمة | الاستجابة المتوقعة | ||
1 |
| أنشئ مجموعة بيانات شبكة عشوائية جديدة. | تم | ||
2 |
| الالتزام بمجموعة البيانات الجديدة بمجموعة البيانات التشغيلية النشطة في التخزين غير المتقلب. | تم | ||
3 |
| اعرض واجهة IPv6. | تم | ||
4 |
| يمكنك تفعيل عملية بروتوكول Thread وتوصيلها بشبكة Thread. | تم | ||
انتظِر لمدة 10 ثوانٍ إلى أن تكتمل واجهة سلاسل المحادثات. | |||||
5 |
| تحقَّق من حالة الجهاز.يمكن استدعاء هذا الأمر عدة مرات حتى يصبح القائد وينتقل إلى الخطوة التالية. | leader | ||
6 |
| تحقق من مجموعة البيانات التشغيلية النشطة بالكامل وسجّل مفتاح الشبكة. |
سيتم استخدام مفتاح الشبكة الذي يتم إنشاؤه عشوائيًا من خلال OTBR أثناء إنشاء الشبكة عندما ينضم ot-cli-ftd
جهاز إلى شبكة Thread هذه.
إضافة أداة FTD Joiner إلى Thread من خلال التشغيل خارج الإطار
يشير التشغيل خارج النطاق إلى نقل بيانات اعتماد الشبكة إلى الأجهزة التي تنتظر انضمامها إلى الشبكة من خلال طرق غير لاسلكية (على سبيل المثال، الدخول يدويًا في واجهة سطر الأوامر OpenThread). أدخل الأوامر التالية بالترتيب في وحدة التحكم التسلسلية إلى FTD Joiner.
الفهرس | 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 Joiner 0x8400
بعد الحصول على رقم تعريف جهاز التوجيه. يتضح لنا أنه تمت ترقية أداة FTD Joiner من جهاز ثانوي إلى جهاز توجيه.
تحتوي شبكة 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
أدخل الأمر التالي في وحدة التحكم التسلسلية لـ FTD Joiner لتنفيذ عملية فحص الاتصال.
> 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 استجابة فحص الاتصال التي عرَضها OTBR. تم الاتصال بين الجهازين بنجاح.
اتصال UDP
تشمل خدمات التطبيق التي تقدمها OpenThread أيضًا بروتوكول UDP. يمكنك استخدام واجهة برمجة تطبيقات UDP لتمرير المعلومات بين العُقد في شبكة Thread، أو تمرير المعلومات إلى شبكات خارجية عبر جهاز توجيه الحدود. تتوفر المقدمة التفصيلية لواجهة برمجة تطبيقات UDP التابعة لـ OpenThread في مثال OpenThread CLI - مثال UDP. سيستخدم هذا الدرس التطبيقي حول الترميز بعض واجهات برمجة التطبيقات المتوفرة فيه لنقل المعلومات بين OTBR وFTD Joiner.
أولاً، احصل على معرّف EID المحلي الشبكي لـ OTBR. وهذا العنوان هو أيضًا أحد عناوين IPv6 لجهاز Thread، ويمكن استخدامه للوصول إلى أجهزة Thread في قسم شبكة Thread نفسه.
> ipaddr mleid fd8c:60bc:a98:c7ba:5249:34ab:26d1:aff6 Done
أدخِل الأوامر التالية في الطرف الكهربائي SSH لتفعيل بروتوكول OTBR UDP وربط منفذ 1022 للجهاز.
> udp open Done > udp bind :: 1022 Done
أدخِل الأوامر التالية في وحدة التحكم التسلسلية وفعِّل بروتوكول UDP لـ FTD Joiner. يمكنك ربط منفذ 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 Joiner، ما يعني أن اتصال 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 Development Boards. - كيفية إعداد إصدار Raspberry Pi 3B أو الإصدارات الأحدث أو إصدار أعلى كجهاز توجيه الحدود OpenThread (OTBR) باستخدام Docker.
- كيف يمكن إنشاء شبكة Thread على OTBR.
- كيفية إضافة أجهزة إلى شبكة Thread من خلال التشغيل خارج النطاق
- كيفية التحقّق من الاتصال بين العُقد في شبكة Thread
قراءات إضافية
راجع openthread.io وGitHub للتعرف على موارد OpenThread المختلفة، بما في ذلك:
- الأنظمة الأساسية المتوافقة: اكتشاف جميع الأنظمة الأساسية التي تتيح استخدام OpenThread
- إنشاء OpenThread: مزيد من التفاصيل حول إنشاء أداة OpenThread وضبطها
- Thread Primer : تتناول جميع مفاهيم سلاسل المحادثات الواردة في هذا الدرس التطبيقي حول الترميز.
المستندات المرجعية: