1. مقدمه
OpenThread یک پیاده سازی متن باز از پروتکل شبکه Thread® است که یک پروتکل شبکه مش بی سیم قوی و ایمن است که برای دستگاه های اینترنت اشیا (IoT) طراحی شده است. OpenThread توسط تیم Google Nest توسعه داده شده است و به صورت رایگان در دسترس جامعه توسعه دهندگان به عنوان یک پروژه منبع باز است.
The 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 CLI (
ot-cli-ftd
وot-rcp
) و فلش کردن آنها در Telink B91 Development Boards. - برای راه اندازی یک روتر مرزی OpenThread (OTBR) با استفاده از Docker در Raspberry Pi 3B+ یا جدیدتر.
- برای ایجاد یک شبکه Thread در OTBR.
- برای افزودن دستگاه ها به شبکه Thread با استفاده از اشکال زدایی خارج از باند.
- برای اعتبارسنجی اتصال بین گره ها در شبکه Thread با استفاده از CLI.
آنچه شما نیاز دارید
سخت افزار:
- دو بورد توسعه B91.
- یک Raspberry Pi 3B+ یا بالاتر با Raspbian OS Image.
- یک دستگاه لینوکس با حداقل دو پورت USB.
- یک سوئیچ (یا روتر) متصل به اینترنت و چندین کابل اترنت.
نرم افزار:
- Telink Burning and Debugg Tool —— LinuxBDT.
- ابزار ترمینال پورت سریال، مانند PuTTY.
- ابزارهای دیگری مانند Git و West.
2. پیش نیازها
مفاهیم موضوع و OpenThread CLI
ممکن است برای آشنایی با مفاهیم بنیادی Thread و OpenThread CLI قبل از این کد، از طریق کدهای OpenThread Simulation بروید.
ماشین لینوکس
ماشین لینوکس (Ubuntu v20.04 LTS یا جدیدتر) به عنوان ماشین ساخت برای راه اندازی محیط توسعه Telink Zephyr و فلش همه بردهای توسعه Thread عمل می کند. برای انجام این وظایف، دستگاه لینوکس به دو پورت USB موجود و اتصال به اینترنت نیاز دارد.
اتصال پورت سریال و پایانه ها
می توانید مستقیماً دستگاه را به پورت USB دستگاه لینوکس وصل کنید. علاوه بر این، برای دسترسی به دستگاه ها به یک ابزار ترمینال پورت سریال نیاز دارید.
در این کد لبه از ابزار ترمینال PuTTY برای کنترل FTD Joiner و Raspberry Pi استفاده شده است. این یک نمای کلی از استفاده از آن ارائه می دهد، اما نرم افزار ترمینال دیگری نیز می تواند مورد استفاده قرار گیرد.
کیت توسعه Telink B91
این کد آزمایشگاه به دو مجموعه کیت توسعه B91 نیاز دارد. عکس زیر حداقل اجزای مورد نیاز را در یک مجموعه نمایش می دهد.
یکی از این کیت ها به عنوان RCP (رادیو همکار پردازشگر) استفاده می شود، در حالی که دیگری به عنوان FTD (دستگاه نخ کامل) عمل می کند. اگر هنوز کیت را در اختیار ندارید، می توانید جزئیات بیشتر را از وب سایت رسمی Telink بدست آورید. برخی از اجزای مورد استفاده به شرح زیر است:
شاخص | نام |
1 | هیئت توسعه Telink B91 |
2 | تخته سوزاندن Telink |
3 | آنتن 2.4 گیگاهرتز |
4 | کابل USB (USB A تا mini USB) |
Raspberry Pi 3B+ یا بالاتر با Raspbian OS Image
در این کد، یک Raspberry Pi 3B+ یا بالاتر با تصویر Raspbian Bullseye Lite OS یا Raspbian Bullseye با Desktop مورد نیاز است. از طریق اترنت به اینترنت متصل است و به عنوان میزبان برای روتر مرزی OpenThread (OTBR) پیکربندی خواهد شد.
اتصال شبکه
یک سوئیچ (یا روتر) متصل به اینترنت و چندین کابل اترنت. آنها برای اتصال Raspberry Pi به ماشین لینوکس استفاده می شوند و پیکربندی Raspberry Pi را از طریق میزبان تسهیل می کنند.
LinuxBDT
ابزار Burning and Debugging Telink (BDT) که برای تمام سریهای Telink Chip کاربرد دارد، به شما امکان میدهد سیستمافزار OpenThread را روی بردهای توسعه Telink B91 پاک کرده و فلش کنید. نسخه لینوکس مبتنی بر X86 linuxBDT را روی دستگاه لینوکس خود نصب کنید.
دیگران
- Git، برای راه اندازی Telink Zephyr Development Environment.
- West، برای مدیریت پروژه Zephyr و ساخت باینری های OpenThread.
3. Firmware را تنظیم کنید
محیط توسعه Telink Zephyr را راه اندازی کنید
در دستگاه لینوکس، یک ترمینال 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
جایی که [-xyz] متن اختیاری است که می تواند هر متنی باشد، مانند -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 build برای ساختن مثال 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
- مخزن Remote 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 Doc – Getting Started Guide مراجعه کنید.
Telink LinuxBDT را راه اندازی کنید
ابزار Telink LinuxBDT را دانلود کرده و آن را در یک فهرست محلی در دستگاه لینوکس خود استخراج کنید، مانند فهرست اصلی ~
، که امکان فلش کردن سیستم عامل بر روی برد توسعه B91 را فراهم می کند.
$ cd ~ $ wget http://wiki.telink-semi.cn/tools_and_sdk/Tools/BDT/LinuxBDT.tar.bz2 $ tar -vxf LinuxBDT.tar.bz2
Burning Board را از طریق رابط 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 با موفقیت به ماشین لینوکس متصل شده است.
کامپایل سیستم عامل
این کد لبه دو نوع سفتافزار 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 Joiner پیکربندی کنید
همانطور که در تصویر نشان داده شده است، FTD Joiner را مستقیماً به پورت USB دستگاه لینوکس وصل کنید.
پس از اتصال FTD Joiner Device به دستگاه لینوکس، PuTTY را باز کنید. سپس یک ترمینال جدید ایجاد کنید، اطلاعات پورت سریال را تنظیم کنید و پورت سریال را باز کنید.
مرجع خط فرمان OpenThread اینجاست: OpenThread CLI Reference . حتما پیشوند همه دستورات را با ot
قرار دهید.
مثال ها:
> ot state disabled Done > ot channel 11 Done >
5. Raspberry Pi را به عنوان یک OpenThread Border Router راه اندازی کنید
روتر مرزی OpenThread دستگاهی است که از دو بخش اصلی تشکیل شده است:
- Raspberry Pi شامل تمام سرویس ها و سیستم عامل مورد نیاز برای عمل به عنوان یک مسیریاب مرزی (BR) است.
- RCP مسئول ارتباطات Thread است.
پردازشگر رادیویی (RCP)
برای فلش کردن سیستم عامل ot-rcp
، مراحل مشابه فرآیند فلش کردن سیستم عامل ot-cli-ftd
را دنبال کنید. همانطور که در شکل زیر نشان داده شده است، برد توسعه B91 را به یک پورت USB در Raspberry Pi وصل کنید.
رزبری پای
- مطمئن شوید که تصویر Raspbian Bullseye Lite OS یا Raspbian Bullseye with Desktop به درستی روی کارت SD نوشته شده است.
- شما این امکان را دارید که یا SSH را در Raspberry Pi وارد کنید یا مستقیماً با Raspbian Desktop کار کنید. این کد لبه از SSH استفاده خواهد کرد.
- قبل از اقدام به نصب 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 قوانینی را در داخل کانتینر داکر تولید می کنند. قبل از آن،
modprobe
برای بارگذاری ماژول هسته 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 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. یک شبکه موضوعی ایجاد کنید
یک شبکه موضوعی در RCP ایجاد کنید
ما از پوسته ot-ctl در OTBR برای ایجاد یک شبکه Thread استفاده می کنیم. اگر در بخش آخر از پوسته خارج شده اید، دستور زیر را وارد کنید تا دوباره آن را در ترمینال SSH راه اندازی کنید:
$ docker exec -ti otbr sh -c "sudo ot-ctl"
در مرحله بعد، دستورات را به ترتیب مشخص شده در جدول وارد کنید و اطمینان حاصل کنید که هر مرحله قبل از ادامه به مرحله بعدی به نتیجه مورد انتظار می رسد.
شاخص | فرمان | مقدمه | پاسخ مورد انتظار | ||
1 | | یک مجموعه داده شبکه تصادفی جدید ایجاد کنید. | انجام شد | ||
2 | | مجموعه داده های جدید را به مجموعه داده عملیاتی فعال در ذخیره سازی غیر فرار متعهد کنید. | انجام شد | ||
3 | | رابط IPv6 را بیاورید. | انجام شد | ||
4 | | عملیات پروتکل Thread را فعال کرده و به شبکه Thread متصل کنید. | انجام شد | ||
10 ثانیه صبر کنید تا رابط موضوع روشن شود. | |||||
5 | | وضعیت دستگاه را بررسی کنید. این فرمان را می توان چندین بار فراخوانی کرد تا زمانی که به عنوان رهبر تبدیل شود و به مرحله بعدی بروید. | رهبر | ||
6 | | مجموعه داده عملیاتی کامل را بررسی کنید و کلید شبکه را ضبط کنید. | مهر زمانی فعال: 1 |
کلید شبکه ای که به طور تصادفی توسط OTBR در حین ایجاد شبکه تولید می شود، زمانی استفاده می شود که دستگاه های ot-cli-ftd
این شبکه Thread ملحق شوند.
FTD Joiner را از طریق راه اندازی خارج از باند به Thread اضافه کنید
راه اندازی خارج از باند به انتقال اعتبار شبکه به دستگاه هایی که منتظر پیوستن به شبکه از طریق روش های غیر بی سیم هستند (مثلاً وارد کردن دستی در OpenThread CLI) اشاره دارد. دستورات زیر را به ترتیب در کنسول سریال FTD Joiner وارد کنید.
شاخص | فرمان | مقدمه | پاسخ های مورد انتظار | ||
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 Joiner در ابتدا 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 درخواست پینگ را دریافت کرده است و FTD Joiner پاسخ پینگ برگشتی توسط OTBR را دریافت کرده است. ارتباط بین دو دستگاه موفقیت آمیز است.
ارتباطات UDP
خدمات کاربردی ارائه شده توسط OpenThread همچنین شامل UDP می شود. شما می توانید از UDP API برای انتقال اطلاعات بین گره ها در شبکه Thread یا انتقال اطلاعات به شبکه های خارجی از طریق Border Router استفاده کنید. معرفی مفصل UDP API OpenThread در مثال OpenThread CLI - UDP است. این کد لبه از برخی از APIهای موجود در خود برای انتقال اطلاعات بین OTBR و FTD Joiner استفاده می کند.
ابتدا EID Mesh-Local 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. - نحوه راه اندازی Raspberry Pi 3B+ یا نسخه بالاتر به عنوان روتر مرزی OpenThread (OTBR) با استفاده از Docker.
- نحوه ایجاد شبکه Thread در OTBR.
- نحوه اضافه کردن دستگاه ها به شبکه Thread از طریق راه اندازی خارج از باند.
- نحوه بررسی اتصال بین گره ها در شبکه Thread.
ادامه مطلب
برای آشنایی با منابع مختلف OpenThread ، از جمله:
- پلتفرم های پشتیبانی شده - تمام پلتفرم هایی که از OpenThread پشتیبانی می کنند را کشف کنید
- ساخت OpenThread - جزئیات بیشتر در مورد ساخت و پیکربندی OpenThread
- Thread Primer - تمام مفاهیم Thread را که در این نرم افزار کد ارائه شده است، پوشش می دهد
اسناد مرجع: