1. บทนำ

OpenThread (OT) ของ Google คือการใช้งาน Thread แบบโอเพนซอร์ส Google ได้เปิดตัว OpenThread เพื่อให้เทคโนโลยีเครือข่ายที่ใช้ในผลิตภัณฑ์ Google Nest พร้อมให้บริการแก่นักพัฒนาซอฟต์แวร์ในวงกว้างมากขึ้น เพื่อเร่งการพัฒนาผลิตภัณฑ์สำหรับบ้านอัจฉริยะและอาคารพาณิชย์ OpenThread มีความสามารถในการพกพาสูงเนื่องจากมีเลเยอร์การแยกแพลตฟอร์มที่แคบและใช้หน่วยความจำน้อย โดยรองรับทั้งการออกแบบระบบวงจรรวมบนชิป (SoC) และการออกแบบตัวประมวลผลร่วมเครือข่าย (NCP)
ข้อกำหนด Thread กำหนดโปรโตคอลการสื่อสารแบบไร้สายที่เชื่อถือได้ ปลอดภัย และใช้พลังงานต่ำจากอุปกรณ์หนึ่งไปยังอีกอุปกรณ์หนึ่งซึ่งอิงตาม IPv6 สำหรับแอปพลิเคชันในบ้านและอาคารพาณิชย์
Silicon Labs ได้ปรับปรุง OpenThread ให้ทำงานร่วมกับฮาร์ดแวร์ของ Silicon Labs ซอร์สโค้ดนี้พร้อมให้บริการบน GitHub และยังเป็นชุดพัฒนาซอฟต์แวร์ (SDK) ที่ติดตั้งพร้อมกับ Simplicity Studio 5 (SSv5) ด้วย SDK มีสแนปชอตของซอร์สโค้ด GitHub ที่ผ่านการทดสอบอย่างเต็มรูปแบบ โดยรองรับฮาร์ดแวร์ที่หลากหลายกว่าเวอร์ชัน GitHub และมีเอกสารประกอบและแอปพลิเคชันตัวอย่างที่ไม่มีใน GitHub
คู่มือนี้อธิบายวิธีเริ่มต้นพัฒนาแอปพลิเคชัน OpenThread โดยใช้ Silicon Labs OpenThread SDK และ Simplicity Studio 5 รูปภาพด้านล่างแสดงบอร์ด (BRD) และการตั้งค่าฮาร์ดแวร์ที่มี OT Border Router (OTBR) และอุปกรณ์ Thread 2 เครื่องที่ใช้ใน Codelab

สิ่งที่คุณจะได้เรียนรู้
- วิธีสร้างโปรเจ็กต์ OpenThread โดยใช้ IDE ของ Silicon Labs Simplicity Studio
- วิธีสร้างและแฟลชไบนารี OpenThread CLI ไปยังบอร์ดวิทยุของ Silicon Labs
- วิธีตั้งค่า Raspberry Pi 3B ขึ้นไปเป็น OpenThread Border Router (OTBR) โดยใช้ Docker
- วิธีสร้างเครือข่าย Thread ใน OTBR
- การจัดสรรอุปกรณ์นอกแบนด์ไปยังเครือข่าย Thread
- วิธียืนยันการสื่อสาร Thread ระหว่างโหนดโดยใช้คำสั่ง ping
2. ข้อกำหนดเบื้องต้น
ฮาร์ดแวร์
- บอร์ดวิทยุ EFR32MGxx 3 บอร์ด - สามารถใช้อุปกรณ์เหล่านี้ร่วมกันได้ Codelab นี้ใช้ BRD4166A เป็น RCP และ BRD4168A 2 ตัวเป็นอุปกรณ์ Thread แบบเต็ม
- EFR32MG12 (BRD4161A, BRD4166A, BRD4170A, BRD4304A)
- EFR32MG13 (BRD4168A)
- EFR32MG21 (BRD4180A, BRD4180B)
- BRD4001A: เมนบอร์ดเริ่มต้นแบบไร้สาย (WSTK) เพื่อโฮสต์บอร์ดวิทยุ บอร์ดวิทยุทุกบอร์ดต้องมีเมนบอร์ดเริ่มต้น ยกเว้น BRD4166A สาย Mini USB สำหรับเชื่อมต่อและจ่ายไฟให้กับบอร์ดหลัก หรือสาย Micro USB สำหรับ BRD4166A

- Raspberry Pi 3B+ ขึ้นไปที่ใช้อิมเมจ Raspbian Stretch Lite OS หรือ Raspbian Stretch with Desktop ซึ่งเชื่อมต่ออินเทอร์เน็ตผ่านอีเทอร์เน็ต เรากำหนดค่าอุปกรณ์นี้เป็นเราเตอร์ชายแดน OT
- ระบบโฮสต์ Windows/Linux/Mac ที่มีพอร์ต USB อย่างน้อย 2 พอร์ตและการเชื่อมต่ออินเทอร์เน็ต ตรวจสอบข้อกำหนดของฮาร์ดแวร์และระบบปฏิบัติการได้ที่ SSv5
- สายอีเทอร์เน็ตอย่างน้อย 1 เส้นสำหรับเชื่อมต่อ Raspberry Pi กับอินเทอร์เน็ต นอกจากนี้ WSTK ยังรองรับการแก้ไขข้อบกพร่องและการแฟลชผ่าน IP ด้วย ดังนั้นคุณจึงใช้สายอีเทอร์เน็ตเพิ่มเติมเพื่อเชื่อมต่อ WSTK กับระบบโฮสต์ผ่านสวิตช์อีเทอร์เน็ตได้ (ไม่บังคับ)
ซอฟต์แวร์:
- Simplicity Studio v5 ติดตั้งและอัปเดตในระบบโฮสต์ Windows/Linux/Mac ด้วย
- GNU ARM Toolchain
- Gecko SDK Suite 3.2.0 ขึ้นไปและ Silicon Labs OpenThread SDK
3. การตั้งค่าฮาร์ดแวร์
Codelab นี้สร้างขึ้นโดยใช้
- EFR32MG12 BRD4166A Thunderboard Sense 2 ดังที่แสดงทางด้านซ้าย
- EFR32MG13 BRD4168A 2 ตัวดังที่แสดงทางด้านขวา
- Simplicity Studio v5 ติดตั้งใน macOS Catalina 10.15.7 ด้วย
- Gecko SDK 3.2.0
- GNU ARM v7.2.1


เชื่อมต่อเมนบอร์ดของ Wireless Starter Kit แต่ละตัวกับคอมพิวเตอร์โฮสต์ด้วย USB ตามที่แสดงในรูปภาพด้านล่าง การเชื่อมต่อเหล่านี้จะอนุญาตการวิเคราะห์การเขียนโปรแกรมและเครือข่ายของ RCP และอุปกรณ์ปลายทาง ก่อนอื่นเราจะใช้คอมพิวเตอร์โฮสต์เพื่อตั้งโปรแกรม BRD4166A ด้วยเฟิร์มแวร์ ot-rcp และเชื่อมต่อกับ Raspberry Pi ในที่สุด หรือจะเชื่อมต่ออุปกรณ์ปลายทางกับคอมพิวเตอร์โฮสต์ผ่านสวิตช์อีเทอร์เน็ตทั่วไปก็ได้ นอกจากนี้ ชุดอุปกรณ์เริ่มต้นยังรองรับการเขียนโปรแกรมและการวิเคราะห์เครือข่ายผ่าน IPv4 ด้วย

4. การตั้งค่าเฟิร์มแวร์
คุณเริ่มใช้งานได้ 2 วิธีดังนี้ ทั้ง 2 ตัวเลือกช่วยให้คุณแฟลชเฟิร์มแวร์ที่จำเป็นสำหรับ Codelab นี้ได้
- โปรเจ็กต์: (แนะนํา) สร้าง สร้าง และแฟลชแอปพลิเคชันตัวอย่าง ตัวเลือกนี้ช่วยให้คุณปรับแต่งแอปพลิเคชันในโปรเจ็กต์ได้ หรือ
- การสาธิต: (ไม่บังคับ) แฟลชการสาธิตที่สร้างไว้ล่วงหน้าบนบอร์ดวิทยุโดยตรงสำหรับแอปพลิเคชันตัวอย่าง เราขอแนะนำให้ผู้ใช้ลองตั้งค่าเฟิร์มแวร์ของเดโมเป็นแบบฝึกหัดเพิ่มเติม โปรดดูรายละเอียดในส่วน "การตั้งค่าเฟิร์มแวร์ที่ไม่บังคับ - การสาธิต" ที่ตอนท้ายของ Codelab นี้
เราจะใช้วิธีการตามโปรเจ็กต์สำหรับ Codelab นี้
สร้างโปรเจ็กต์โดยใช้ตัวอย่าง
เราจะสร้าง 2 โปรเจ็กต์ โปรเจ็กต์ ot-rcp สำหรับ BRD4166A และโปรเจ็กต์ ot-cli-ftd สำหรับ BRD4168A 2 ตัว โปรดทำตามขั้นตอนเหล่านี้และเลือกแอปพลิเคชันตัวอย่างที่เหมาะสมสำหรับบอร์ดของคุณ
- เปิดเมนูไฟล์ของ Studio แล้วเลือกใหม่ > วิซาร์ดโปรเจ็กต์ Silicon Labs กล่องโต้ตอบการเลือกเป้าหมาย, SDK และ Toolchain จะเปิดขึ้น อย่าเปลี่ยน Simplicity IDE / GNU Toolchain เริ่มต้นที่ OpenThread รองรับ คลิกถัดไป
- บอร์ดเป้าหมาย: แสดงบอร์ดวิทยุที่เลือก (BRD4168A) พร้อมกับบอร์ดหลัก (BRD4001A)
- อุปกรณ์เป้าหมาย: ช่องนี้แสดงชิปไมโครคอนโทรลเลอร์ (MCU) ที่ติดตั้งไว้ BRD4168A มี MCU EFR32MG13 ออนบอร์ด
- SDK: คุณเลือกเวอร์ชัน SDK ของ OT ที่กำลังใช้งานได้ที่นี่ ข้อมูลชุดทดสอบประกอบด้วยแท็ก SDK และบิลด์ OpenThread ของ Silicon Labs เช่น
Platform 4.0.1.0และOpenThread 2.0.1.0 (GitHub-55af6ce2c) - IDE/ Toolchain: Toolchain ที่จะใช้ในการคอมไพล์โปรเจ็กต์ OT เราใช้ GNU ARM

- กล่องโต้ตอบการเลือกโปรเจ็กต์ตัวอย่างจะเปิดขึ้น คุณจะเห็นรายการโปรเจ็กต์ตัวอย่าง ใช้ตัวกรองประเภทเทคโนโลยีและคีย์เวิร์ดของ Thread เพื่อค้นหาตัวอย่างที่เฉพาะเจาะจง อย่าลืมจดหมายเลขเวอร์ชันของ Gecko SDK Suite คุณจะต้องใช้แท็กเวอร์ชันนี้เมื่อตั้งค่า Raspberry Pi เป็น Border Router เลือก ot-cli-ftd แล้วคลิกถัดไป

- กล่องโต้ตอบการกำหนดค่าโปรเจ็กต์จะเปิดขึ้น ในส่วนนี้ คุณสามารถเปลี่ยนชื่อโปรเจ็กต์ เปลี่ยนตำแหน่งไฟล์โปรเจ็กต์เริ่มต้น และกำหนดว่าจะลิงก์หรือคัดลอกไฟล์โปรเจ็กต์ ไฟล์โปรเจ็กต์ที่ลิงก์จะชี้ไปยัง SDK และการแก้ไขใดๆ ที่คุณทำจะอยู่ใน SDK และใช้สำหรับโปรเจ็กต์ในอนาคต การคัดลอกแหล่งที่มาของโปรเจ็กต์จะช่วยให้คุณแก้ไขสำเนาในเครื่องของโปรเจ็กต์ได้เพื่อให้ไฟล์ SDK ยังคงอยู่ "ลิงก์ SDK และคัดลอกแหล่งที่มาของโปรเจ็กต์" เป็นตัวเลือกเริ่มต้นและเป็นตัวเลือกที่แนะนํา คลิกเสร็จสิ้น

- มุมมอง IDE ของ Simplicity จะเปิดขึ้นพร้อมกับ Project Configurator ที่เปิดแท็บภาพรวม

โปรเจ็กต์ได้รับการกำหนดค่าจากแท็บคอมโพเนนต์ซอฟต์แวร์โดยการติดตั้งและถอนการติดตั้งคอมโพเนนต์ รวมถึงการกำหนดค่าคอมโพเนนต์ที่ติดตั้ง ระบบจะตรวจสอบคอมโพเนนต์ที่ติดตั้ง คลิกคอมโพเนนต์ที่ติดตั้งเพื่อดูรายการคอมโพเนนต์ที่กรองแล้วซึ่งแอปพลิเคชันตัวอย่างติดตั้ง ระบบจะบันทึกการเปลี่ยนแปลงที่คุณทำโดยอัตโนมัติ และสร้างไฟล์โปรเจ็กต์โดยอัตโนมัติ ความคืบหน้าจะแสดงที่มุมขวาล่างของมุมมอง Simplicity IDE

สําหรับการสาธิตนี้ เราจะใช้การกําหนดค่าเริ่มต้นของแอปพลิเคชันตัวอย่าง ทำซ้ำขั้นตอนข้างต้นเพื่อสร้างot-rcpโปรเจ็กต์สำหรับบอร์ดอื่นๆ
สร้างและแฟลชโปรเจ็กต์
สร้างและแฟลชทั้งโปรเจ็กต์ ot-rcp และ ot-cli-ftd
- หลังจากกําหนดค่าโปรเจ็กต์แล้ว ให้คลิกการควบคุมการสร้าง (ไอคอนค้อน) ในแถบเครื่องมือด้านบน หรือคุณจะคลิกขวาที่โปรเจ็กต์แล้วคลิกสร้างโปรเจ็กต์ก็ได้

- ความคืบหน้าจะแสดงในคอนโซลและแถบความคืบหน้าที่ด้านขวาล่าง ข้อผิดพลาดหรือคำเตือนที่เกี่ยวข้องกับโปรเจ็กต์จะปรากฏในหน้าต่างเอาต์พุตนี้ด้วย

- ระบบจะสร้างรูปภาพไบนารีหลังจากสร้างโปรเจ็กต์สำเร็จ คุณแฟลชอิมเมจไบนารีจากมุมมอง Project Explorer ได้ ค้นหาไฟล์ .bin, .hex หรือ .s37 ในไดเรกทอรีย่อยของคอมไพเลอร์ คลิกขวาที่ไฟล์แล้วเลือกแฟลชไปยังอุปกรณ์ หากมีอุปกรณ์ที่เชื่อมต่อมากกว่า 1 เครื่อง ให้เลือกอุปกรณ์ที่จะตั้งโปรแกรม แล้วคลิกตกลง โปรแกรมเมอร์ Flash จะเปิดขึ้นพร้อมกับเส้นทางไฟล์ที่ป้อนข้อมูลไว้ คลิกโปรแกรม

5. สรุปการตั้งค่าเฟิร์มแวร์
ตอนนี้คุณควรสร้าง คอมไพล์ และแฟลชเฟิร์มแวร์ที่เหมาะสมในบอร์ดวิทยุแล้ว เมื่อแฟลช ot-rcp ไปยัง BRD4166A แล้ว ให้ยกเลิกการเชื่อมต่อจากระบบโฮสต์และเชื่อมต่อบอร์ดนี้กับ Raspberry Pi
หลังจากทําส่วนนี้เสร็จแล้ว การตั้งค่าฮาร์ดแวร์เครือข่าย Thread จะมีลักษณะดังนี้

6. ตั้งค่าคอนโซลแบบอนุกรมสำหรับอุปกรณ์ ot-cli-ftd
หากต้องการเปิดอินเทอร์เฟซคอนโซล ในมุมมอง Simplicity IDE ให้คลิกขวาที่อุปกรณ์ J-Link ในมุมมองอุปกรณ์ / หน้าต่างดีบักอะแดปเตอร์ เลือก Launch Console หากต้องการรับข้อความแจ้งในคอนโซล ให้เลือกแท็บ Serial 1 แล้วกด Enter ตรวจสอบสถานะของโหนด FTD

คุณจะเห็นว่าเรายังไม่มีคอนโซลสำหรับ ot-rcp ในขั้นตอนถัดไป เราจะกำหนดค่า Raspberry Pi เป็นเราเตอร์ขอบ OT และตั้งค่าคอนโซลสำหรับ ot-rcp
7. ตั้งค่า Raspberry Pi เป็นเราเตอร์ชายแดน
Silicon Labs ขอแนะนำให้ติดตั้งใช้งานคอนเทนเนอร์ Docker ของบริษัทด้วย OTBR การเรียกใช้ OTBR ในคอนเทนเนอร์ช่วยให้สร้างอาร์ติแฟกต์ที่ทำให้ใช้งานได้ง่าย รวมถึงการสร้างต้นแบบและการทดสอบการพัฒนาได้อย่างรวดเร็ว
อิมเมจ OTBR ของ Silicon Labs โฮสต์อยู่ใน DockerHub ของ siliconlabsinc พร้อมแท็ก แต่ละแท็กจะสอดคล้องกับ GSDK เวอร์ชันต่างๆ ดังนี้
https://hub.docker.com/r/siliconlabsinc/openthread-border-router/tags
ต้องใช้คอนเทนเนอร์ Docker กับ RCP ที่สร้างขึ้นโดยใช้ Simplicity Studio 5 สำหรับรุ่นที่กำหนด ตรวจสอบว่าเวอร์ชันแท็กคอนเทนเนอร์ตรงกับเวอร์ชัน GSDK ที่คุณใช้ทดสอบ เช่น หากเวอร์ชัน GDSK ของคุณเป็น Gecko SDK Suite v4.0.1 (140) เมื่อคุณเลือก ot-rcp จากหน้าต่างการเลือกโปรเจ็กต์ตัวอย่าง ให้ใช้รูปภาพ siliconlabsinc/openthread-border-router:gsdk-4.0.1

การตั้งค่า Raspberry Pi
- ในการ์ด SD ให้ตรวจสอบว่าคุณแฟลชอิมเมจระบบปฏิบัติการ Raspbian Stretch Lite หรือ Raspbian Stretch with Desktop
- คุณจะ SSH ไปยัง Raspberry Pi หรือเลือกทำงานกับ Raspbian Desktop โดยตรงก็ได้ เปิดเทอร์มินัล
- โปรดอัปเดตรีโปซิโทรีในเครื่องและตัวจัดการแพ็กเกจ (apt-get update และ apt-get upgrade ก่อนติดตั้ง Docker)
ติดตั้งอิมเมจ Docker
- ติดตั้ง Docker ด้วยคำสั่งต่อไปนี้ใน RPi
curl -sSL https://get.docker.com | sh
- เมื่อเสร็จแล้ว คุณจะแก้ไขการตั้งค่าผู้ใช้ Docker เพื่อไม่ให้ต้องใช้ sudo ก่อนแต่ละคำสั่งได้ ต้องรีบูต
sudo usermod -aG docker $USER
- ออกคำสั่งต่อไปนี้เพื่อติดตั้งคอนเทนเนอร์ โปรดทราบว่าคุณเรียกใช้คอนเทนเนอร์เราเตอร์ชายแดนได้เพียง 1 รายการในแต่ละครั้งด้วย RCP นอกจากนี้ โปรดตรวจสอบว่าเวอร์ชัน GSDK ของ Simplicity Studio ตรงกับอิมเมจ Docker ที่ถูกต้อง เช่น
gsdk-4.0.1docker pull siliconlabsinc/openthread-border-router:gsdk-4.0.1
กำหนดค่าและเรียกใช้ Docker
- คุณต้องกำหนดค่าพอร์ต TTY ที่ต้องการใช้สำหรับ OTBR เพื่อเชื่อมต่อ RCP เมื่อเริ่มต้น มองหาพอร์ต TTY ของอุปกรณ์ RCP วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการมองหารายการ
/tty/dev... เมื่อเชื่อมต่อ RCP แล้ว โดยทั่วไปแล้วควรเป็น/dev/ttyUSB0หรือ/dev/ttyACM0 - เรียกใช้การติดตั้ง Docker ด้วยคำสั่งต่อไปนี้ อย่าลืมแทนที่ชื่ออิมเมจ Docker ด้วย GSDK เวอร์ชันที่ตรงกัน เช่น
gsdk-4.0.1docker run -d --name "otbr" \ --sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" \ -p 8080:80 --dns=127.0.0.1 -it \ --volume /dev/ttyACM0:/dev/ttyACM0 \ --privileged siliconlabsinc/openthread-border-router:gsdk-4.0.1 \ --radio-url spinel+hdlc+uart:///dev/ttyACM0?uart-baudrate=460800 \ --backbone-interface eth0
-dช่วยให้มั่นใจว่าคอนเทนเนอร์จะทำงานในโหมดที่แยกจากกัน- คุณดูบันทึกที่ทำงานอยู่ของคอนเทนเนอร์ได้ทุกเมื่อโดยใช้คำสั่ง
docker logs --nameจะยังคงอยู่จนกว่าจะปิด (หรือนำออก) คอนเทนเนอร์ Docker อย่างถูกต้อง- พอร์ต 8080 ระบุพอร์ตของเว็บเซิร์ฟเวอร์ที่โฮสต์หน้าเว็บการจัดการ Border Router
?uart-baudrate=460800จำเป็นต้องใช้ในตัวเลือก URL ของวิทยุเพื่อหลีกเลี่ยงปัญหาการแยกส่วน / การประกอบใหม่ผ่าน UART ด้วยการดำเนินการที่มีต้นทุนสูง เช่น DTLS ที่มีแพ็กเก็ต IPv6 ขนาดยาว
โต้ตอบกับโหนด RCP
เมื่อ Docker ทำงานแล้ว คุณจะสื่อสารกับโหนด RCP ผ่านเชลล์แบบอินเทอร์แอกทีฟได้โดยใช้คำสั่งนี้ ตรวจสอบสถานะของโหนด RCP
$ docker exec -ti otbr sh -c "sudo ot-ctl" > state disabled Done
คุณดูรายการรหัสคอนเทนเนอร์ที่ทำงานอยู่ได้
$ docker ps -aq
คุณสามารถตรวจสอบหน้าต่างที่เรียกใช้คอนเทนเนอร์ Docker ของ OTBR เพื่อดูเอาต์พุตบันทึกการทำงานของ Border Router หรือทำตามบันทึกคอนเทนเนอร์ดังนี้
$ docker logs [container-id] -f
คุณจะหยุด นำออก หรือปิดรูปภาพก็ได้หากโหลดคอนเทนเนอร์ Docker อย่างถูกต้อง
$ docker stop otbr
$ docker rm otbr
$ docker kill otbr
ไม่บังคับ: หากต้องการออกจากเชลล์ ให้ใช้ CNTL + C
ตอนนี้คุณควรมีคอนโซล 3 คอนโซล
ot-cli-ftdคอนโซล 2 เครื่องใน Simplicity Studio ซึ่งตั้งค่าเป็นอุปกรณ์ Thread แบบเต็มot-ctlเชลล์แบบอินเทอร์แอกทีฟ 1 ตัวใน Raspberry Pi ซึ่งตั้งค่าเป็นเราเตอร์ขอบ OT
ตอนนี้เราก็พร้อมที่จะสร้างเครือข่าย Thread แล้ว
8. สร้างเครือข่าย Thread
ตั้งค่า RCP
ในการสร้างเครือข่าย เราจะเริ่มด้วยเชลล์ ot-ctl ใน OTBR ซึ่งใช้เพื่อสื่อสารกับโหนด RCP ป้อนคำสั่งต่อไปนี้ตามลำดับที่แสดงด้านล่าง
ดัชนี | คำสั่ง | คำอธิบายคำสั่ง | การตอบกลับที่คาดหวัง | ||
1 |
| สร้างการกำหนดค่าเครือข่ายใหม่ | เสร็จสิ้น | ||
2 |
| คอมมิตชุดข้อมูลใหม่ไปยังชุดข้อมูลการปฏิบัติงานที่ใช้งานอยู่ | เสร็จสิ้น | ||
3 |
| เปิดใช้อินเทอร์เฟซ Thread | เสร็จสิ้น | ||
4 |
| เปิดใช้และแนบการดำเนินการโปรโตคอล Thread | เสร็จสิ้น | ||
รอ 10 วินาทีเพื่อให้ Thread Interface พร้อมใช้งาน | |||||
5 |
| ตรวจสอบสถานะอุปกรณ์ ควรเป็นผู้นำ | ผู้นำ | ||
6 |
| ดูการกำหนดค่าเครือข่าย | Active Timestamp: 1 | ||
เราจะใช้หมายเลขช่องและคีย์เครือข่ายใน ot-cli-ftd เพื่อเข้าร่วม FTD ทั้ง 2 เครื่องกับเครือข่าย Thread นี้
ตั้งค่าและเพิ่ม FTD ลงในเครือข่าย Thread (วิธีนอกแบนด์)
เมื่อใช้วิธีนอกแบนด์ เราจะทราบข้อมูลความปลอดภัยทั้งหมดและเพิ่มโหนดด้วยตนเอง ในคอนโซล Simplicity ให้เพิ่ม FTD ทั้ง 2 รายการลงในเครือข่ายโดยใช้คำสั่งต่อไปนี้ตามลำดับที่แสดงด้านล่าง
ดัชนี | คำสั่ง | คำอธิบายคำสั่ง | การตอบกลับที่คาดหวัง | ||
1 |
| ตั้งค่าช่องที่ OTBR ใช้ | เสร็จสิ้น | ||
2 |
| อุปกรณ์ต้องใช้เฉพาะคีย์เครือข่ายเพื่อเชื่อมต่อกับเครือข่าย Thread | เสร็จสิ้น | ||
3 |
| คอมมิตชุดข้อมูลใหม่ไปยังชุดข้อมูลการปฏิบัติงานที่ใช้งานอยู่ | เสร็จสิ้น | ||
4 |
| เปิดใช้อินเทอร์เฟซ Thread | เสร็จสิ้น | ||
5 |
| เปิดใช้และแนบการดำเนินการโปรโตคอล Thread | เสร็จสิ้น | ||
รอ 20 วินาทีขณะที่อุปกรณ์เข้าร่วมและกำหนดค่าตัวเอง | |||||
6 |
| ดูการกำหนดค่าเครือข่าย | เด็ก | ||
การสื่อสารระหว่างอุปกรณ์ Thread
เราจะใช้คำสั่ง ping เพื่อตรวจสอบว่าอุปกรณ์สื่อสารกันได้หรือไม่ หากต้องการใช้คำสั่ง 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)
จาก FTD ทั้ง 2 ให้ Ping OTBR โดยใช้ที่อยู่ RLOC ของ OTBR
> 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
การตอบกลับจะระบุเพย์โหลดที่ได้รับและแสดงว่าการสื่อสารสำเร็จ ทำกระบวนการเดิมซ้ำเพื่อ Ping FTD จาก OTBR
9. ขอแสดงความยินดี
คุณสร้างเครือข่าย Thread แล้ว
ตอนนี้คุณก็รู้แล้วว่า
- วิธีสร้างโปรเจ็กต์ OpenThread โดยใช้ IDE ของ Silicon Labs Simplicity Studio
- วิธีสร้างและแฟลชไบนารี OpenThread CLI ไปยังบอร์ดวิทยุของ Silicon Labs
- วิธีตั้งค่า Raspberry Pi 3B ขึ้นไปเป็น OpenThread Border Router (OTBR) โดยใช้ Docker
- วิธีสร้างเครือข่าย Thread ใน OTBR
- การจัดสรรอุปกรณ์นอกแบนด์ไปยังเครือข่าย Thread
- วิธียืนยันการสื่อสาร Thread ระหว่างโหนดโดยใช้คำสั่ง ping
อ่านเพิ่มเติม
ดูข้อมูลเกี่ยวกับ OpenThread ได้ที่ openthread.io และ GitHub ซึ่งมีแหล่งข้อมูล OpenThread มากมาย เช่น
- แพลตฟอร์มที่รองรับ - ดูแพลตฟอร์มทั้งหมดที่รองรับ OpenThread
- สร้าง OpenThread - รายละเอียดเพิ่มเติมเกี่ยวกับการสร้างและกำหนดค่า OpenThread
- ข้อมูลเบื้องต้นเกี่ยวกับ Thread - ครอบคลุมแนวคิด Thread ทั้งหมดที่แสดงใน Codelab นี้
- การฝึกอบรม OpenThread ของ Silicon Labs - ข้อมูลเบื้องต้นเกี่ยวกับ OpenThread, การกล่าวถึงการจัดสรรและการกำหนดค่า Border Router และแบบฝึกหัดภาคปฏิบัติในการสร้างเครือข่าย OpenThread
- QSG170: คู่มือเริ่มต้นใช้งาน OpenThread ของ Silicon Labs - อธิบายกระบวนการเริ่มต้นใช้งานการพัฒนา Thread ของ Silicon Labs อย่างละเอียด
- AN1256: การใช้ RCP ของ Silicon Labs กับ OpenThread Border Router - คำแนะนำในการสร้างและติดตั้งโฮสต์ Border Router ของ Raspberry Pi
10. การตั้งค่าเฟิร์มแวร์ที่ไม่บังคับ - การสาธิต
เดโมคืออิมเมจเฟิร์มแวร์ที่สร้างไว้ล่วงหน้าซึ่งพร้อมให้ดาวน์โหลดลงในอุปกรณ์ที่เข้ากันได้ วิธีที่เร็วที่สุดในการดูว่ามีเดโมสำหรับชิ้นส่วนของคุณใน Simplicity Studio หรือไม่คือการคลิกชิ้นส่วนของคุณในมุมมอง Debug Adapters แล้วไปที่แท็บ EXAMPLE PROJECTS & DEMOS ใน Launcher Perspective ปิดใช้ตัวกรองโปรเจ็กต์ตัวอย่าง แล้วเลือกช่องทำเครื่องหมายปุ่มตัวเลือก Thread ในส่วนประเภทเทคโนโลยี

รูปภาพแอปพลิเคชันเดโมที่คอมไพล์ล่วงหน้าซึ่งมาพร้อมกับ OpenThread SDK ใช้ได้กับบอร์ดต่อไปนี้
- BRD4161a
- BRD4166a
- BRD4168a
- BRD4180a
- BRD4304a
อาจมีการอัปเดตรายการนี้ใน SDK รุ่นต่อๆ ไปเพื่อรวมบอร์ดวิทยุเพิ่มเติม โปรดดูรายการชิ้นส่วนที่รองรับทั้งหมดในบันทึกประจำรุ่นของ Silicon Labs OpenThread SDK ในส่วนเอกสารประกอบ
แฟลชเดโมต่อไปนี้ในบอร์ดที่เกี่ยวข้อง หากต้องการแฟลช ให้เลือกบอร์ดในส่วน Debug Adapters ทางด้านซ้าย แล้วคลิก RUN สำหรับแอปพลิเคชันตัวอย่างที่เกี่ยวข้อง หน้าต่างป๊อปอัปจะแสดงความคืบหน้าของ Flash
- BRD4166A: ot-rcp — อุปกรณ์นี้จะทำหน้าที่เป็นตัวประมวลผลร่วมวิทยุสำหรับ OT Border Router เราจะใช้อุปกรณ์นี้เพื่อสร้างเครือข่าย Thread และเริ่มต้นใช้งานอุปกรณ์อีก 2 เครื่องในเครือข่าย Thread อุปกรณ์นี้เป็น Border Router จึงทำหน้าที่เป็นเกตเวย์สำหรับอุปกรณ์ในเครือข่าย Thread เพื่อสื่อสารผ่านอินเทอร์เน็ตด้วย
- BRD4168A จำนวน 2 เครื่อง: ot-cli-ftd — อุปกรณ์ 2 เครื่องนี้จะทำหน้าที่เป็นอุปกรณ์ Thread แบบเต็ม โดยจะเข้าร่วมเครือข่าย Thread ที่ OTBR สร้างขึ้น