۱. مقدمه

OpenThread (OT) گوگل، یک پیادهسازی متنباز از Thread است. گوگل OpenThread را منتشر کرده است تا فناوری شبکه مورد استفاده در محصولات Google Nest را به طور گسترده در دسترس توسعهدهندگان قرار دهد و توسعه محصولات برای برنامههای کاربردی ساختمانهای خانگی و تجاری متصل را تسریع کند. OpenThread با یک لایه انتزاعی پلتفرم باریک و فضای حافظه کم، بسیار قابل حمل است. این پلتفرم از هر دو طرح سیستم روی تراشه (SoC) و کمک پردازنده شبکه (NCP) پشتیبانی میکند.
مشخصات Thread یک پروتکل ارتباطی بیسیم دستگاه به دستگاه مبتنی بر IPv6، قابل اعتماد، امن و کممصرف را برای کاربردهای خانگی و تجاری تعریف میکند.
شرکت Texas Instruments، OpenThread را برای خانواده دستگاههای SimpleLink™ CC27xx پیادهسازی کرده است. مخزن ot-ti در GitHub شامل درایورهای پلتفرم و برنامههای نمونه مورد نیاز برای اجرای OpenThread روی MCUهای SimpleLink Connected شرکت Texas Instruments است. CC2745R10-Q1 یک MCU بیسیم با استاندارد IEEE 802.15.4 و دارای گواهینامه Thread از خانواده SimpleLink CC27xx شرکت TI است که برای استفاده در خودرو (دارای گواهینامه AEC-Q100) طراحی شده است.
این آزمایشگاه کد، نحوه شروع توسعه برنامههای OpenThread با برد ارزیابی LP-EM-CC2745R10-Q1 LaunchPad و مخزن ot-ti را شرح میدهد. تصویر زیر، تنظیمات سختافزاری مورد استفاده در این آزمایشگاه کد را با یک روتر مرزی OT (OTBR) و دو دستگاه Thread Full Thread (FTD) نشان میدهد.

آنچه یاد خواهید گرفت
- نحوه راهاندازی محیط ساخت ot-ti شرکت Texas Instruments.
- نحوه ساخت و فلش کردن فایلهای باینری OpenThread CLI روی بردهای LP-EM-CC2745R10-Q1.
- نحوه تنظیم Raspberry Pi به عنوان یک روتر مرزی OpenThread (OTBR) با استفاده از ot-br-posix.
- نحوه ایجاد یک شبکه Thread در OTBR.
- راهاندازی خارج از باند دستگاهها بر روی یک شبکه Thread.
- نحوه تأیید ارتباط Thread بین گرهها با استفاده از دستور ping.
۲. پیشنیازها
سختافزار
- ۳ برد LaunchPad مدل LP-EM-CC2745R10-Q1 : یکی به عنوان RCP متصل به Border Router و دو تا به عنوان Full Thread Devices (FTD) پیکربندی شدهاند.
CC2745R10-Q1 یک MCU بیسیم با استاندارد IEEE 802.15.4 و دارای گواهینامه Thread در سطح خودرو (واجد شرایط AEC-Q100) در خانواده SimpleLink CC27xx شرکت TI است. LP-EM-CC2745R10-Q1 ماژول ارزیابی LaunchPad مربوطه است و از نقشهای Thread RCP، FTD، MTD و NCP پشتیبانی میکند. CC2340R5 با LaunchPad LP-EM-CC2340R5 یک گزینه با حافظه کمتر است که فقط میتواند به عنوان RCP عمل کند. این ماژول از نقشهای FTD، MTD یا NCP پشتیبانی نمیکند. اگر LP-EM-CC2340R5 را به جای برد 1 (RCP) جایگزین کنید، دو برد FTD همچنان باید LP-EM-CC2745R10-Q1 باشند. - ۳ پراب اشکالزدایی LP-XDS110ET : یکی برای هر برد LaunchPad، که برای برنامهنویسی و اشکالزدایی از طریق USB استفاده میشود.
LP-XDS110ET یک پروب اشکالزدایی USB جداگانه است که برای LaunchPadها در فرم فاکتور LP-EM مورد نیاز است. این پروب شامل پشتیبانی EnergyTrace برای پروفایلبندی توان است. LP-XDS110 یک جایگزین ارزانتر است که همان قابلیت برنامهنویسی و اشکالزدایی را ارائه میدهد اما EnergyTrace را شامل نمیشود. به عنوان یک جایگزین دیگر، میتوان از یک LaunchPad با یک پروب اشکالزدایی XDS110 روی برد (مانند LAUNCHXL-CC26X2R1) به جای برد LP-EM و یک پروب اشکالزدایی جداگانه به طور کامل استفاده کرد. برای جزئیات بیشتر به راهنمای اتصال اشکالزدایی LaunchPad مراجعه کنید. - ۳ کابل میکرو USB برای اتصال و تغذیه بردهای LaunchPad و پروبهای اشکالزدایی.
- یک رزبری پای ۴B یا بالاتر با سیستم عامل رزبری پای که از طریق اترنت به اینترنت متصل باشد. این سیستم به عنوان میزبان روتر مرزی OT پیکربندی خواهد شد.

- یک سیستم میزبان لینوکس یا macOS با حداقل ۲ پورت USB و دسترسی به اینترنت. محیط ساخت به یک پوسته سازگار با Bash نیاز دارد. کاربران ویندوز باید از WSL2 (زیرسیستم ویندوز برای لینوکس ۲) با اوبونتو استفاده کنند.
- حداقل یک کابل اترنت برای اتصال رزبری پای به اینترنت. به عنوان یک روش جایگزین، میتوانید رزبری پای را به وایفای متصل کنید و
wlan0به عنوان رابط زیرساخت استفاده کنید - برای جزئیات بیشتر به مرحله راهاندازی OTBR مراجعه کنید.
نرمافزار
- مخزن TI ot-ti : https://github.com/TexasInstruments/ot-ti
- GNU ARM Embedded Toolchain 12.2 (به طور خودکار توسط اسکریپت بوت استرپ نصب میشود)
- SysConfig 1.27.0 (به طور خودکار توسط اسکریپت بوتاسترپ نصب میشود)
- TI UniFlash : برای فلش کردن فریمور روی بردهای LaunchPad
- ot-br-posix : https://github.com/openthread/ot-br-posix
- یک ترمینال سریال مانند PuTTY (ویندوز)، minicom (لینوکس) یا screen (مک/لینوکس)
۳. راهاندازی سختافزار
این آزمایشگاه کد از سه برد LP-EM-CC2745R10-Q1 استفاده میکند:
- برد ۱ (RCP): فریمور
ot-rcpرا اجرا میکند. به عنوان کمک پردازنده رادیویی برای روتر Border از طریق USB به رزبری پای متصل میشود. - برد ۲ (FTD 1): فریمور
ot-cli-ftdرا به عنوان یک دستگاه تمام رشتهای (Full Thread Device) اجرا میکند. - برد ۳ (FTD 2): فریمور
ot-cli-ftdرا به عنوان یک دستگاه تمام رشتهای (Full Thread Device) اجرا میکند.

هر LaunchPad را از طریق میکرو USB به رایانه میزبان خود متصل کنید. اتصال USB هم برق و هم قابلیت اشکالزدایی/برنامهریزی را از طریق کاوشگر اشکالزدایی XDS110 داخلی فراهم میکند.
هر LP-EM-CC2745R10-Q1 هنگام اتصال از طریق USB به صورت دو پورت سریال مجازی ظاهر میشود: یکی برای رابط اشکالزدایی XDS110 و دیگری برای UART برنامه. هنگام باز کردن کنسول سریال، به پورت UART برنامه/کاربر متصل شوید، نه پورت داده کمکی.

۴. راهاندازی و ساخت مخزن
سیستم ساخت ot-ti از CMake استفاده میکند و به پوسته Bash نیاز دارد. تمام دستورات این بخش روی میزبان لینوکس یا macOS (یا WSL2 در ویندوز) اجرا میشوند.
۱. مخزن را کلون کنید
$ git clone https://github.com/TexasInstruments/ot-ti.git $ cd ot-ti $ git submodule update --init
۲. اسکریپت بوتاسترپ را اجرا کنید
اسکریپت bootstrap وابستگیهای مورد نیاز از جمله GNU ARM toolchain و SysConfig را نصب میکند:
$ ./script/bootstrap
اسکریپت بوتاسترپ به cmake ، git ، wget و ابزارهای استاندارد ساخت نیاز دارد. در اوبونتو/دبیان، پیشنیازها را با دستور زیر نصب کنید: sudo apt-get install -y cmake git make wget tar ninja-build
۳. ساخت میانافزار برای LP_EM_CC2745R10_Q1
ساخت تمام ایمیجهای فریمور برای برد LP-EM-CC2745R10-Q1:
$ ./script/build LP_EM_CC2745R10_Q1
هدف ساخت LP_EM_CC2745R10_Q1 مربوط به دستگاه CC2745R10-Q1 در خانواده CC27xx SimpleLink (هسته Arm Cortex-M33F) است. برای مشاهده همه بردهای پشتیبانی شده، ./script/build را بدون آرگومان اجرا کنید.
پس از یک ساخت موفقیتآمیز، فایلهای باینری ELF در build/bin/ قرار دارند:
$ ls build/bin/ ot-cli-ftd.out ot-cli-mtd.out ot-ncp-ftd.out ot-rcp.out
دو تصویر استفاده شده در این codelab عبارتند از:
-
ot-rcp.out: فریمور کمکپردازنده رادیویی برای برد روتر Border. -
ot-cli-ftd.out: میانافزار رابط خط فرمان دستگاه با رشته کامل برای دو برد FTD.
دستگاه Thread Minimal اختیاری: اگر میخواهید به جای یک دستگاه Thread کامل، یک دستگاه انتهایی Sleepy را بررسی کنید، میتوانید ot-cli-mtd.out را به جای ot-cli-ftd.out روی بردهای ۲ و ۳ فلش کنید. یک MTD ترافیک Thread را مسیریابی نمیکند و میتواند وارد حالتهای Sleep با توان کم شود، که آن را برای برنامههایی که با باتری کار میکنند، بسیار مناسب میکند. مراحل تشکیل شبکه Thread در این codelab برای هر دو نوع دستگاه یکسان است.
پردازنده کمکی شبکه اختیاری (NCP): فایل باینری ot-ncp-ftd.out معماری NCP را پیادهسازی میکند، که در آن پشته OpenThread روی دستگاه اجرا میشود و یک پردازنده میزبان آن را از طریق پروتکل Spinel هدایت میکند. استفاده از NCP خارج از محدوده این آزمایشگاه کد است، برای جزئیات بیشتر به NCP README مراجعه کنید.
۵. فلش کردن فریمور
از TI UniFlash برای فلش کردن ایمیجهای ELF به بردهای LaunchPad استفاده کنید.
فلش با استفاده از UniFlash
- UniFlash را باز کنید. بردهای LaunchPad متصل به دلیل قابلیت تشخیص خودکار دستگاه، در قسمت Detected Devices نمایش داده میشوند. اگر برد شما به طور خودکار شناسایی نشد، روی New Configuration کلیک کنید،
LP-EM-CC2745R10-Q1target و XDS110 USB debug probe را انتخاب کنید.
- برد ۱ (که قرار است با
ot-rcp.outفلش شود) را انتخاب کرده و روی Start کلیک کنید. - روی دکمهی Browse کلیک کنید و به مسیر
ot-ti/build/bin/ot-rcp.outبروید.
- برای فلش کردن فریمور، روی بارگذاری تصویر (Load Image) کلیک کنید. قسمت گزارش، پیشرفت را نشان میدهد و تکمیل را تأیید میکند.
- مراحل ۲ تا ۴ را برای برد ۲ و برد ۳ تکرار کنید و برای هر کدام
ot-ti/build/bin/ot-cli-ftd.outرا انتخاب کنید.
جایگزین: فلش با استفاده از Code Composer Studio (CCS)
Code Composer Studio میتواند به عنوان جایگزینی برای UniFlash مورد استفاده قرار گیرد و علاوه بر این، یک محیط اشکالزدایی کامل نیز ارائه میدهد:
- استودیو کد کامپوزر را دانلود و نصب کنید.
- با استفاده از دیباگر XDS110، یک اتصال هدف (CCXML) برای LP-EM-CC2745R10-Q1 ایجاد کنید. به راهنمای کاربر CCS: روش دستی مراجعه کنید.
- همانطور که در راهنمای کاربر CCS: راهاندازی دستی توضیح داده شده است، یک جلسه اشکالزدایی بدون پروژه را شروع کنید.
- به هسته Arm Cortex-M33 متصل شوید و برای بارگذاری تصویر ELF، روی Load کلیک کنید.
پیکربندی پیشفرض CCXML از cJTAG دو سیمه برای مطابقت با پیکربندی جامپر پیشفرض LP-EM-CC2745R10-Q1 استفاده میکند. پس از برنامهریزی از طریق JTAG، برد را روشن/خاموش کنید تا علامت توقف در بوت پاک شود.
۶. HSM را برنامهریزی کنید
CC2745R10-Q1 حاوی یک ماژول امنیتی سختافزاری (HSM) است که باید قبل از اجرای Thread یا سایر میانافزار برنامههای امن، آمادهسازی شود. اگر برد LP-EM-CC2745R10-Q1 شما هنوز HSM خود را برنامهریزی نکرده است، اکنون این مرحله را انجام دهید.
برای برنامه ریزی HSM با استفاده از UniFlash:
- UniFlash را باز کنید و برد LP-EM-CC2745R10-Q1 خود را از بخش Detected Devices انتخاب کنید.
- به پنل برنامهنویسی HSM بروید و تصویر میانافزار HSM را مطابق شکل زیر بارگذاری کنید.

- برای تکمیل آمادهسازی HSM، دستورالعملهای روی صفحه را دنبال کنید. این عملیات در کنسول خروجی UniFlash ثبت میشود.
برای مشاهدهی مراحل کامل برنامهنویسی HSM، از جمله مسیر تصویر میانافزار مورد نیاز در SimpleLink Low Power F3 SDK، به راهنمای شروع سریع CC2745R10-Q1 در TI Resource Explorer مراجعه کنید.
۷. خلاصهی میانافزار
در این مرحله، هر سه برد باید فلش شوند:
- برد ۱:
ot-rcp.out: از کامپیوتر میزبان جدا شده و از طریق USB به رزبری پای متصل میشود. - برد ۲:
ot-cli-ftd.out: اتصال به کامپیوتر میزبان را حفظ میکند. - برد ۳:
ot-cli-ftd.out: اتصال به کامپیوتر میزبان را حفظ میکند.
تنظیمات سختافزاری شما مانند نمودار زیر خواهد بود. برد ۱ به عنوان کمک پردازنده رادیویی برای OTBR به رزبری پای متصل میشود، در حالی که بردهای ۲ و ۳ برای دسترسی به کنسول سریال به کامپیوتر میزبان متصل میمانند.

۸. تنظیم کنسول سریال برای دستگاههای ot-cli-ftd
LP-EM-CC2745R10-Q1 برنامه UART را از طریق USB با سرعت ۹۲۱۶۰۰ بیت در ثانیه نمایش میدهد.
با استفاده از این تنظیمات، یک ترمینال سریال به پورت Application UART COM (ویندوز) یا دستگاه /dev/ttyACM* (لینوکس/مک) برای هر برد FTD باز کنید:
پارامتر | ارزش |
سرعت (باود) | |
بیتهای داده | |
بیتهای توقف | |
برابری | |
کنترل جریان | |
نکته (لینوکس/مک): با اجرای دستور ls /dev/ttyACM* قبل و بعد از اتصال برد و توجه به ورودی ظاهر شده، گره دستگاه صحیح را شناسایی کنید. هر LP-EM-CC2745R10-Q1 دو ورودی ایجاد میکند: پورت با شماره پایینتر، UART اشکالزدایی XDS110 و پورت با شماره بالاتر، UART کاربردی است. برای مثال، اگر برد /dev/ttyACM0 و /dev/ttyACM1 را ایجاد میکند، از /dev/ttyACM1 استفاده کنید.
نکته (ویندوز): Device Manager را باز کنید و در قسمت Ports (COM & LPT) به دنبال دو پورت COM جدید بگردید، زمانی که برد به سیستم متصل است. پورت داده اشکالزدایی XDS110 معمولاً اول ظاهر میشود، از پورت COM دوم (با شماره بالاتر) برای کنسول برنامه استفاده کنید.
برای دریافت اعلان OpenThread CLI ( > ) در ترمینال، Enter را فشار دهید. برای مشاهده لیست کامل دستورات موجود، به مرجع OpenThread CLI مراجعه کنید. تأیید کنید که FTD عملیاتی است:
> state disabled Done

شما هنوز کنسول سریال را برای برد RCP تنظیم نخواهید کرد. OTBR روی رزبری پای مستقیماً با RCP ارتباط برقرار میکند. در مرحله بعدی، رزبری پای را به عنوان روتر مرزی OpenThread پیکربندی خواهید کرد.
۹. رزبری پای را به عنوان یک روتر مرزی تنظیم کنید
OTBR از ot-br-posix ، پروژه متنباز OpenThread Border Router، ساخته شده است. Border Router روی Raspberry Pi اجرا میشود و از Board 1 (RCP) به عنوان رادیوی 802.15.4 خود از طریق USB استفاده میکند.
راه اندازی رزبری پای
- سیستم عامل رزبری پای (۶۴ بیتی لایت یا دسکتاپ) را با استفاده از Raspberry Pi Imager روی کارت SD خود فلش کنید.
- رزبری پای را بوت کنید و یک ترمینال (از طریق SSH یا مستقیماً) باز کنید.
- مدیر بسته را بهروزرسانی کنید و بستههای نصبشده را ارتقا دهید:
$ sudo apt-get update $ sudo apt-get upgrade -y
قبل از ادامه، رزبری پای را پس از بهروزرسانیها مجدداً راهاندازی کنید: sudo reboot
برد ۱ (RCP) را به رزبری پای وصل کنید
برد ۱ (که با ot-rcp فلش شده است) را از طریق میکرو USB به رزبری پای متصل کنید. پس از اتصال، مطمئن شوید که گره دستگاه ظاهر میشود:
$ ls /dev/ttyACM* /dev/ttyACM0 /dev/ttyACM1
پورت UART برنامه برد RCP معمولاً /dev/ttyACM1 است (پورت اشکالزدایی XDS110 /dev/ttyACM0 است). با بررسی اینکه هنگام شروع عامل OTBR در مرحله بعدی پاسخ میدهد، تأیید کنید که کدام پورت، UART برنامه است. اگر دستگاههای سریال USB دیگری متصل هستند، ممکن است شماره گره دستگاه متفاوت باشد. مسیر را در پیکربندی OTBR بر این اساس تنظیم کنید.
ساخت و نصب ot-br-posix
روی رزبری پای، ot-br-posix را کلون و بسازید:
$ git clone https://github.com/openthread/ot-br-posix.git $ cd ot-br-posix $ ./script/bootstrap
اسکریپت راهاندازی را اجرا کنید و رابط اترنت خود را به عنوان رابط ستون فقرات (زیرساخت) مشخص کنید:
$ INFRA_IF_NAME=eth0 ./script/setup
eth0 نام معمول برای رابط اترنت سیمی است. اگر Raspberry Pi را از طریق Wi-Fi به جای اترنت متصل میکنید، eth0 را با wlan0 جایگزین کنید (و مطمئن شوید که Pi از قبل به شبکه Wi-Fi شما متصل است). نام رابط فعال را با ip link show تأیید کنید.
اسکریپت راهاندازی، ot-br-posix را از منبع میسازد، سرویسهای سیستمی otbr-agent و otbr-web را نصب میکند و پشته شبکه را پیکربندی میکند. این فرآیند معمولاً روی Raspberry Pi 4B 10 تا 20 دقیقه طول میکشد.
پیکربندی عامل OTBR
فایل پیکربندی عامل OTBR را ویرایش کنید تا مسیر دستگاه RCP و نرخ انتقال داده را مشخص کنید:
$ sudo nano /etc/default/otbr-agent
خط OTBR_AGENT_OPTS را پیدا کنید و آن را برای ارجاع به UART برنامه RCP بهروزرسانی کنید:
OTBR_AGENT_OPTS="-I wpan0 -B eth0 spinel+hdlc+uart:///dev/ttyACM1?uart-baudrate=921600"
اگر رزبری پای شما از طریق وای فای متصل است، eth0 با wlan0 جایگزین کنید.
OTBR_AGENT_OPTS="-I wpan0 -B wlan0 spinel+hdlc+uart:///dev/ttyACM1?uart-baudrate=921600"
رابط UART کاربردی RCP مدل LP-EM-CC2745R10-Q1 با سرعت ۹۲۱۶۰۰ بیت در ثانیه کار میکند. بررسی کنید که مسیر دستگاه (در این مثال /dev/ttyACM1 ) با رابط UART کاربردی برد RCP شما مطابقت داشته باشد.
برای اعمال پیکربندی، عامل OTBR را مجدداً راهاندازی کنید:
$ sudo systemctl restart otbr-agent $ sudo systemctl enable otbr-agent
تأیید کنید که عامل در حال اجرا است:
$ sudo systemctl status otbr-agent
تعامل با گره RCP
با استفاده از ابزار ot-ctl با گره RCP ارتباط برقرار کنید:
$ sudo ot-ctl state disabled Done
میتوانید گزارش عامل OTBR را برای پیامهای اتصال و وضعیت نظارت کنید:
$ sudo journalctl -u otbr-agent -f
به صورت اختیاری، رابط وب OTBR در http:// موجود است. http:// و یک نمای گرافیکی از شبکه Thread ارائه میدهد.
برای متوقف کردن یا راهاندازی مجدد عامل OTBR:
$ sudo systemctl stop otbr-agent $ sudo systemctl start otbr-agent
در این مرحله شما باید سه کنسول فعال داشته باشید:
- ترمینال سریال برای برد ۲ (
ot-cli-ftd 1) روی کامپیوتر میزبان. - ترمینال سریال برای برد ۳ (
ot-cli-ftd 2) روی کامپیوتر میزبان. - SSH یا جلسه ترمینال روی رزبری پای برای
ot-ctl(OTBR/RCP).
اکنون آماده تشکیل یک شبکه Thread هستید.
۱۰. ایجاد یک شبکه نخ (Thread Network)
تنظیم RCP (OTBR)
یک شبکه Thread جدید از طریق پوسته ot-ctl روی رزبری پای ایجاد کنید. دستورات زیر را به ترتیب وارد کنید:
فهرست | فرماندهی | توضیحات | پاسخ مورد انتظار | ||
۱ | | یک پیکربندی شبکه جدید ایجاد کنید. | انجام شد | ||
۲ | | مجموعه داده جدید را به مجموعه داده عملیاتی فعال (Active Operational Dataset) اختصاص دهید. | انجام شد | ||
۳ | | رابط Thread را فعال کنید. | انجام شد | ||
۴ | | فعال کردن و پیوست کردن عملیات پروتکل Thread. | انجام شد | ||
۱۰ ثانیه صبر کنید تا رابط Thread بالا بیاید. | |||||
۵ | | وضعیت دستگاه را بررسی کنید. باید رهبر باشد. سایر حالتهای ممکن: آفلاین، غیرفعال، جدا شده، فرزند، روتر یا رهبر. | رهبر | ||
۶ | | پیکربندی شبکه را مشاهده کنید. مقادیر شما متفاوت خواهد بود. به کانال، کلید شبکه، نام شبکه و شناسه PAN توجه کنید - این موارد برای اتصال FTD ها به شبکه مورد نیاز هستند. | مهر زمانی فعال: ۱ | ||
اضافه کردن FTD ها به شبکه Thread (روش خارج از باند)
با استفاده از روش راهاندازی خارج از باند، شما مستقیماً اعتبارنامههای شبکه را ارائه میدهید. در ترمینال سریال برای هر برد FTD ، دستورات زیر را با استفاده از کانال و کلید شبکه از خروجی مجموعه داده OTBR بالا وارد کنید:
فهرست | فرماندهی | توضیحات | پاسخ مورد انتظار | ||
۱ | | کانال را طوری تنظیم کنید که با OTBR مطابقت داشته باشد. | انجام شد | ||
۲ | | کلید شبکه را تنظیم کنید. آن را با کلید شبکه OTBR خود جایگزین کنید. فقط این کلید برای اتصال لازم است. | انجام شد | ||
۳ | | مجموعه داده جدید را به مجموعه داده عملیاتی فعال (Active Operational Dataset) اختصاص دهید. | انجام شد | ||
۴ | | رابط Thread را فعال کنید. | انجام شد | ||
۵ | | فعال کردن و پیوست کردن عملیات پروتکل Thread. | انجام شد | ||
۲۰ ثانیه صبر کنید تا دستگاه متصل شده و خودش را پیکربندی کند. | |||||
۶ | | وضعیت دستگاه را بررسی کنید. | کودک | ||
به دلیل ماهیت خودپیکربندی شبکههای Thread و اینکه این دستگاهها Full Thread هستند، ممکن است در نهایت یکی از FTDها یا هر دو به روتر تبدیل شوند. میتوانید نقش فعلی را در هر زمان با دستور state تأیید کنید.
ارتباط بین دستگاههای Thread
از دستور ping برای تأیید برقراری ارتباط دستگاهها استفاده کنید. آدرسهای IPv6 هر دستگاه را با ipaddr دریافت کنید:
> ipaddr fd5c:c6b:3a17:40b9:0:ff:fe00:fc00 # Leader Anycast Locator (ALOC) fd5c:c6b:3a17:40b9:0:ff:fe00:1800 # Routing Locator (RLOC) fd5c:c6b:3a17:40b9:84e2:bae8:bd5b:fa03 # Mesh-Local EID (ML-EID) fe80:0:0:0:c449:ca4a:101f:5d16 # Link-Local Address (LLA) Done
از هر دو FTD، OTBR را با استفاده از آدرس RLOC آن پینگ کنید:
> ping fd5c:c6b:3a17:40b9:0:ff:fe00:1800 Done > > 16 bytes from fd5c:c6b:3a17:40b9:0:ff:fe00:1800: icmp_seq=3 hlim=64 time=30ms 16 bytes from fd5c:c6b:3a17:40b9:0:ff:fe00:1800: icmp_seq=3 hlim=64 time=52ms
یک پاسخ موفقیتآمیز تأیید میکند که شبکه Thread فعال است و دستگاهها میتوانند ارتباط برقرار کنند. این فرآیند را برای پینگ کردن هر FTD از OTBR تکرار کنید ( sudo ot-ctl ping ).
۱۱. تبریک
شما یک شبکه Thread با بردهای TI CC2745R10-Q1 ایجاد کردهاید!
حالا میدانید:
- نحوه راهاندازی محیط ساخت ot-ti شرکت Texas Instruments.
- نحوه ساخت و فلش کردن فایلهای باینری OpenThread CLI به LP-EM-CC2745R10-Q1 LaunchPad.
- نحوه تنظیم Raspberry Pi به عنوان یک روتر مرزی OpenThread (OTBR) با استفاده از ot-br-posix.
- نحوه ایجاد یک شبکه Thread در OTBR.
- راهاندازی خارج از باند دستگاهها بر روی یک شبکه Thread.
- نحوه تأیید ارتباط Thread بین گرهها با استفاده از دستور ping.
مطالعه بیشتر
برای دسترسی به منابع متنوع OpenThread، از جمله موارد زیر، به openthread.io و GitHub مراجعه کنید:
- پلتفرمهای پشتیبانیشده - تمام پلتفرمهایی که از OpenThread پشتیبانی میکنند را کشف کنید
- ساخت OpenThread — جزئیات بیشتر در مورد ساخت و پیکربندی OpenThread
- مقدمهای بر Thread - تمام مفاهیم Thread که در این آزمایشگاه کد ارائه شده است را پوشش میدهد.
- مخزن TI ot-ti — پیادهسازی OpenThread شرکت TI برای دستگاههای SimpleLink، به همراه دستورالعملهای ساخت و یادداشتهای انتشار
- صفحه محصول CC2745R10-Q1 — برگه اطلاعات دستگاه، طرحهای مرجع و سایر مستندات
- LP-EM-CC2745R10-Q1 LaunchPad — راهنمای کاربر و فایلهای سختافزاری برد ارزیابی
- مرجع OpenThread CLI - مروری بر OpenThread CLI و کاربرد آن
- دستورات OpenThread CLI - مرجع کامل برای همه دستورات OpenThread CLI
- انجمن TI E2E — Thread & Zigbee — انجمن پشتیبانی فنی برای محصولات اتصال بیسیم Texas Instruments
۱. مقدمه

OpenThread (OT) گوگل، یک پیادهسازی متنباز از Thread است. گوگل OpenThread را منتشر کرده است تا فناوری شبکه مورد استفاده در محصولات Google Nest را به طور گسترده در دسترس توسعهدهندگان قرار دهد و توسعه محصولات برای برنامههای کاربردی ساختمانهای خانگی و تجاری متصل را تسریع کند. OpenThread با یک لایه انتزاعی پلتفرم باریک و فضای حافظه کم، بسیار قابل حمل است. این پلتفرم از هر دو طرح سیستم روی تراشه (SoC) و کمک پردازنده شبکه (NCP) پشتیبانی میکند.
مشخصات Thread یک پروتکل ارتباطی بیسیم دستگاه به دستگاه مبتنی بر IPv6، قابل اعتماد، امن و کممصرف را برای کاربردهای خانگی و تجاری تعریف میکند.
شرکت Texas Instruments، OpenThread را برای خانواده دستگاههای SimpleLink™ CC27xx پیادهسازی کرده است. مخزن ot-ti در GitHub شامل درایورهای پلتفرم و برنامههای نمونه مورد نیاز برای اجرای OpenThread روی MCUهای SimpleLink Connected شرکت Texas Instruments است. CC2745R10-Q1 یک MCU بیسیم با استاندارد IEEE 802.15.4 و دارای گواهینامه Thread از خانواده SimpleLink CC27xx شرکت TI است که برای استفاده در خودرو (دارای گواهینامه AEC-Q100) طراحی شده است.
این آزمایشگاه کد، نحوه شروع توسعه برنامههای OpenThread با برد ارزیابی LP-EM-CC2745R10-Q1 LaunchPad و مخزن ot-ti را شرح میدهد. تصویر زیر، تنظیمات سختافزاری مورد استفاده در این آزمایشگاه کد را با یک روتر مرزی OT (OTBR) و دو دستگاه Thread Full Thread (FTD) نشان میدهد.

آنچه یاد خواهید گرفت
- نحوه راهاندازی محیط ساخت ot-ti شرکت Texas Instruments.
- نحوه ساخت و فلش کردن فایلهای باینری OpenThread CLI روی بردهای LP-EM-CC2745R10-Q1.
- نحوه تنظیم Raspberry Pi به عنوان یک روتر مرزی OpenThread (OTBR) با استفاده از ot-br-posix.
- نحوه ایجاد یک شبکه Thread در OTBR.
- راهاندازی خارج از باند دستگاهها بر روی یک شبکه Thread.
- نحوه تأیید ارتباط Thread بین گرهها با استفاده از دستور ping.
۲. پیشنیازها
سختافزار
- ۳ برد LaunchPad مدل LP-EM-CC2745R10-Q1 : یکی به عنوان RCP متصل به Border Router و دو تا به عنوان Full Thread Devices (FTD) پیکربندی شدهاند.
CC2745R10-Q1 یک MCU بیسیم با استاندارد IEEE 802.15.4 و دارای گواهینامه Thread در سطح خودرو (واجد شرایط AEC-Q100) در خانواده SimpleLink CC27xx شرکت TI است. LP-EM-CC2745R10-Q1 ماژول ارزیابی LaunchPad مربوطه است و از نقشهای Thread RCP، FTD، MTD و NCP پشتیبانی میکند. CC2340R5 با LaunchPad LP-EM-CC2340R5 یک گزینه با حافظه کمتر است که فقط میتواند به عنوان RCP عمل کند. این ماژول از نقشهای FTD، MTD یا NCP پشتیبانی نمیکند. اگر LP-EM-CC2340R5 را به جای برد 1 (RCP) جایگزین کنید، دو برد FTD همچنان باید LP-EM-CC2745R10-Q1 باشند. - ۳ پراب اشکالزدایی LP-XDS110ET : یکی برای هر برد LaunchPad، که برای برنامهنویسی و اشکالزدایی از طریق USB استفاده میشود.
LP-XDS110ET یک پروب اشکالزدایی USB جداگانه است که برای LaunchPadها در فرم فاکتور LP-EM مورد نیاز است. این پروب شامل پشتیبانی EnergyTrace برای پروفایلبندی توان است. LP-XDS110 یک جایگزین ارزانتر است که همان قابلیت برنامهنویسی و اشکالزدایی را ارائه میدهد اما EnergyTrace را شامل نمیشود. به عنوان یک جایگزین دیگر، میتوان از یک LaunchPad با یک پروب اشکالزدایی XDS110 روی برد (مانند LAUNCHXL-CC26X2R1) به جای برد LP-EM و یک پروب اشکالزدایی جداگانه به طور کامل استفاده کرد. برای جزئیات بیشتر به راهنمای اتصال اشکالزدایی LaunchPad مراجعه کنید. - ۳ کابل میکرو USB برای اتصال و تغذیه بردهای LaunchPad و پروبهای اشکالزدایی.
- یک رزبری پای ۴B یا بالاتر با سیستم عامل رزبری پای که از طریق اترنت به اینترنت متصل باشد. این سیستم به عنوان میزبان روتر مرزی OT پیکربندی خواهد شد.

- یک سیستم میزبان لینوکس یا macOS با حداقل ۲ پورت USB و دسترسی به اینترنت. محیط ساخت به یک پوسته سازگار با Bash نیاز دارد. کاربران ویندوز باید از WSL2 (زیرسیستم ویندوز برای لینوکس ۲) با اوبونتو استفاده کنند.
- حداقل یک کابل اترنت برای اتصال رزبری پای به اینترنت. به عنوان یک روش جایگزین، میتوانید رزبری پای را به وایفای متصل کنید و
wlan0به عنوان رابط زیرساخت استفاده کنید - برای جزئیات بیشتر به مرحله راهاندازی OTBR مراجعه کنید.
نرمافزار
- مخزن TI ot-ti : https://github.com/TexasInstruments/ot-ti
- GNU ARM Embedded Toolchain 12.2 (به طور خودکار توسط اسکریپت بوت استرپ نصب میشود)
- SysConfig 1.27.0 (به طور خودکار توسط اسکریپت بوتاسترپ نصب میشود)
- TI UniFlash : برای فلش کردن فریمور روی بردهای LaunchPad
- ot-br-posix : https://github.com/openthread/ot-br-posix
- یک ترمینال سریال مانند PuTTY (ویندوز)، minicom (لینوکس) یا screen (مک/لینوکس)
۳. راهاندازی سختافزار
این آزمایشگاه کد از سه برد LP-EM-CC2745R10-Q1 استفاده میکند:
- برد ۱ (RCP): فریمور
ot-rcpرا اجرا میکند. به عنوان کمک پردازنده رادیویی برای روتر Border از طریق USB به رزبری پای متصل میشود. - برد ۲ (FTD 1): فریمور
ot-cli-ftdرا به عنوان یک دستگاه تمام رشتهای (Full Thread Device) اجرا میکند. - برد ۳ (FTD 2): فریمور
ot-cli-ftdرا به عنوان یک دستگاه تمام رشتهای (Full Thread Device) اجرا میکند.

هر LaunchPad را از طریق میکرو USB به رایانه میزبان خود متصل کنید. اتصال USB هم برق و هم قابلیت اشکالزدایی/برنامهریزی را از طریق کاوشگر اشکالزدایی XDS110 داخلی فراهم میکند.
هر LP-EM-CC2745R10-Q1 هنگام اتصال از طریق USB به صورت دو پورت سریال مجازی ظاهر میشود: یکی برای رابط اشکالزدایی XDS110 و دیگری برای UART برنامه. هنگام باز کردن کنسول سریال، به پورت UART برنامه/کاربر متصل شوید، نه پورت داده کمکی.

۴. راهاندازی و ساخت مخزن
سیستم ساخت ot-ti از CMake استفاده میکند و به پوسته Bash نیاز دارد. تمام دستورات این بخش روی میزبان لینوکس یا macOS (یا WSL2 در ویندوز) اجرا میشوند.
۱. مخزن را کلون کنید
$ git clone https://github.com/TexasInstruments/ot-ti.git $ cd ot-ti $ git submodule update --init
۲. اسکریپت بوتاسترپ را اجرا کنید
اسکریپت bootstrap وابستگیهای مورد نیاز از جمله GNU ARM toolchain و SysConfig را نصب میکند:
$ ./script/bootstrap
اسکریپت بوتاسترپ به cmake ، git ، wget و ابزارهای استاندارد ساخت نیاز دارد. در اوبونتو/دبیان، پیشنیازها را با دستور زیر نصب کنید: sudo apt-get install -y cmake git make wget tar ninja-build
۳. ساخت میانافزار برای LP_EM_CC2745R10_Q1
ساخت تمام ایمیجهای فریمور برای برد LP-EM-CC2745R10-Q1:
$ ./script/build LP_EM_CC2745R10_Q1
هدف ساخت LP_EM_CC2745R10_Q1 مربوط به دستگاه CC2745R10-Q1 در خانواده CC27xx SimpleLink (هسته Arm Cortex-M33F) است. برای مشاهده همه بردهای پشتیبانی شده، ./script/build را بدون آرگومان اجرا کنید.
پس از یک ساخت موفقیتآمیز، فایلهای باینری ELF در build/bin/ قرار دارند:
$ ls build/bin/ ot-cli-ftd.out ot-cli-mtd.out ot-ncp-ftd.out ot-rcp.out
دو تصویر استفاده شده در این codelab عبارتند از:
-
ot-rcp.out: فریمور کمکپردازنده رادیویی برای برد روتر Border. -
ot-cli-ftd.out: میانافزار رابط خط فرمان دستگاه با رشته کامل برای دو برد FTD.
دستگاه Thread Minimal اختیاری: اگر میخواهید به جای یک دستگاه Thread کامل، یک دستگاه انتهایی Sleepy را بررسی کنید، میتوانید ot-cli-mtd.out را به جای ot-cli-ftd.out روی بردهای ۲ و ۳ فلش کنید. یک MTD ترافیک Thread را مسیریابی نمیکند و میتواند وارد حالتهای Sleep با توان کم شود، که آن را برای برنامههایی که با باتری کار میکنند، بسیار مناسب میکند. مراحل تشکیل شبکه Thread در این codelab برای هر دو نوع دستگاه یکسان است.
پردازنده کمکی شبکه اختیاری (NCP): فایل باینری ot-ncp-ftd.out معماری NCP را پیادهسازی میکند، که در آن پشته OpenThread روی دستگاه اجرا میشود و یک پردازنده میزبان آن را از طریق پروتکل Spinel هدایت میکند. استفاده از NCP خارج از محدوده این آزمایشگاه کد است، برای جزئیات بیشتر به NCP README مراجعه کنید.
۵. فلش کردن فریمور
از TI UniFlash برای فلش کردن ایمیجهای ELF به بردهای LaunchPad استفاده کنید.
فلش با استفاده از UniFlash
- UniFlash را باز کنید. بردهای LaunchPad متصل به دلیل قابلیت تشخیص خودکار دستگاه، در قسمت Detected Devices نمایش داده میشوند. اگر برد شما به طور خودکار شناسایی نشد، روی New Configuration کلیک کنید،
LP-EM-CC2745R10-Q1target و XDS110 USB debug probe را انتخاب کنید.
- برد ۱ (که قرار است با
ot-rcp.outفلش شود) را انتخاب کرده و روی Start کلیک کنید. - روی دکمهی Browse کلیک کنید و به مسیر
ot-ti/build/bin/ot-rcp.outبروید.
- برای فلش کردن فریمور، روی بارگذاری تصویر (Load Image) کلیک کنید. قسمت گزارش، پیشرفت را نشان میدهد و تکمیل را تأیید میکند.
- مراحل ۲ تا ۴ را برای برد ۲ و برد ۳ تکرار کنید و برای هر کدام
ot-ti/build/bin/ot-cli-ftd.outرا انتخاب کنید.
جایگزین: فلش با استفاده از Code Composer Studio (CCS)
Code Composer Studio میتواند به عنوان جایگزینی برای UniFlash مورد استفاده قرار گیرد و علاوه بر این، یک محیط اشکالزدایی کامل نیز ارائه میدهد:
- استودیو کد کامپوزر را دانلود و نصب کنید.
- با استفاده از دیباگر XDS110، یک اتصال هدف (CCXML) برای LP-EM-CC2745R10-Q1 ایجاد کنید. به راهنمای کاربر CCS: روش دستی مراجعه کنید.
- همانطور که در راهنمای کاربر CCS: راهاندازی دستی توضیح داده شده است، یک جلسه اشکالزدایی بدون پروژه را شروع کنید.
- به هسته Arm Cortex-M33 متصل شوید و برای بارگذاری تصویر ELF، روی Load کلیک کنید.
پیکربندی پیشفرض CCXML از cJTAG دو سیمه برای مطابقت با پیکربندی جامپر پیشفرض LP-EM-CC2745R10-Q1 استفاده میکند. پس از برنامهریزی از طریق JTAG، برد را روشن/خاموش کنید تا علامت توقف در بوت پاک شود.
۶. HSM را برنامهریزی کنید
CC2745R10-Q1 حاوی یک ماژول امنیتی سختافزاری (HSM) است که باید قبل از اجرای Thread یا سایر میانافزار برنامههای امن، آمادهسازی شود. اگر برد LP-EM-CC2745R10-Q1 شما هنوز HSM خود را برنامهریزی نکرده است، اکنون این مرحله را انجام دهید.
برای برنامه ریزی HSM با استفاده از UniFlash:
- UniFlash را باز کنید و برد LP-EM-CC2745R10-Q1 خود را از بخش Detected Devices انتخاب کنید.
- به پنل برنامهنویسی HSM بروید و تصویر میانافزار HSM را مطابق شکل زیر بارگذاری کنید.

- برای تکمیل آمادهسازی HSM، دستورالعملهای روی صفحه را دنبال کنید. این عملیات در کنسول خروجی UniFlash ثبت میشود.
برای مشاهدهی مراحل کامل برنامهنویسی HSM، از جمله مسیر تصویر میانافزار مورد نیاز در SimpleLink Low Power F3 SDK، به راهنمای شروع سریع CC2745R10-Q1 در TI Resource Explorer مراجعه کنید.
۷. خلاصهی میانافزار
در این مرحله، هر سه برد باید فلش شوند:
- برد ۱:
ot-rcp.out: از کامپیوتر میزبان جدا شده و از طریق USB به رزبری پای متصل میشود. - برد ۲:
ot-cli-ftd.out: اتصال به کامپیوتر میزبان را حفظ میکند. - برد ۳:
ot-cli-ftd.out: اتصال به کامپیوتر میزبان را حفظ میکند.
تنظیمات سختافزاری شما مانند نمودار زیر خواهد بود. برد ۱ به عنوان کمک پردازنده رادیویی برای OTBR به رزبری پای متصل میشود، در حالی که بردهای ۲ و ۳ برای دسترسی به کنسول سریال به کامپیوتر میزبان متصل میمانند.

۸. تنظیم کنسول سریال برای دستگاههای ot-cli-ftd
LP-EM-CC2745R10-Q1 برنامه UART را از طریق USB با سرعت ۹۲۱۶۰۰ بیت در ثانیه نمایش میدهد.
با استفاده از این تنظیمات، یک ترمینال سریال به پورت Application UART COM (ویندوز) یا دستگاه /dev/ttyACM* (لینوکس/مک) برای هر برد FTD باز کنید:
پارامتر | ارزش |
سرعت (باود) | |
بیتهای داده | |
بیتهای توقف | |
برابری | |
کنترل جریان | |
نکته (لینوکس/مک): با اجرای دستور ls /dev/ttyACM* قبل و بعد از اتصال برد و توجه به ورودی ظاهر شده، گره دستگاه صحیح را شناسایی کنید. هر LP-EM-CC2745R10-Q1 دو ورودی ایجاد میکند: پورت با شماره پایینتر، UART اشکالزدایی XDS110 و پورت با شماره بالاتر، UART کاربردی است. برای مثال، اگر برد /dev/ttyACM0 و /dev/ttyACM1 را ایجاد میکند، از /dev/ttyACM1 استفاده کنید.
نکته (ویندوز): Device Manager را باز کنید و در قسمت Ports (COM & LPT) به دنبال دو پورت COM جدید بگردید، زمانی که برد به سیستم متصل است. پورت داده اشکالزدایی XDS110 معمولاً اول ظاهر میشود، از پورت COM دوم (با شماره بالاتر) برای کنسول برنامه استفاده کنید.
برای دریافت اعلان OpenThread CLI ( > ) در ترمینال، Enter را فشار دهید. برای مشاهده لیست کامل دستورات موجود، به مرجع OpenThread CLI مراجعه کنید. تأیید کنید که FTD عملیاتی است:
> state disabled Done

شما هنوز کنسول سریال را برای برد RCP تنظیم نخواهید کرد. OTBR روی رزبری پای مستقیماً با RCP ارتباط برقرار میکند. در مرحله بعدی، رزبری پای را به عنوان روتر مرزی OpenThread پیکربندی خواهید کرد.
۹. رزبری پای را به عنوان یک روتر مرزی تنظیم کنید
OTBR از ot-br-posix ، پروژه متنباز OpenThread Border Router، ساخته شده است. Border Router روی Raspberry Pi اجرا میشود و از Board 1 (RCP) به عنوان رادیوی 802.15.4 خود از طریق USB استفاده میکند.
راه اندازی رزبری پای
- سیستم عامل رزبری پای (۶۴ بیتی لایت یا دسکتاپ) را با استفاده از Raspberry Pi Imager روی کارت SD خود فلش کنید.
- رزبری پای را بوت کنید و یک ترمینال (از طریق SSH یا مستقیماً) باز کنید.
- مدیر بسته را بهروزرسانی کنید و بستههای نصبشده را ارتقا دهید:
$ sudo apt-get update $ sudo apt-get upgrade -y
قبل از ادامه، رزبری پای را پس از بهروزرسانیها مجدداً راهاندازی کنید: sudo reboot
برد ۱ (RCP) را به رزبری پای وصل کنید
برد ۱ (که با ot-rcp فلش شده است) را از طریق میکرو USB به رزبری پای متصل کنید. پس از اتصال، مطمئن شوید که گره دستگاه ظاهر میشود:
$ ls /dev/ttyACM* /dev/ttyACM0 /dev/ttyACM1
The Application UART of the RCP board is typically /dev/ttyACM1 (the XDS110 debug UART is /dev/ttyACM0 ). Verify which port is the application UART by checking that it responds when the OTBR agent is started in a later step. If other USB serial devices are connected, the device node number may differ. Adjust the path in the OTBR configuration accordingly.
Build and Install ot-br-posix
On the Raspberry Pi, clone and build ot-br-posix:
$ git clone https://github.com/openthread/ot-br-posix.git $ cd ot-br-posix $ ./script/bootstrap
Run the setup script, specifying your Ethernet interface as the backbone (infrastructure) interface:
$ INFRA_IF_NAME=eth0 ./script/setup
eth0 is the typical name for the wired Ethernet interface. If you are connecting the Raspberry Pi via Wi-Fi instead of Ethernet, replace eth0 with wlan0 (and ensure the Pi is already connected to your Wi-Fi network). Verify the active interface name with ip link show .
The setup script builds ot-br-posix from source, installs the otbr-agent and otbr-web system services, and configures the networking stack. This process typically takes 10–20 minutes on a Raspberry Pi 4B.
Configure the OTBR Agent
Edit the OTBR agent configuration file to specify the RCP device path and baud rate:
$ sudo nano /etc/default/otbr-agent
Locate the OTBR_AGENT_OPTS line and update it to reference the RCP Application UART:
OTBR_AGENT_OPTS="-I wpan0 -B eth0 spinel+hdlc+uart:///dev/ttyACM1?uart-baudrate=921600"
Replace eth0 with wlan0 if your Raspberry Pi is connected via Wi-Fi.
OTBR_AGENT_OPTS="-I wpan0 -B wlan0 spinel+hdlc+uart:///dev/ttyACM1?uart-baudrate=921600"
The LP-EM-CC2745R10-Q1 RCP Application UART operates at 921600 baud . Verify the device path ( /dev/ttyACM1 in this example) matches the Application UART of your RCP board.
Restart the OTBR agent to apply the configuration:
$ sudo systemctl restart otbr-agent $ sudo systemctl enable otbr-agent
Verify the agent is running:
$ sudo systemctl status otbr-agent
Interact with the RCP Node
Communicate with the RCP node using the ot-ctl tool:
$ sudo ot-ctl state disabled Done
You can monitor the OTBR agent log for connection and status messages:
$ sudo journalctl -u otbr-agent -f
Optionally, the OTBR web interface is available at http:// and provides a graphical view of the Thread network.
To stop or restart the OTBR agent:
$ sudo systemctl stop otbr-agent $ sudo systemctl start otbr-agent
At this point you should have three active consoles:
- Serial terminal for Board 2 (
ot-cli-ftd 1) on the host computer. - Serial terminal for Board 3 (
ot-cli-ftd 2) on the host computer. - SSH or terminal session on the Raspberry Pi for
ot-ctl(OTBR/RCP).
You are now ready to form a Thread network.
10. Create a Thread Network
Set Up RCP (OTBR)
Create a new Thread network from the ot-ctl shell on the Raspberry Pi. Enter the following commands in order:
فهرست | Command | توضیحات | Expected Response | ||
۱ | | Create a new network configuration. | انجام شد | ||
۲ | | Commit new dataset to the Active Operational Dataset. | انجام شد | ||
۳ | | Enable Thread interface. | انجام شد | ||
۴ | | Enable and attach Thread protocol operation. | انجام شد | ||
Wait 10 seconds for the Thread interface to come up. | |||||
۵ | | Check the device state. It should be leader . Other possible states: offline, disabled, detached, child, router, or leader. | leader | ||
۶ | | View the network configuration. Your values will differ. Note the channel, network key, network name, and PAN ID — these are needed to join FTDs to the network. | Active Timestamp: 1 | ||
Add FTDs to the Thread Network (Out-of-Band Method)
Using the out-of-band commissioning method, you provide the network credentials directly. In the serial terminal for each FTD board , enter the following commands using the channel and network key from the OTBR dataset output above:
فهرست | Command | توضیحات | Expected Response | ||
۱ | | Set the channel to match the OTBR. Replace | انجام شد | ||
۲ | | Set the network key. Replace with your OTBR's network key. Only this key is required to attach. | انجام شد | ||
۳ | | Commit new dataset to the Active Operational Dataset. | انجام شد | ||
۴ | | Enable Thread interface. | انجام شد | ||
۵ | | Enable and attach Thread protocol operation. | انجام شد | ||
Wait 20 seconds while the device joins and configures itself. | |||||
۶ | | Check device state. | کودک | ||
Because of the self-configuring nature of Thread networks and these being Full Thread Devices, either or both FTDs may eventually become routers. You can verify the current role at any time with the state command.
Communication Between Thread Devices
Use the ping command to verify that devices can communicate. Get the IPv6 addresses of each device with ipaddr :
> ipaddr fd5c:c6b:3a17:40b9:0:ff:fe00:fc00 # Leader Anycast Locator (ALOC) fd5c:c6b:3a17:40b9:0:ff:fe00:1800 # Routing Locator (RLOC) fd5c:c6b:3a17:40b9:84e2:bae8:bd5b:fa03 # Mesh-Local EID (ML-EID) fe80:0:0:0:c449:ca4a:101f:5d16 # Link-Local Address (LLA) Done
From both FTDs, ping the OTBR using its RLOC address:
> ping fd5c:c6b:3a17:40b9:0:ff:fe00:1800 Done > > 16 bytes from fd5c:c6b:3a17:40b9:0:ff:fe00:1800: icmp_seq=3 hlim=64 time=30ms 16 bytes from fd5c:c6b:3a17:40b9:0:ff:fe00:1800: icmp_seq=3 hlim=64 time=52ms
A successful response confirms the Thread network is operating and devices can communicate. Repeat the process to ping each FTD from the OTBR ( sudo ot-ctl ping ).
11. Congratulations
You've created a Thread network with TI CC2745R10-Q1 boards!
You now know:
- How to set up the Texas Instruments ot-ti build environment.
- How to build and flash OpenThread CLI binaries to the LP-EM-CC2745R10-Q1 LaunchPad.
- How to set up a Raspberry Pi as an OpenThread Border Router (OTBR) using ot-br-posix.
- How to create a Thread network on the OTBR.
- Out-of-band commissioning of devices onto a Thread network.
- How to verify Thread communication between nodes using the ping command.
مطالعه بیشتر
Check out openthread.io and GitHub for a variety of OpenThread resources, including:
- Supported Platforms — discover all the platforms that support OpenThread
- Build OpenThread — further details on building and configuring OpenThread
- Thread Primer — covers all the Thread concepts featured in this codelab
- TI ot-ti Repository — TI's OpenThread implementation for SimpleLink devices, with build instructions and release notes
- CC2745R10-Q1 Product Page — device datasheet, reference designs, and other documentation
- LP-EM-CC2745R10-Q1 LaunchPad — evaluation board user guide and hardware files
- OpenThread CLI Reference — overview of the OpenThread CLI and its usage
- OpenThread CLI Commands — complete reference for all OpenThread CLI commands
- TI E2E Community — Thread & Zigbee — technical support community for Texas Instruments wireless connectivity products