1. บทนำ

OpenThread (OT) ของ Google คือการติดตั้งใช้งาน Thread แบบโอเพนซอร์ส Google ได้เปิดตัว OpenThread เพื่อให้เทคโนโลยีระบบเครือข่ายที่ใช้ในผลิตภัณฑ์ Google Nest พร้อมให้บริการแก่นักพัฒนาอย่างกว้างขวาง ซึ่งจะช่วยเร่งการพัฒนาผลิตภัณฑ์สำหรับการใช้งานในบ้านที่เชื่อมต่อและอาคารเชิงพาณิชย์ OpenThread มีความสามารถในการพกพาสูงเนื่องจากมีเลเยอร์การแยกแพลตฟอร์มที่แคบและใช้หน่วยความจำที่ใช้ โดยรองรับทั้งการออกแบบระบบวงจรรวมบนชิป (SoC) และการออกแบบตัวประมวลผลร่วมเครือข่าย (NCP)
ข้อกำหนดของ Thread กำหนดโปรโตคอลการสื่อสารแบบไร้สายที่เชื่อถือได้ ปลอดภัย และใช้พลังงานต่ำจากอุปกรณ์หนึ่งไปยังอีกอุปกรณ์หนึ่งซึ่งอิงตาม IPv6 สำหรับแอปพลิเคชันในบ้านและอาคารพาณิชย์
Texas Instruments ได้ติดตั้งใช้งาน OpenThread สำหรับตระกูลอุปกรณ์ SimpleLink™ CC27xx ที่เก็บ ot-ti ใน GitHub มีไดรเวอร์แพลตฟอร์มและแอปพลิเคชันตัวอย่างที่จำเป็นต่อการเรียกใช้ OpenThread ใน MCU ที่เชื่อมต่อ SimpleLink ของ Texas Instruments CC2745R10-Q1 คือ MCU ไร้สาย IEEE 802.15.4 ที่ได้รับการรับรอง Thread ระดับยานยนต์ (ผ่านการรับรอง AEC-Q100) จากตระกูล SimpleLink CC27xx ของ TI
Codelab นี้อธิบายวิธีเริ่มต้นพัฒนาแอปพลิเคชัน OpenThread ด้วยบอร์ดประเมินผล LP-EM-CC2745R10-Q1 LaunchPad และที่เก็บ ot-ti รูปภาพด้านล่างแสดงการตั้งค่าฮาร์ดแวร์ที่ใช้ใน Codelab นี้ โดยมี OT Border Router (OTBR) และอุปกรณ์ Thread แบบเต็ม 2 เครื่อง (FTD)

สิ่งที่คุณจะได้เรียนรู้
- วิธีตั้งค่าสภาพแวดล้อมของบิลด์ ot-ti ของ Texas Instruments
- วิธีสร้างและแฟลชไบนารี OpenThread CLI ไปยังบอร์ด LP-EM-CC2745R10-Q1
- วิธีตั้งค่า Raspberry Pi เป็น OpenThread Border Router (OTBR) โดยใช้ ot-br-posix
- วิธีสร้างเครือข่าย Thread ใน OTBR
- การจัดสรรอุปกรณ์นอกแบนด์ไปยังเครือข่าย Thread
- วิธียืนยันการสื่อสาร Thread ระหว่างโหนดโดยใช้คำสั่ง ping
2. ข้อกำหนดเบื้องต้น
ฮาร์ดแวร์
- บอร์ด LP-EM-CC2745R10-Q1 LaunchPad 3 บอร์ด: บอร์ดหนึ่งกำหนดค่าเป็น RCP ที่เชื่อมต่อกับ Border Router และอีก 2 บอร์ดกำหนดค่าเป็นอุปกรณ์ Thread แบบเต็ม (FTD)
CC2745R10-Q1 เป็น MCU ไร้สาย IEEE 802.15.4 ที่ได้รับการรับรอง Thread ระดับยานยนต์ (ผ่านการรับรอง AEC-Q100) ในตระกูล SimpleLink CC27xx ของ TI LP-EM-CC2745R10-Q1 คือโมดูลการประเมิน LaunchPad ที่เกี่ยวข้อง และรองรับบทบาท RCP, FTD, MTD และ NCP Thread CC2340R5 ที่มี LaunchPad LP-EM-CC2340R5 เป็นตัวเลือกที่มีหน่วยความจำน้อยกว่าซึ่งใช้เป็น RCP ได้เท่านั้น ไม่รองรับบทบาท FTD, MTD หรือ NCP หากคุณใช้ LP-EM-CC2340R5 แทนบอร์ด 1 (RCP) บอร์ด FTD ทั้ง 2 บอร์ดจะต้องเป็น LP-EM-CC2745R10-Q1 - 3 LP-XDS110ET debug probes: one per LaunchPad board, used for programming and debug over USB.
LP-XDS110ET เป็นโพรบดีบัก USB แยกต่างหากที่จำเป็นสำหรับ LaunchPad ในฟอร์มแฟกเตอร์ LP-EM ซึ่งรวมถึงการรองรับ EnergyTrace สำหรับการสร้างโปรไฟล์พลังงาน LP-XDS110 เป็นทางเลือกที่มีต้นทุนต่ำกว่าซึ่งมีความสามารถในการเขียนโปรแกรมและแก้ไขข้อบกพร่องเหมือนกัน แต่ไม่มี EnergyTrace อีกทางเลือกหนึ่งคือคุณสามารถใช้ LaunchPad ที่มีโพรบแก้ไขข้อบกพร่อง XDS110 ในตัว (เช่น LAUNCHXL-CC26X2R1) แทนบอร์ด LP-EM และโพรบแก้ไขข้อบกพร่องแยกต่างหากได้ ดูรายละเอียดได้ที่คู่มือการเชื่อมต่อการแก้ไขข้อบกพร่องของ LaunchPad - สายไมโคร USB 3 เส้นสำหรับเชื่อมต่อและจ่ายไฟให้กับบอร์ด LaunchPad และโพรบดีบัก
- Raspberry Pi 4B ขึ้นไป ที่มี Raspberry Pi OS ซึ่งเชื่อมต่ออินเทอร์เน็ตผ่านอีเทอร์เน็ต ระบบจะกำหนดค่านี้เป็นโฮสต์ OT Border Router

- ระบบโฮสต์ Linux หรือ macOS ที่มีพอร์ต USB อย่างน้อย 2 พอร์ตและมีการเข้าถึงอินเทอร์เน็ต สภาพแวดล้อมของบิลด์ต้องมีเชลล์ที่เข้ากันได้กับ Bash ผู้ใช้ Windows ควรใช้ WSL2 (Windows Subsystem for Linux 2) กับ Ubuntu
- สายอีเทอร์เน็ตอย่างน้อย 1 เส้นสำหรับเชื่อมต่อ Raspberry Pi กับอินเทอร์เน็ต หรือจะเชื่อมต่อ Raspberry Pi กับ Wi-Fi และใช้
wlan0เป็นอินเทอร์เฟซโครงสร้างพื้นฐานก็ได้ ดูรายละเอียดได้ที่ขั้นตอนการตั้งค่า OTBR
ซอฟต์แวร์
- ที่เก็บ ot-ti ของ TI: https://github.com/TexasInstruments/ot-ti
- GNU ARM Embedded Toolchain 12.2 (สคริปต์ Bootstrap จะติดตั้งโดยอัตโนมัติ)
- SysConfig 1.27.0 (ติดตั้งโดยอัตโนมัติโดยสคริปต์การเริ่มต้น)
- TI UniFlash: สำหรับการแฟลชเฟิร์มแวร์ไปยังบอร์ด LaunchPad
- ot-br-posix: https://github.com/openthread/ot-br-posix
- เทอร์มินัลแบบอนุกรม เช่น PuTTY (Windows), minicom (Linux) หรือ screen (macOS/Linux)
3. การตั้งค่าฮาร์ดแวร์
Codelab นี้ใช้บอร์ด LP-EM-CC2745R10-Q1 จำนวน 3 บอร์ด
- บอร์ด 1 (RCP): ใช้เฟิร์มแวร์
ot-rcpเชื่อมต่อกับ Raspberry Pi ผ่าน USB เป็นตัวประมวลผลร่วมวิทยุสำหรับ Border Router - บอร์ด 2 (FTD 1): เรียกใช้เฟิร์มแวร์
ot-cli-ftdเป็นอุปกรณ์ Thread แบบเต็ม - บอร์ด 3 (FTD 2): เรียกใช้เฟิร์มแวร์
ot-cli-ftdเป็นอุปกรณ์ Thread แบบเต็ม

เชื่อมต่อ LaunchPad แต่ละตัวกับคอมพิวเตอร์โฮสต์ผ่าน micro-USB การเชื่อมต่อ USB ให้ทั้งกำลังไฟและความสามารถในการดีบัก/การเขียนโปรแกรมผ่านโพรบดีบัก XDS110 ในตัว
LP-EM-CC2745R10-Q1 แต่ละตัวจะปรากฏเป็นพอร์ตอนุกรมเสมือน 2 พอร์ตเมื่อเชื่อมต่อผ่าน USB โดยพอร์ตหนึ่งใช้สำหรับอินเทอร์เฟซการแก้ไขข้อบกพร่อง XDS110 และอีกพอร์ตหนึ่งใช้สำหรับ UART ของแอปพลิเคชัน เมื่อเปิด Serial Console ให้เชื่อมต่อกับพอร์ต Application/User UART ไม่ใช่พอร์ตข้อมูลเสริม

4. การตั้งค่าที่เก็บและการบิลด์
ระบบบิลด์ ot-ti ใช้ CMake และต้องใช้ Bash Shell คำสั่งทั้งหมดในส่วนนี้จะทำงานบนโฮสต์ Linux หรือ macOS (หรือ WSL2 ใน Windows)
1. โคลนที่เก็บ
$ git clone https://github.com/TexasInstruments/ot-ti.git $ cd ot-ti $ git submodule update --init
2. เรียกใช้สคริปต์การเริ่มต้น
สคริปต์การเริ่มต้นระบบจะติดตั้งทรัพยากร Dependency ที่จำเป็น ซึ่งรวมถึงเชนเครื่องมือ GNU ARM และ SysConfig ดังนี้
$ ./script/bootstrap
สคริปต์การเริ่มต้นระบบต้องใช้ cmake, git, wget และเครื่องมือบิลด์มาตรฐาน ใน Ubuntu/Debian ให้ติดตั้งข้อกำหนดเบื้องต้นด้วยคำสั่ง sudo apt-get install -y cmake git make wget tar ninja-build
3. สร้างเฟิร์มแวร์สำหรับ 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
รูปภาพ 2 ภาพที่ใช้ใน Codelab นี้คือ
ot-rcp.out: เฟิร์มแวร์ของตัวประมวลผลร่วมวิทยุสำหรับบอร์ด Border Routerot-cli-ftd.out: เฟิร์มแวร์ CLI ของอุปกรณ์ Thread แบบเต็มสำหรับบอร์ด FTD ทั้ง 2 บอร์ด
อุปกรณ์ Thread แบบมินิมอล (ไม่บังคับ): หากต้องการลองใช้อุปกรณ์ปลายทางที่สลีปแทนอุปกรณ์ Thread แบบเต็ม คุณสามารถแฟลช ot-cli-mtd.out แทน ot-cli-ftd.out ในบอร์ด 2 และ 3 MTD ไม่กำหนดเส้นทางการรับส่งข้อมูล Thread และสามารถเข้าสู่สถานะสลีปที่ใช้พลังงานต่ำได้ จึงเหมาะสำหรับแอปพลิเคชันที่ใช้แบตเตอรี่ ขั้นตอนการสร้างเครือข่าย Thread ใน Codelab นี้จะเหมือนกันสำหรับอุปกรณ์ทั้ง 2 ประเภท
ตัวประมวลผลร่วมเครือข่าย (NCP) ที่ไม่บังคับ: ไบนารี ot-ncp-ftd.out จะใช้สถาปัตยกรรม NCP ซึ่งสแต็ก OpenThread จะทำงานบนอุปกรณ์และโปรเซสเซอร์โฮสต์จะขับเคลื่อนผ่านโปรโตคอล Spinel การใช้งาน NCP อยู่นอกเหนือขอบเขตของ Codelab นี้ โปรดดูรายละเอียดใน NCP README
5. แฟลชเฟิร์มแวร์
ใช้ TI UniFlash เพื่อแฟลชอิมเมจ ELF ไปยังบอร์ด LaunchPad
Flash โดยใช้ UniFlash
- เปิด UniFlash บอร์ด LaunchPad ที่เชื่อมต่อจะแสดงในส่วนอุปกรณ์ที่ตรวจพบเนื่องจากฟีเจอร์การตรวจหาอุปกรณ์อัตโนมัติ หากระบบไม่ตรวจพบบอร์ดโดยอัตโนมัติ ให้คลิกการกำหนดค่าใหม่ เลือกเป้าหมาย
LP-EM-CC2745R10-Q1แล้วเลือกโพรบดีบัก USB XDS110
- เลือกบอร์ด 1 (ที่จะแฟลชด้วย
ot-rcp.out) แล้วคลิกเริ่ม - คลิกปุ่มเรียกดู แล้วไปที่
ot-ti/build/bin/ot-rcp.out
- คลิกโหลดรูปภาพเพื่อแฟลชเฟิร์มแวร์ พื้นที่บันทึกจะแสดงความคืบหน้าและยืนยันว่าเสร็จสมบูรณ์แล้ว
- ทำขั้นตอนที่ 2-4 ซ้ำสำหรับบอร์ด 2 และบอร์ด 3 โดยเลือก
ot-ti/build/bin/ot-cli-ftd.outสำหรับแต่ละบอร์ด
ทางเลือก: Flash โดยใช้ Code Composer Studio (CCS)
คุณใช้ Code Composer Studio แทน UniFlash ได้ และยังมีสภาพแวดล้อมการแก้ไขข้อบกพร่องแบบเต็มให้ด้วย
- ดาวน์โหลดและติดตั้ง Code Composer Studio
- สร้างการเชื่อมต่อเป้าหมาย (CCXML) สำหรับ LP-EM-CC2745R10-Q1 ด้วยดีบักเกอร์ XDS110 โปรดดูคู่มือผู้ใช้ CCS: วิธีการด้วยตนเอง
- เริ่มเซสชันการแก้ไขข้อบกพร่องแบบไม่มีโปรเจ็กต์ตามที่อธิบายไว้ในคู่มือผู้ใช้ CCS: การเปิดใช้ด้วยตนเอง
- เชื่อมต่อกับแกน Arm Cortex-M33 แล้วคลิกโหลดเพื่อโหลดอิมเมจ ELF
การกำหนดค่า CCXML เริ่มต้นใช้ cJTAG แบบ 2 สายเพื่อให้ตรงกับการกำหนดค่าจัมเปอร์ LP-EM-CC2745R10-Q1 เริ่มต้น หลังจากตั้งโปรแกรมผ่าน JTAG แล้ว ให้เปิด/ปิดบอร์ดเพื่อล้างแฟล็กหยุดการบูต
6. ตั้งโปรแกรม HSM
CC2745R10-Q1 มีโมดูลความปลอดภัยฮาร์ดแวร์ (HSM) ที่ต้องจัดสรรก่อนที่จะเรียกใช้เฟิร์มแวร์ Thread หรือเฟิร์มแวร์แอปพลิเคชันที่ปลอดภัยอื่นๆ หากบอร์ด LP-EM-CC2745R10-Q1 ยังไม่ได้ตั้งโปรแกรม HSM ให้ทำขั้นตอนนี้ให้เสร็จสมบูรณ์
วิธีตั้งโปรแกรม HSM โดยใช้ UniFlash
- เปิด UniFlash แล้วเลือกบอร์ด LP-EM-CC2745R10-Q1 จากอุปกรณ์ที่ตรวจพบ
- ไปที่แผงการเขียนโปรแกรม HSM แล้วโหลดอิมเมจเฟิร์มแวร์ HSM ดังที่แสดงด้านล่าง

- ทำตามข้อความแจ้งบนหน้าจอเพื่อจัดสรร HSM ให้เสร็จสมบูรณ์ ระบบจะบันทึกการดำเนินการในคอนโซลเอาต์พุตของ UniFlash
ดูคู่มือเริ่มใช้งานฉบับย่อ CC2745R10-Q1 ใน TI Resource Explorer เพื่อดูขั้นตอนการเขียนโปรแกรม HSM ทั้งหมด รวมถึงเส้นทางของอิมเมจเฟิร์มแวร์ที่จำเป็นภายใน SimpleLink Low Power F3 SDK
7. สรุปเฟิร์มแวร์
ตอนนี้ควรแฟลชบอร์ดทั้ง 3 บอร์ดแล้ว
- กระดาน 1:
ot-rcp.out: ยกเลิกการเชื่อมต่อจากคอมพิวเตอร์โฮสต์และเชื่อมต่อกับ Raspberry Pi ผ่าน USB - บอร์ด 2:
ot-cli-ftd.out: เชื่อมต่อกับคอมพิวเตอร์โฮสต์อยู่เสมอ - บอร์ด 3:
ot-cli-ftd.out: เชื่อมต่อกับคอมพิวเตอร์โฮสต์อยู่เสมอ
การตั้งค่าฮาร์ดแวร์จะมีลักษณะเหมือนกับแผนภาพด้านล่าง บอร์ด 1 เชื่อมต่อกับ Raspberry Pi เป็นตัวประมวลผลร่วมวิทยุสำหรับ OTBR ส่วนบอร์ด 2 และ 3 จะยังคงเชื่อมต่อกับคอมพิวเตอร์โฮสต์เพื่อเข้าถึงคอนโซลแบบอนุกรม

8. ตั้งค่า Serial Console สำหรับอุปกรณ์ ot-cli-ftd
LP-EM-CC2745R10-Q1 จะแสดง UART ของแอปพลิเคชันผ่าน USB ที่921600 บอด
เปิดเทอร์มินัลแบบอนุกรมไปยังพอร์ต COM ของ UART ของแอปพลิเคชัน (Windows) หรืออุปกรณ์ /dev/ttyACM* (Linux/macOS) สำหรับบอร์ด FTD แต่ละบอร์ดโดยใช้การตั้งค่าต่อไปนี้
พารามิเตอร์ | ค่า |
ความเร็ว (บอด) |
|
บิตข้อมูล |
|
บิตหยุด |
|
ความเท่าเทียม |
|
การควบคุมโฟลว์ |
|
เคล็ดลับ (Linux/macOS): ระบุโหนดอุปกรณ์ที่ถูกต้องโดยเรียกใช้ ls /dev/ttyACM* ก่อนและหลังเสียบบอร์ด แล้วจดบันทึกรายการที่ปรากฏ LP-EM-CC2745R10-Q1 แต่ละตัวจะสร้าง 2 รายการ โดยพอร์ตที่มีหมายเลขต่ำกว่าคือ UART สำหรับการแก้ไขข้อบกพร่องของ XDS110 และพอร์ตที่มีหมายเลขสูงกว่าคือ UART ของแอปพลิเคชัน เช่น หากบอร์ดสร้าง /dev/ttyACM0 และ /dev/ttyACM1 ให้ใช้ /dev/ttyACM1
เคล็ดลับ (Windows): เปิดตัวจัดการอุปกรณ์และดูที่ส่วนพอร์ต (COM และ LPT) เพื่อหาพอร์ต COM ใหม่ 2 พอร์ตเมื่อเสียบบอร์ด โดยปกติแล้ว พอร์ตข้อมูลการแก้ไขข้อบกพร่อง XDS110 จะปรากฏขึ้นก่อน ให้ใช้พอร์ต COM ที่ 2 (หมายเลขสูงกว่า) สำหรับคอนโซลแอปพลิเคชัน
กด Enter ในเทอร์มินัลเพื่อรับพรอมต์ CLI ของ OpenThread (>) ดูรายการคำสั่งที่มีทั้งหมดได้ที่ข้อมูลอ้างอิง CLI ของ OpenThread ตรวจสอบว่า FTD ทำงานอยู่
> state disabled Done

คุณจะยังไม่ได้ตั้งค่าคอนโซลแบบอนุกรมสำหรับบอร์ด RCP OTBR ใน Raspberry Pi จะสื่อสารกับ RCP โดยตรง ในขั้นตอนถัดไป คุณจะกำหนดค่า Raspberry Pi เป็น OpenThread Border Router
9. ตั้งค่า Raspberry Pi เป็นเราเตอร์ชายแดน
OTBR สร้างขึ้นจาก ot-br-posix ซึ่งเป็นโปรเจ็กต์ OpenThread Border Router แบบโอเพนซอร์ส Border Router ทำงานบน Raspberry Pi และใช้บอร์ด 1 (RCP) เป็นวิทยุ 802.15.4 ผ่าน USB
การตั้งค่า Raspberry Pi
- แฟลช Raspberry Pi OS (64 บิต Lite หรือ Desktop) ลงในการ์ด SD โดยใช้ Raspberry Pi Imager
- บูต Raspberry Pi และเปิดเทอร์มินัล (ผ่าน SSH หรือโดยตรง)
- อัปเดตตัวจัดการแพ็กเกจและอัปเกรดแพ็กเกจที่ติดตั้งแล้ว
$ sudo apt-get update $ sudo apt-get upgrade -y
รีบูต Raspberry Pi หลังจากอัปเดตก่อนดำเนินการต่อ: sudo reboot
เชื่อมต่อบอร์ด 1 (RCP) กับ Raspberry Pi
เชื่อมต่อ Board 1 (แฟลชด้วย ot-rcp) กับ Raspberry Pi ผ่านไมโคร USB หลังจากเชื่อมต่อแล้ว ให้ตรวจสอบว่าโหนดอุปกรณ์ปรากฏขึ้น
$ ls /dev/ttyACM* /dev/ttyACM0 /dev/ttyACM1
โดยปกติแล้ว UART ของแอปพลิเคชันของบอร์ด RCP จะเป็น /dev/ttyACM1 (UART สำหรับการแก้ไขข้อบกพร่อง XDS110 คือ /dev/ttyACM0) ตรวจสอบว่าพอร์ตใดคือ UART ของแอปพลิเคชันโดยตรวจสอบว่าพอร์ตนั้นตอบสนองเมื่อเริ่มตัวแทน OTBR ในขั้นตอนต่อๆ ไป หากเชื่อมต่ออุปกรณ์แบบอนุกรม USB อื่น หมายเลขโหนดของอุปกรณ์อาจแตกต่างกัน ปรับเส้นทางในการกำหนดค่า OTBR ตามนั้น
สร้างและติดตั้ง ot-br-posix
ใน Raspberry Pi ให้โคลนและสร้าง 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 รวมถึงกำหนดค่าสแต็กเครือข่าย โดยปกติแล้วกระบวนการนี้จะใช้เวลา 10-20 นาทีใน Raspberry Pi 4B
กำหนดค่า OTBR Agent
แก้ไขไฟล์การกำหนดค่าของตัวแทน OTBR เพื่อระบุเส้นทางอุปกรณ์ RCP และอัตราบอด
$ sudo nano /etc/default/otbr-agent
ค้นหาบรรทัด OTBR_AGENT_OPTS แล้วอัปเดตให้อ้างอิงถึง RCP Application UART ดังนี้
OTBR_AGENT_OPTS="-I wpan0 -B eth0 spinel+hdlc+uart:///dev/ttyACM1?uart-baudrate=921600"
แทนที่ eth0 ด้วย wlan0 หาก Raspberry Pi เชื่อมต่อผ่าน Wi-Fi
OTBR_AGENT_OPTS="-I wpan0 -B wlan0 spinel+hdlc+uart:///dev/ttyACM1?uart-baudrate=921600"
UART ของแอปพลิเคชัน RCP ของ LP-EM-CC2745R10-Q1 ทำงานที่ 921600 บอด ตรวจสอบว่าเส้นทางของอุปกรณ์ (/dev/ttyACM1 ในตัวอย่างนี้) ตรงกับ UART ของแอปพลิเคชันของบอร์ด RCP
รีสตาร์ทตัวแทน OTBR เพื่อใช้การกำหนดค่า
$ sudo systemctl restart otbr-agent $ sudo systemctl enable otbr-agent
ตรวจสอบว่า Agent ทำงานอยู่โดยทำดังนี้
$ sudo systemctl status otbr-agent
โต้ตอบกับโหนด RCP
สื่อสารกับโหนด RCP โดยใช้เครื่องมือ ot-ctl ดังนี้
$ sudo ot-ctl state disabled Done
คุณตรวจสอบบันทึกของตัวแทน OTBR เพื่อดูข้อความการเชื่อมต่อและสถานะได้โดยทำดังนี้
$ sudo journalctl -u otbr-agent -f
นอกจากนี้ คุณยังใช้เว็บอินเทอร์เฟซของ OTBR ได้ที่ http:// ซึ่งจะแสดงมุมมองแบบกราฟิกของเครือข่าย Thread
วิธีหยุดหรือรีสตาร์ทเอเจนต์ OTBR
$ sudo systemctl stop otbr-agent $ sudo systemctl start otbr-agent
ตอนนี้คุณควรมีคอนโซลที่ใช้งานอยู่ 3 เครื่อง ได้แก่
- เทอร์มินัลแบบอนุกรมสำหรับ Board 2 (
ot-cli-ftd 1) ในคอมพิวเตอร์โฮสต์ - เทอร์มินัลแบบอนุกรมสำหรับ Board 3 (
ot-cli-ftd 2) ในคอมพิวเตอร์โฮสต์ - เซสชัน SSH หรือเทอร์มินัลใน Raspberry Pi สำหรับ
ot-ctl(OTBR/RCP)
ตอนนี้คุณก็พร้อมสร้างเครือข่าย Thread แล้ว
10. สร้างเครือข่าย Thread
ตั้งค่า RCP (OTBR)
สร้างเครือข่าย Thread ใหม่จากเชลล์ ot-ctl ใน Raspberry Pi ป้อนคำสั่งต่อไปนี้ตามลำดับ
ดัชนี | คำสั่ง | คำอธิบาย | การตอบกลับที่คาดหวัง | ||
1 |
| สร้างการกำหนดค่าเครือข่ายใหม่ | เสร็จสิ้น | ||
2 |
| คอมมิตชุดข้อมูลใหม่ไปยังชุดข้อมูลการปฏิบัติงานที่ใช้งานอยู่ | เสร็จสิ้น | ||
3 |
| เปิดใช้อินเทอร์เฟซ Thread | เสร็จสิ้น | ||
4 |
| เปิดใช้และแนบการดำเนินการโปรโตคอล Thread | เสร็จสิ้น | ||
รอ 10 วินาทีเพื่อให้ Thread Interface ปรากฏขึ้น | |||||
5 |
| ตรวจสอบสถานะอุปกรณ์ ควรเป็น leader สถานะอื่นๆ ที่เป็นไปได้ ได้แก่ ออฟไลน์ ปิดใช้ ยกเลิกการเชื่อมต่อ ย่อย เราเตอร์ หรือผู้นำ | ผู้นำ | ||
6 |
| ดูการกำหนดค่าเครือข่าย ค่าของคุณจะแตกต่างกัน จดบันทึกช่อง คีย์เครือข่าย ชื่อเครือข่าย และ PAN ID ซึ่งจำเป็นต่อการเข้าร่วม FTD ในเครือข่าย | การประทับเวลาที่ใช้งาน: 1 | ||
เพิ่ม FTD ลงในเครือข่าย Thread (วิธีนอกแบนด์)
เมื่อใช้วิธีการจัดสรรนอกแบนด์ คุณจะให้ข้อมูลเข้าสู่ระบบเครือข่ายโดยตรง ในเทอร์มินัลแบบอนุกรมสำหรับบอร์ด FTD แต่ละบอร์ด ให้ป้อนคำสั่งต่อไปนี้โดยใช้คีย์ช่องและคีย์เครือข่ายจากเอาต์พุตชุดข้อมูล OTBR ด้านบน
ดัชนี | คำสั่ง | คำอธิบาย | การตอบกลับที่คาดหวัง | ||
1 |
| ตั้งค่าช่องให้ตรงกับ OTBR แทนที่ | เสร็จสิ้น | ||
2 |
| ตั้งค่าคีย์เครือข่าย แทนที่ด้วยคีย์เครือข่ายของ OTBR คุณต้องใช้คีย์นี้เท่านั้นในการแนบ | เสร็จสิ้น | ||
3 |
| คอมมิตชุดข้อมูลใหม่ไปยังชุดข้อมูลการปฏิบัติงานที่ใช้งานอยู่ | เสร็จสิ้น | ||
4 |
| เปิดใช้อินเทอร์เฟซ Thread | เสร็จสิ้น | ||
5 |
| เปิดใช้และแนบการดำเนินการโปรโตคอล Thread | เสร็จสิ้น | ||
รอ 20 วินาทีขณะที่อุปกรณ์เข้าร่วมและกำหนดค่าตัวเอง | |||||
6 |
| ตรวจสอบสถานะอุปกรณ์ | เด็ก | ||
เนื่องจากเครือข่าย Thread มีการกำหนดค่าด้วยตนเองและอุปกรณ์เหล่านี้เป็นอุปกรณ์ Thread แบบเต็ม FTD อย่างใดอย่างหนึ่งหรือทั้ง 2 อย่างอาจกลายเป็นเราเตอร์ในที่สุด คุณตรวจสอบบทบาทปัจจุบันได้ทุกเมื่อด้วยคำสั่ง 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 ทั้ง 2 เครื่อง ให้ Ping 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 )
11. ขอแสดงความยินดี
คุณสร้างเครือข่าย Thread ด้วยบอร์ด TI CC2745R10-Q1 แล้ว
ตอนนี้คุณก็รู้แล้วว่า
- วิธีตั้งค่าสภาพแวดล้อมของบิลด์ ot-ti ของ Texas Instruments
- วิธีสร้างและแฟลชไบนารี OpenThread CLI ไปยัง LP-EM-CC2745R10-Q1 LaunchPad
- วิธีตั้งค่า Raspberry Pi เป็น OpenThread Border Router (OTBR) โดยใช้ ot-br-posix
- วิธีสร้างเครือข่าย Thread ใน OTBR
- การจัดสรรอุปกรณ์นอกแบนด์ไปยังเครือข่าย Thread
- วิธียืนยันการสื่อสาร Thread ระหว่างโหนดโดยใช้คำสั่ง ping
อ่านเพิ่มเติม
ดูแหล่งข้อมูล OpenThread ที่หลากหลายได้ที่ openthread.io และ GitHub ซึ่งรวมถึง
- แพลตฟอร์มที่รองรับ - ดูแพลตฟอร์มทั้งหมดที่รองรับ OpenThread
- สร้าง OpenThread - รายละเอียดเพิ่มเติมเกี่ยวกับการสร้างและกำหนดค่า OpenThread
- ข้อมูลเบื้องต้นเกี่ยวกับ Thread - ครอบคลุมแนวคิด Thread ทั้งหมดที่แสดงใน Codelab นี้
- ที่เก็บ TI ot-ti - การใช้งาน OpenThread ของ TI สำหรับอุปกรณ์ SimpleLink พร้อมวิธีการสร้างและหมายเหตุประจำรุ่น
- หน้าผลิตภัณฑ์ CC2745R10-Q1 - เอกสารข้อมูลอุปกรณ์ การออกแบบอ้างอิง และเอกสารอื่นๆ
- LP-EM-CC2745R10-Q1 LaunchPad - คู่มือผู้ใช้บอร์ดประเมินและไฟล์ฮาร์ดแวร์
- ข้อมูลอ้างอิง CLI ของ OpenThread - ภาพรวมของ CLI ของ OpenThread และการใช้งาน
- คำสั่ง OpenThread CLI - แหล่งอ้างอิงที่สมบูรณ์สำหรับคำสั่ง OpenThread CLI ทั้งหมด
- ชุมชน TI E2E — Thread & Zigbee — ชุมชนสนับสนุนด้านเทคนิคสำหรับผลิตภัณฑ์การเชื่อมต่อแบบไร้สายของ Texas Instruments