ساخت یک شبکه Thread با Texas Instruments SimpleLink F3 و OpenThread، ساخت یک شبکه Thread با Texas Instruments SimpleLink F3 و OpenThread

۱. مقدمه

لوگوی OpenThread

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) نشان می‌دهد.

تنظیمات سخت‌افزاری CC2745R10

آنچه یاد خواهید گرفت

  • نحوه راه‌اندازی محیط ساخت ot-ti شرکت Texas Instruments.
  • نحوه ساخت و فلش کردن فایل‌های باینری OpenThread CLI روی بردهای LP-EM-CC2745R10-Q1.
  • نحوه تنظیم Raspberry Pi به عنوان یک روتر مرزی OpenThread (OTBR) با استفاده از ot-br-posix.
  • نحوه ایجاد یک شبکه Thread در OTBR.
  • راه‌اندازی خارج از باند دستگاه‌ها بر روی یک شبکه Thread.
  • نحوه تأیید ارتباط Thread بین گره‌ها با استفاده از دستور ping.

۲. پیش‌نیازها

سخت‌افزار

  1. ۳ برد LaunchPad مدل LP-EM-CC2745R10-Q1 : یکی به عنوان RCP متصل به Border Router و دو تا به عنوان Full Thread Devices (FTD) پیکربندی شده‌اند.نمای زاویه‌دار LP-EM-CC2745R10-Q1 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 باشند.
  2. ۳ پراب اشکال‌زدایی LP-XDS110ET : یکی برای هر برد LaunchPad، که برای برنامه‌نویسی و اشکال‌زدایی از طریق USB استفاده می‌شود.نمای زاویه‌دار LP-XDS110ET LP-XDS110ET یک پروب اشکال‌زدایی USB جداگانه است که برای LaunchPadها در فرم فاکتور LP-EM مورد نیاز است. این پروب شامل پشتیبانی EnergyTrace برای پروفایل‌بندی توان است. LP-XDS110 یک جایگزین ارزان‌تر است که همان قابلیت برنامه‌نویسی و اشکال‌زدایی را ارائه می‌دهد اما EnergyTrace را شامل نمی‌شود. به عنوان یک جایگزین دیگر، می‌توان از یک LaunchPad با یک پروب اشکال‌زدایی XDS110 روی برد (مانند LAUNCHXL-CC26X2R1) به جای برد LP-EM و یک پروب اشکال‌زدایی جداگانه به طور کامل استفاده کرد. برای جزئیات بیشتر به راهنمای اتصال اشکال‌زدایی LaunchPad مراجعه کنید.
  3. ۳ کابل میکرو USB برای اتصال و تغذیه بردهای LaunchPad و پروب‌های اشکال‌زدایی.
  4. یک رزبری پای ۴B یا بالاتر با سیستم عامل رزبری پای که از طریق اترنت به اینترنت متصل باشد. این سیستم به عنوان میزبان روتر مرزی OT پیکربندی خواهد شد.رزبری پای ۴
  5. یک سیستم میزبان لینوکس یا macOS با حداقل ۲ پورت USB و دسترسی به اینترنت. محیط ساخت به یک پوسته سازگار با Bash نیاز دارد. کاربران ویندوز باید از WSL2 (زیرسیستم ویندوز برای لینوکس ۲) با اوبونتو استفاده کنند.
  6. حداقل یک کابل اترنت برای اتصال رزبری پای به اینترنت. به عنوان یک روش جایگزین، می‌توانید رزبری پای را به وای‌فای متصل کنید و wlan0 به عنوان رابط زیرساخت استفاده کنید - برای جزئیات بیشتر به مرحله راه‌اندازی OTBR مراجعه کنید.

نرم‌افزار

  • مخزن TI ot-ti : https://github.com/TexasInstruments/ot-ti
  • GNU ARM Embedded Toolchain 12.2 (به طور خودکار توسط اسکریپت بوت استرپ نصب می‌شود)
  • SysConfig 1.27.0 (به طور خودکار توسط اسکریپت بوت‌استرپ نصب می‌شود)
  • TI UniFlash : برای فلش کردن فریمور روی بردهای LaunchPad

۳. راه‌اندازی سخت‌افزار

این آزمایشگاه کد از سه برد 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) اجرا می‌کند.

نمای بالا LP-EM-CC2745R10-Q1

هر 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

  1. UniFlash را باز کنید. بردهای LaunchPad متصل به دلیل قابلیت تشخیص خودکار دستگاه، در قسمت Detected Devices نمایش داده می‌شوند. اگر برد شما به طور خودکار شناسایی نشد، روی New Configuration کلیک کنید، LP-EM-CC2745R10-Q1 target و XDS110 USB debug probe را انتخاب کنید. دستگاه‌های شناسایی‌شده توسط UniFlash
  2. برد ۱ (که قرار است با ot-rcp.out فلش شود) را انتخاب کرده و روی Start کلیک کنید.
  3. روی دکمه‌ی Browse کلیک کنید و به مسیر ot-ti/build/bin/ot-rcp.out بروید.صفحه فلش UniFlash
  4. برای فلش کردن فریمور، روی بارگذاری تصویر (Load Image) کلیک کنید. قسمت گزارش، پیشرفت را نشان می‌دهد و تکمیل را تأیید می‌کند.
  5. مراحل ۲ تا ۴ را برای برد ۲ و برد ۳ تکرار کنید و برای هر کدام ot-ti/build/bin/ot-cli-ftd.out را انتخاب کنید.

جایگزین: فلش با استفاده از Code Composer Studio (CCS)

Code Composer Studio می‌تواند به عنوان جایگزینی برای UniFlash مورد استفاده قرار گیرد و علاوه بر این، یک محیط اشکال‌زدایی کامل نیز ارائه می‌دهد:

  1. استودیو کد کامپوزر را دانلود و نصب کنید.
  2. با استفاده از دیباگر XDS110، یک اتصال هدف (CCXML) برای LP-EM-CC2745R10-Q1 ایجاد کنید. به راهنمای کاربر CCS: روش دستی مراجعه کنید.
  3. همانطور که در راهنمای کاربر CCS: راه‌اندازی دستی توضیح داده شده است، یک جلسه اشکال‌زدایی بدون پروژه را شروع کنید.
  4. به هسته Arm Cortex-M33 متصل شوید و برای بارگذاری تصویر ELF، روی Load کلیک کنید.

پیکربندی پیش‌فرض CCXML از cJTAG دو سیمه برای مطابقت با پیکربندی جامپر پیش‌فرض LP-EM-CC2745R10-Q1 استفاده می‌کند. پس از برنامه‌ریزی از طریق JTAG، برد را روشن/خاموش کنید تا علامت توقف در بوت پاک شود.

۶. HSM را برنامه‌ریزی کنید

CC2745R10-Q1 حاوی یک ماژول امنیتی سخت‌افزاری (HSM) است که باید قبل از اجرای Thread یا سایر میان‌افزار برنامه‌های امن، آماده‌سازی شود. اگر برد LP-EM-CC2745R10-Q1 شما هنوز HSM خود را برنامه‌ریزی نکرده است، اکنون این مرحله را انجام دهید.

برای برنامه ریزی HSM با استفاده از UniFlash:

  1. UniFlash را باز کنید و برد LP-EM-CC2745R10-Q1 خود را از بخش Detected Devices انتخاب کنید.
  2. به پنل برنامه‌نویسی HSM بروید و تصویر میان‌افزار HSM را مطابق شکل زیر بارگذاری کنید.

برنامه‌نویسی UniFlash HSM

  1. برای تکمیل آماده‌سازی 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 به رزبری پای متصل می‌شود، در حالی که بردهای ۲ و ۳ برای دسترسی به کنسول سریال به کامپیوتر میزبان متصل می‌مانند.

راه‌اندازی سخت‌افزار CC2745R10 با FTDها

۸. تنظیم کنسول سریال برای دستگاه‌های ot-cli-ftd

LP-EM-CC2745R10-Q1 برنامه UART را از طریق USB با سرعت ۹۲۱۶۰۰ بیت در ثانیه نمایش می‌دهد.

با استفاده از این تنظیمات، یک ترمینال سریال به پورت Application UART COM (ویندوز) یا دستگاه /dev/ttyACM* (لینوکس/مک) برای هر برد FTD باز کنید:

پارامتر

ارزش

سرعت (باود)

921600

بیت‌های داده

8

بیت‌های توقف

1

برابری

None

کنترل جریان

None

نکته (لینوکس/مک): با اجرای دستور 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

FTD های ترمینال سریال

شما هنوز کنسول سریال را برای برد RCP تنظیم نخواهید کرد. OTBR روی رزبری پای مستقیماً با RCP ارتباط برقرار می‌کند. در مرحله بعدی، رزبری پای را به عنوان روتر مرزی OpenThread پیکربندی خواهید کرد.

۹. رزبری پای را به عنوان یک روتر مرزی تنظیم کنید

OTBR از ot-br-posix ، پروژه متن‌باز OpenThread Border Router، ساخته شده است. Border Router روی Raspberry Pi اجرا می‌شود و از Board 1 (RCP) به عنوان رادیوی 802.15.4 خود از طریق USB استفاده می‌کند.

راه اندازی رزبری پای

  1. سیستم عامل رزبری پای (۶۴ بیتی لایت یا دسکتاپ) را با استفاده از Raspberry Pi Imager روی کارت SD خود فلش کنید.
  2. رزبری پای را بوت کنید و یک ترمینال (از طریق SSH یا مستقیماً) باز کنید.
  3. مدیر بسته را به‌روزرسانی کنید و بسته‌های نصب‌شده را ارتقا دهید:
    $ 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:// :80 موجود است. http:// :80 و یک نمای گرافیکی از شبکه Thread ارائه می‌دهد.

برای متوقف کردن یا راه‌اندازی مجدد عامل OTBR:

$ sudo systemctl stop otbr-agent
$ sudo systemctl start otbr-agent

در این مرحله شما باید سه کنسول فعال داشته باشید:

  1. ترمینال سریال برای برد ۲ ( ot-cli-ftd 1 ) روی کامپیوتر میزبان.
  2. ترمینال سریال برای برد ۳ ( ot-cli-ftd 2 ) روی کامپیوتر میزبان.
  3. SSH یا جلسه ترمینال روی رزبری پای برای ot-ctl (OTBR/RCP).

اکنون آماده تشکیل یک شبکه Thread هستید.

۱۰. ایجاد یک شبکه نخ (Thread Network)

تنظیم RCP (OTBR)

یک شبکه Thread جدید از طریق پوسته ot-ctl روی رزبری پای ایجاد کنید. دستورات زیر را به ترتیب وارد کنید:

فهرست

فرماندهی

توضیحات

پاسخ مورد انتظار

۱

dataset init new

یک پیکربندی شبکه جدید ایجاد کنید.

انجام شد

۲

dataset commit active

مجموعه داده جدید را به مجموعه داده عملیاتی فعال (Active Operational Dataset) اختصاص دهید.

انجام شد

۳

ifconfig up

رابط Thread را فعال کنید.

انجام شد

۴

thread start

فعال کردن و پیوست کردن عملیات پروتکل Thread.

انجام شد

۱۰ ثانیه صبر کنید تا رابط Thread بالا بیاید.

۵

state

وضعیت دستگاه را بررسی کنید. باید رهبر باشد. سایر حالت‌های ممکن: آفلاین، غیرفعال، جدا شده، فرزند، روتر یا رهبر.

رهبر
انجام شد

۶

dataset

پیکربندی شبکه را مشاهده کنید. مقادیر شما متفاوت خواهد بود. به کانال، کلید شبکه، نام شبکه و شناسه PAN توجه کنید - این موارد برای اتصال FTD ها به شبکه مورد نیاز هستند.

مهر زمانی فعال: ۱
کانال: 20
ماسک کانال: 0x07fff800
شناسه PAN داخلی: 39ba71f7fc367160
پیشوند محلی مش: fd5c:c6b:3a17:40b9::/64
کلید شبکه: 81ae2c2c17368d585dee71eaa8cf1e90
نام شبکه: OpenThread-008c
شناسه PAN: 0x008c
PSKc: c98f0193d4236025d22dd0ee614e641f
سیاست امنیتی: 0، onrcb
انجام شد

اضافه کردن FTD ها به شبکه Thread (روش خارج از باند)

با استفاده از روش راه‌اندازی خارج از باند، شما مستقیماً اعتبارنامه‌های شبکه را ارائه می‌دهید. در ترمینال سریال برای هر برد FTD ، دستورات زیر را با استفاده از کانال و کلید شبکه از خروجی مجموعه داده OTBR بالا وارد کنید:

فهرست

فرماندهی

توضیحات

پاسخ مورد انتظار

۱

dataset channel 20

کانال را طوری تنظیم کنید که با OTBR مطابقت داشته باشد. 20 را با مقدار کانال OTBR خود جایگزین کنید.

انجام شد

۲

dataset networkkey 81ae2c2c17368d585dee71eaa8cf1e90

کلید شبکه را تنظیم کنید. آن را با کلید شبکه OTBR خود جایگزین کنید. فقط این کلید برای اتصال لازم است.

انجام شد

۳

dataset commit active

مجموعه داده جدید را به مجموعه داده عملیاتی فعال (Active Operational Dataset) اختصاص دهید.

انجام شد

۴

ifconfig up

رابط Thread را فعال کنید.

انجام شد

۵

thread start

فعال کردن و پیوست کردن عملیات پروتکل Thread.

انجام شد

۲۰ ثانیه صبر کنید تا دستگاه متصل شده و خودش را پیکربندی کند.

۶

state

وضعیت دستگاه را بررسی کنید.

کودک
انجام شد

به دلیل ماهیت خودپیکربندی شبکه‌های 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 (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) نشان می‌دهد.

تنظیمات سخت‌افزاری CC2745R10

آنچه یاد خواهید گرفت

  • نحوه راه‌اندازی محیط ساخت ot-ti شرکت Texas Instruments.
  • نحوه ساخت و فلش کردن فایل‌های باینری OpenThread CLI روی بردهای LP-EM-CC2745R10-Q1.
  • نحوه تنظیم Raspberry Pi به عنوان یک روتر مرزی OpenThread (OTBR) با استفاده از ot-br-posix.
  • نحوه ایجاد یک شبکه Thread در OTBR.
  • راه‌اندازی خارج از باند دستگاه‌ها بر روی یک شبکه Thread.
  • نحوه تأیید ارتباط Thread بین گره‌ها با استفاده از دستور ping.

۲. پیش‌نیازها

سخت‌افزار

  1. ۳ برد LaunchPad مدل LP-EM-CC2745R10-Q1 : یکی به عنوان RCP متصل به Border Router و دو تا به عنوان Full Thread Devices (FTD) پیکربندی شده‌اند.نمای زاویه‌دار LP-EM-CC2745R10-Q1 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 باشند.
  2. ۳ پراب اشکال‌زدایی LP-XDS110ET : یکی برای هر برد LaunchPad، که برای برنامه‌نویسی و اشکال‌زدایی از طریق USB استفاده می‌شود.نمای زاویه‌دار LP-XDS110ET LP-XDS110ET یک پروب اشکال‌زدایی USB جداگانه است که برای LaunchPadها در فرم فاکتور LP-EM مورد نیاز است. این پروب شامل پشتیبانی EnergyTrace برای پروفایل‌بندی توان است. LP-XDS110 یک جایگزین ارزان‌تر است که همان قابلیت برنامه‌نویسی و اشکال‌زدایی را ارائه می‌دهد اما EnergyTrace را شامل نمی‌شود. به عنوان یک جایگزین دیگر، می‌توان از یک LaunchPad با یک پروب اشکال‌زدایی XDS110 روی برد (مانند LAUNCHXL-CC26X2R1) به جای برد LP-EM و یک پروب اشکال‌زدایی جداگانه به طور کامل استفاده کرد. برای جزئیات بیشتر به راهنمای اتصال اشکال‌زدایی LaunchPad مراجعه کنید.
  3. ۳ کابل میکرو USB برای اتصال و تغذیه بردهای LaunchPad و پروب‌های اشکال‌زدایی.
  4. یک رزبری پای ۴B یا بالاتر با سیستم عامل رزبری پای که از طریق اترنت به اینترنت متصل باشد. این سیستم به عنوان میزبان روتر مرزی OT پیکربندی خواهد شد.رزبری پای ۴
  5. یک سیستم میزبان لینوکس یا macOS با حداقل ۲ پورت USB و دسترسی به اینترنت. محیط ساخت به یک پوسته سازگار با Bash نیاز دارد. کاربران ویندوز باید از WSL2 (زیرسیستم ویندوز برای لینوکس ۲) با اوبونتو استفاده کنند.
  6. حداقل یک کابل اترنت برای اتصال رزبری پای به اینترنت. به عنوان یک روش جایگزین، می‌توانید رزبری پای را به وای‌فای متصل کنید و wlan0 به عنوان رابط زیرساخت استفاده کنید - برای جزئیات بیشتر به مرحله راه‌اندازی OTBR مراجعه کنید.

نرم‌افزار

  • مخزن TI ot-ti : https://github.com/TexasInstruments/ot-ti
  • GNU ARM Embedded Toolchain 12.2 (به طور خودکار توسط اسکریپت بوت استرپ نصب می‌شود)
  • SysConfig 1.27.0 (به طور خودکار توسط اسکریپت بوت‌استرپ نصب می‌شود)
  • TI UniFlash : برای فلش کردن فریمور روی بردهای LaunchPad

۳. راه‌اندازی سخت‌افزار

این آزمایشگاه کد از سه برد 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) اجرا می‌کند.

نمای بالا LP-EM-CC2745R10-Q1

هر 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

  1. UniFlash را باز کنید. بردهای LaunchPad متصل به دلیل قابلیت تشخیص خودکار دستگاه، در قسمت Detected Devices نمایش داده می‌شوند. اگر برد شما به طور خودکار شناسایی نشد، روی New Configuration کلیک کنید، LP-EM-CC2745R10-Q1 target و XDS110 USB debug probe را انتخاب کنید. دستگاه‌های شناسایی‌شده توسط UniFlash
  2. برد ۱ (که قرار است با ot-rcp.out فلش شود) را انتخاب کرده و روی Start کلیک کنید.
  3. روی دکمه‌ی Browse کلیک کنید و به مسیر ot-ti/build/bin/ot-rcp.out بروید.صفحه فلش UniFlash
  4. برای فلش کردن فریمور، روی بارگذاری تصویر (Load Image) کلیک کنید. قسمت گزارش، پیشرفت را نشان می‌دهد و تکمیل را تأیید می‌کند.
  5. مراحل ۲ تا ۴ را برای برد ۲ و برد ۳ تکرار کنید و برای هر کدام ot-ti/build/bin/ot-cli-ftd.out را انتخاب کنید.

جایگزین: فلش با استفاده از Code Composer Studio (CCS)

Code Composer Studio می‌تواند به عنوان جایگزینی برای UniFlash مورد استفاده قرار گیرد و علاوه بر این، یک محیط اشکال‌زدایی کامل نیز ارائه می‌دهد:

  1. استودیو کد کامپوزر را دانلود و نصب کنید.
  2. با استفاده از دیباگر XDS110، یک اتصال هدف (CCXML) برای LP-EM-CC2745R10-Q1 ایجاد کنید. به راهنمای کاربر CCS: روش دستی مراجعه کنید.
  3. همانطور که در راهنمای کاربر CCS: راه‌اندازی دستی توضیح داده شده است، یک جلسه اشکال‌زدایی بدون پروژه را شروع کنید.
  4. به هسته Arm Cortex-M33 متصل شوید و برای بارگذاری تصویر ELF، روی Load کلیک کنید.

پیکربندی پیش‌فرض CCXML از cJTAG دو سیمه برای مطابقت با پیکربندی جامپر پیش‌فرض LP-EM-CC2745R10-Q1 استفاده می‌کند. پس از برنامه‌ریزی از طریق JTAG، برد را روشن/خاموش کنید تا علامت توقف در بوت پاک شود.

۶. HSM را برنامه‌ریزی کنید

CC2745R10-Q1 حاوی یک ماژول امنیتی سخت‌افزاری (HSM) است که باید قبل از اجرای Thread یا سایر میان‌افزار برنامه‌های امن، آماده‌سازی شود. اگر برد LP-EM-CC2745R10-Q1 شما هنوز HSM خود را برنامه‌ریزی نکرده است، اکنون این مرحله را انجام دهید.

برای برنامه ریزی HSM با استفاده از UniFlash:

  1. UniFlash را باز کنید و برد LP-EM-CC2745R10-Q1 خود را از بخش Detected Devices انتخاب کنید.
  2. به پنل برنامه‌نویسی HSM بروید و تصویر میان‌افزار HSM را مطابق شکل زیر بارگذاری کنید.

برنامه‌نویسی UniFlash HSM

  1. برای تکمیل آماده‌سازی 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 به رزبری پای متصل می‌شود، در حالی که بردهای ۲ و ۳ برای دسترسی به کنسول سریال به کامپیوتر میزبان متصل می‌مانند.

راه‌اندازی سخت‌افزار CC2745R10 با FTDها

۸. تنظیم کنسول سریال برای دستگاه‌های ot-cli-ftd

LP-EM-CC2745R10-Q1 برنامه UART را از طریق USB با سرعت ۹۲۱۶۰۰ بیت در ثانیه نمایش می‌دهد.

با استفاده از این تنظیمات، یک ترمینال سریال به پورت Application UART COM (ویندوز) یا دستگاه /dev/ttyACM* (لینوکس/مک) برای هر برد FTD باز کنید:

پارامتر

ارزش

سرعت (باود)

921600

بیت‌های داده

8

بیت‌های توقف

1

برابری

None

کنترل جریان

None

نکته (لینوکس/مک): با اجرای دستور 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

FTD های ترمینال سریال

شما هنوز کنسول سریال را برای برد RCP تنظیم نخواهید کرد. OTBR روی رزبری پای مستقیماً با RCP ارتباط برقرار می‌کند. در مرحله بعدی، رزبری پای را به عنوان روتر مرزی OpenThread پیکربندی خواهید کرد.

۹. رزبری پای را به عنوان یک روتر مرزی تنظیم کنید

OTBR از ot-br-posix ، پروژه متن‌باز OpenThread Border Router، ساخته شده است. Border Router روی Raspberry Pi اجرا می‌شود و از Board 1 (RCP) به عنوان رادیوی 802.15.4 خود از طریق USB استفاده می‌کند.

راه اندازی رزبری پای

  1. سیستم عامل رزبری پای (۶۴ بیتی لایت یا دسکتاپ) را با استفاده از Raspberry Pi Imager روی کارت SD خود فلش کنید.
  2. رزبری پای را بوت کنید و یک ترمینال (از طریق SSH یا مستقیماً) باز کنید.
  3. مدیر بسته را به‌روزرسانی کنید و بسته‌های نصب‌شده را ارتقا دهید:
    $ 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:// :80 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:

  1. Serial terminal for Board 2 ( ot-cli-ftd 1 ) on the host computer.
  2. Serial terminal for Board 3 ( ot-cli-ftd 2 ) on the host computer.
  3. 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

۱

dataset init new

Create a new network configuration.

انجام شد

۲

dataset commit active

Commit new dataset to the Active Operational Dataset.

انجام شد

۳

ifconfig up

Enable Thread interface.

انجام شد

۴

thread start

Enable and attach Thread protocol operation.

انجام شد

Wait 10 seconds for the Thread interface to come up.

۵

state

Check the device state. It should be leader . Other possible states: offline, disabled, detached, child, router, or leader.

leader
انجام شد

۶

dataset

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
Channel: 20
Channel Mask: 0x07fff800
Ext PAN ID: 39ba71f7fc367160
Mesh Local Prefix: fd5c:c6b:3a17:40b9::/64
Network Key: 81ae2c2c17368d585dee71eaa8cf1e90
Network Name: OpenThread-008c
PAN ID: 0x008c
PSKc: c98f0193d4236025d22dd0ee614e641f
Security Policy: 0, onrcb
انجام شد

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

۱

dataset channel 20

Set the channel to match the OTBR. Replace 20 with your OTBR's channel value.

انجام شد

۲

dataset networkkey 81ae2c2c17368d585dee71eaa8cf1e90

Set the network key. Replace with your OTBR's network key. Only this key is required to attach.

انجام شد

۳

dataset commit active

Commit new dataset to the Active Operational Dataset.

انجام شد

۴

ifconfig up

Enable Thread interface.

انجام شد

۵

thread start

Enable and attach Thread protocol operation.

انجام شد

Wait 20 seconds while the device joins and configures itself.

۶

state

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: