สร้างเครือข่าย Thread ด้วย SimpleLink F3 ของ Texas Instruments และ OpenThread

1. บทนำ

โลโก้ OpenThread

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)

การตั้งค่าฮาร์ดแวร์ CC2745R10

สิ่งที่คุณจะได้เรียนรู้

  • วิธีตั้งค่าสภาพแวดล้อมของบิลด์ 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. ข้อกำหนดเบื้องต้น

ฮาร์ดแวร์

  1. บอร์ด LP-EM-CC2745R10-Q1 LaunchPad 3 บอร์ด: บอร์ดหนึ่งกำหนดค่าเป็น RCP ที่เชื่อมต่อกับ Border Router และอีก 2 บอร์ดกำหนดค่าเป็นอุปกรณ์ Thread แบบเต็ม (FTD) LP-EM-CC2745R10-Q1 มุมมองเอียง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
  2. 3 LP-XDS110ET debug probes: one per LaunchPad board, used for programming and debug over USB. LP-XDS110ET มุมมองเอียงLP-XDS110ET เป็นโพรบดีบัก USB แยกต่างหากที่จำเป็นสำหรับ LaunchPad ในฟอร์มแฟกเตอร์ LP-EM ซึ่งรวมถึงการรองรับ EnergyTrace สำหรับการสร้างโปรไฟล์พลังงาน LP-XDS110 เป็นทางเลือกที่มีต้นทุนต่ำกว่าซึ่งมีความสามารถในการเขียนโปรแกรมและแก้ไขข้อบกพร่องเหมือนกัน แต่ไม่มี EnergyTrace อีกทางเลือกหนึ่งคือคุณสามารถใช้ LaunchPad ที่มีโพรบแก้ไขข้อบกพร่อง XDS110 ในตัว (เช่น LAUNCHXL-CC26X2R1) แทนบอร์ด LP-EM และโพรบแก้ไขข้อบกพร่องแยกต่างหากได้ ดูรายละเอียดได้ที่คู่มือการเชื่อมต่อการแก้ไขข้อบกพร่องของ LaunchPad
  3. สายไมโคร USB 3 เส้นสำหรับเชื่อมต่อและจ่ายไฟให้กับบอร์ด LaunchPad และโพรบดีบัก
  4. Raspberry Pi 4B ขึ้นไป ที่มี Raspberry Pi OS ซึ่งเชื่อมต่ออินเทอร์เน็ตผ่านอีเทอร์เน็ต ระบบจะกำหนดค่านี้เป็นโฮสต์ OT Border RouterRaspberry Pi 4
  5. ระบบโฮสต์ Linux หรือ macOS ที่มีพอร์ต USB อย่างน้อย 2 พอร์ตและมีการเข้าถึงอินเทอร์เน็ต สภาพแวดล้อมของบิลด์ต้องมีเชลล์ที่เข้ากันได้กับ Bash ผู้ใช้ Windows ควรใช้ WSL2 (Windows Subsystem for Linux 2) กับ Ubuntu
  6. สายอีเทอร์เน็ตอย่างน้อย 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

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 แบบเต็ม

LP-EM-CC2745R10-Q1 มุมมองด้านบน

เชื่อมต่อ 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 Router
  • ot-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

  1. เปิด UniFlash บอร์ด LaunchPad ที่เชื่อมต่อจะแสดงในส่วนอุปกรณ์ที่ตรวจพบเนื่องจากฟีเจอร์การตรวจหาอุปกรณ์อัตโนมัติ หากระบบไม่ตรวจพบบอร์ดโดยอัตโนมัติ ให้คลิกการกำหนดค่าใหม่ เลือกเป้าหมาย LP-EM-CC2745R10-Q1 แล้วเลือกโพรบดีบัก USB XDS110อุปกรณ์ที่ UniFlash ตรวจพบ
  2. เลือกบอร์ด 1 (ที่จะแฟลชด้วย ot-rcp.out) แล้วคลิกเริ่ม
  3. คลิกปุ่มเรียกดู แล้วไปที่ ot-ti/build/bin/ot-rcp.outหน้าแฟลช UniFlash
  4. คลิกโหลดรูปภาพเพื่อแฟลชเฟิร์มแวร์ พื้นที่บันทึกจะแสดงความคืบหน้าและยืนยันว่าเสร็จสมบูรณ์แล้ว
  5. ทำขั้นตอนที่ 2-4 ซ้ำสำหรับบอร์ด 2 และบอร์ด 3 โดยเลือก ot-ti/build/bin/ot-cli-ftd.out สำหรับแต่ละบอร์ด

ทางเลือก: Flash โดยใช้ Code Composer Studio (CCS)

คุณใช้ Code Composer Studio แทน UniFlash ได้ และยังมีสภาพแวดล้อมการแก้ไขข้อบกพร่องแบบเต็มให้ด้วย

  1. ดาวน์โหลดและติดตั้ง Code Composer Studio
  2. สร้างการเชื่อมต่อเป้าหมาย (CCXML) สำหรับ LP-EM-CC2745R10-Q1 ด้วยดีบักเกอร์ XDS110 โปรดดูคู่มือผู้ใช้ CCS: วิธีการด้วยตนเอง
  3. เริ่มเซสชันการแก้ไขข้อบกพร่องแบบไม่มีโปรเจ็กต์ตามที่อธิบายไว้ในคู่มือผู้ใช้ CCS: การเปิดใช้ด้วยตนเอง
  4. เชื่อมต่อกับแกน 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

  1. เปิด UniFlash แล้วเลือกบอร์ด LP-EM-CC2745R10-Q1 จากอุปกรณ์ที่ตรวจพบ
  2. ไปที่แผงการเขียนโปรแกรม HSM แล้วโหลดอิมเมจเฟิร์มแวร์ HSM ดังที่แสดงด้านล่าง

การเขียนโปรแกรม HSM ของ UniFlash

  1. ทำตามข้อความแจ้งบนหน้าจอเพื่อจัดสรร 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 จะยังคงเชื่อมต่อกับคอมพิวเตอร์โฮสต์เพื่อเข้าถึงคอนโซลแบบอนุกรม

การตั้งค่าฮาร์ดแวร์ CC2745R10 ด้วย FTD

8. ตั้งค่า Serial Console สำหรับอุปกรณ์ ot-cli-ftd

LP-EM-CC2745R10-Q1 จะแสดง UART ของแอปพลิเคชันผ่าน USB ที่921600 บอด

เปิดเทอร์มินัลแบบอนุกรมไปยังพอร์ต COM ของ UART ของแอปพลิเคชัน (Windows) หรืออุปกรณ์ /dev/ttyACM* (Linux/macOS) สำหรับบอร์ด FTD แต่ละบอร์ดโดยใช้การตั้งค่าต่อไปนี้

พารามิเตอร์

ค่า

ความเร็ว (บอด)

921600

บิตข้อมูล

8

บิตหยุด

1

ความเท่าเทียม

None

การควบคุมโฟลว์

None

เคล็ดลับ (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

FTD ของเทอร์มินัลแบบอนุกรม

คุณจะยังไม่ได้ตั้งค่าคอนโซลแบบอนุกรมสำหรับบอร์ด 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

  1. แฟลช Raspberry Pi OS (64 บิต Lite หรือ Desktop) ลงในการ์ด SD โดยใช้ Raspberry Pi Imager
  2. บูต Raspberry Pi และเปิดเทอร์มินัล (ผ่าน SSH หรือโดยตรง)
  3. อัปเดตตัวจัดการแพ็กเกจและอัปเกรดแพ็กเกจที่ติดตั้งแล้ว
    $ 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://:80 ซึ่งจะแสดงมุมมองแบบกราฟิกของเครือข่าย Thread

วิธีหยุดหรือรีสตาร์ทเอเจนต์ OTBR

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

ตอนนี้คุณควรมีคอนโซลที่ใช้งานอยู่ 3 เครื่อง ได้แก่

  1. เทอร์มินัลแบบอนุกรมสำหรับ Board 2 (ot-cli-ftd 1) ในคอมพิวเตอร์โฮสต์
  2. เทอร์มินัลแบบอนุกรมสำหรับ Board 3 (ot-cli-ftd 2) ในคอมพิวเตอร์โฮสต์
  3. เซสชัน SSH หรือเทอร์มินัลใน Raspberry Pi สำหรับ ot-ctl (OTBR/RCP)

ตอนนี้คุณก็พร้อมสร้างเครือข่าย Thread แล้ว

10. สร้างเครือข่าย Thread

ตั้งค่า RCP (OTBR)

สร้างเครือข่าย Thread ใหม่จากเชลล์ ot-ctl ใน Raspberry Pi ป้อนคำสั่งต่อไปนี้ตามลำดับ

ดัชนี

คำสั่ง

คำอธิบาย

การตอบกลับที่คาดหวัง

1

dataset init new

สร้างการกำหนดค่าเครือข่ายใหม่

เสร็จสิ้น

2

dataset commit active

คอมมิตชุดข้อมูลใหม่ไปยังชุดข้อมูลการปฏิบัติงานที่ใช้งานอยู่

เสร็จสิ้น

3

ifconfig up

เปิดใช้อินเทอร์เฟซ Thread

เสร็จสิ้น

4

thread start

เปิดใช้และแนบการดำเนินการโปรโตคอล Thread

เสร็จสิ้น

รอ 10 วินาทีเพื่อให้ Thread Interface ปรากฏขึ้น

5

state

ตรวจสอบสถานะอุปกรณ์ ควรเป็น leader สถานะอื่นๆ ที่เป็นไปได้ ได้แก่ ออฟไลน์ ปิดใช้ ยกเลิกการเชื่อมต่อ ย่อย เราเตอร์ หรือผู้นำ

ผู้นำ
เสร็จสิ้น

6

dataset

ดูการกำหนดค่าเครือข่าย ค่าของคุณจะแตกต่างกัน จดบันทึกช่อง คีย์เครือข่าย ชื่อเครือข่าย และ PAN ID ซึ่งจำเป็นต่อการเข้าร่วม FTD ในเครือข่าย

การประทับเวลาที่ใช้งาน: 1
แชแนล: 20
มาสก์แชแนล: 0x07fff800
Ext PAN ID: 39ba71f7fc367160
Mesh Local Prefix: fd5c:c6b:3a17:40b9::/64
คีย์เครือข่าย: 81ae2c2c17368d585dee71eaa8cf1e90
ชื่อเครือข่าย: OpenThread-008c
PAN ID: 0x008c
PSKc: c98f0193d4236025d22dd0ee614e641f
นโยบายความปลอดภัย: 0, onrcb
เสร็จสิ้น

เพิ่ม FTD ลงในเครือข่าย Thread (วิธีนอกแบนด์)

เมื่อใช้วิธีการจัดสรรนอกแบนด์ คุณจะให้ข้อมูลเข้าสู่ระบบเครือข่ายโดยตรง ในเทอร์มินัลแบบอนุกรมสำหรับบอร์ด FTD แต่ละบอร์ด ให้ป้อนคำสั่งต่อไปนี้โดยใช้คีย์ช่องและคีย์เครือข่ายจากเอาต์พุตชุดข้อมูล OTBR ด้านบน

ดัชนี

คำสั่ง

คำอธิบาย

การตอบกลับที่คาดหวัง

1

dataset channel 20

ตั้งค่าช่องให้ตรงกับ OTBR แทนที่ 20 ด้วยมูลค่าช่องทางของ OTBR

เสร็จสิ้น

2

dataset networkkey 81ae2c2c17368d585dee71eaa8cf1e90

ตั้งค่าคีย์เครือข่าย แทนที่ด้วยคีย์เครือข่ายของ OTBR คุณต้องใช้คีย์นี้เท่านั้นในการแนบ

เสร็จสิ้น

3

dataset commit active

คอมมิตชุดข้อมูลใหม่ไปยังชุดข้อมูลการปฏิบัติงานที่ใช้งานอยู่

เสร็จสิ้น

4

ifconfig up

เปิดใช้อินเทอร์เฟซ Thread

เสร็จสิ้น

5

thread start

เปิดใช้และแนบการดำเนินการโปรโตคอล Thread

เสร็จสิ้น

รอ 20 วินาทีขณะที่อุปกรณ์เข้าร่วมและกำหนดค่าตัวเอง

6

state

ตรวจสอบสถานะอุปกรณ์

เด็ก
เสร็จสิ้น

เนื่องจากเครือข่าย 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 ซึ่งรวมถึง