สร้างเครือข่าย Thread ด้วยกระดาน Silicon Labs EFR32 และ OpenThread โดยใช้ Simplicity Studio v5

1. บทนำ

26b7f4f6b3ea0700.png

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

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

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

  • วิธีสร้างโปรเจ็กต์ OpenThread โดยใช้ IDE ของ Silicon Labs Simplicity Studio
  • วิธีสร้างและแฟลชไบนารี OpenThread CLI ไปยังบอร์ดวิทยุของ Silicon Labs
  • วิธีตั้งค่า Raspberry Pi 3B ขึ้นไปเป็น OpenThread Border Router (OTBR) โดยใช้ Docker
  • วิธีสร้างเครือข่าย Thread ใน OTBR
  • การจัดสรรอุปกรณ์นอกแบนด์ไปยังเครือข่าย Thread
  • วิธียืนยันการสื่อสาร Thread ระหว่างโหนดโดยใช้คำสั่ง ping

2. ข้อกำหนดเบื้องต้น

ฮาร์ดแวร์

  1. บอร์ดวิทยุ EFR32MGxx 3 บอร์ด - สามารถใช้อุปกรณ์เหล่านี้ร่วมกันได้ Codelab นี้ใช้ BRD4166A เป็น RCP และ BRD4168A 2 ตัวเป็นอุปกรณ์ Thread แบบเต็ม
    • EFR32MG12 (BRD4161A, BRD4166A, BRD4170A, BRD4304A)
    • EFR32MG13 (BRD4168A)
    • EFR32MG21 (BRD4180A, BRD4180B)
    หากเพิ่งเริ่มต้น คุณสามารถซื้อชุดเริ่มต้น Thread EFR32 ซึ่งมีบอร์ดที่ระบุไว้ข้างต้น
  2. BRD4001A: เมนบอร์ดเริ่มต้นแบบไร้สาย (WSTK) เพื่อโฮสต์บอร์ดวิทยุ บอร์ดวิทยุทุกบอร์ดต้องมีเมนบอร์ดเริ่มต้น ยกเว้น BRD4166A สาย Mini USB สำหรับเชื่อมต่อและจ่ายไฟให้กับบอร์ดหลัก หรือสาย Micro USB สำหรับ BRD4166A

WSTK AEM

  1. Raspberry Pi 3B+ ขึ้นไปที่ใช้อิมเมจ Raspbian Stretch Lite OS หรือ Raspbian Stretch with Desktop ซึ่งเชื่อมต่ออินเทอร์เน็ตผ่านอีเทอร์เน็ต เรากำหนดค่าอุปกรณ์นี้เป็นเราเตอร์ชายแดน OT
  2. ระบบโฮสต์ Windows/Linux/Mac ที่มีพอร์ต USB อย่างน้อย 2 พอร์ตและการเชื่อมต่ออินเทอร์เน็ต ตรวจสอบข้อกำหนดของฮาร์ดแวร์และระบบปฏิบัติการได้ที่ SSv5
  3. สายอีเทอร์เน็ตอย่างน้อย 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 นี้สร้างขึ้นโดยใช้

  1. EFR32MG12 BRD4166A Thunderboard Sense 2 ดังที่แสดงทางด้านซ้าย
  2. EFR32MG13 BRD4168A 2 ตัวดังที่แสดงทางด้านขวา
  3. Simplicity Studio v5 ติดตั้งใน macOS Catalina 10.15.7 ด้วย
    1. Gecko SDK 3.2.0
    2. GNU ARM v7.2.1

BRD4168A

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

การติดต่อ

4. การตั้งค่าเฟิร์มแวร์

คุณเริ่มใช้งานได้ 2 วิธีดังนี้ ทั้ง 2 ตัวเลือกช่วยให้คุณแฟลชเฟิร์มแวร์ที่จำเป็นสำหรับ Codelab นี้ได้

  1. โปรเจ็กต์: (แนะนํา) สร้าง สร้าง และแฟลชแอปพลิเคชันตัวอย่าง ตัวเลือกนี้ช่วยให้คุณปรับแต่งแอปพลิเคชันในโปรเจ็กต์ได้ หรือ
  2. การสาธิต: (ไม่บังคับ) แฟลชการสาธิตที่สร้างไว้ล่วงหน้าบนบอร์ดวิทยุโดยตรงสำหรับแอปพลิเคชันตัวอย่าง เราขอแนะนำให้ผู้ใช้ลองตั้งค่าเฟิร์มแวร์ของเดโมเป็นแบบฝึกหัดเพิ่มเติม โปรดดูรายละเอียดในส่วน "การตั้งค่าเฟิร์มแวร์ที่ไม่บังคับ - การสาธิต" ที่ตอนท้ายของ Codelab นี้

เราจะใช้วิธีการตามโปรเจ็กต์สำหรับ Codelab นี้

สร้างโปรเจ็กต์โดยใช้ตัวอย่าง

เราจะสร้าง 2 โปรเจ็กต์ โปรเจ็กต์ ot-rcp สำหรับ BRD4166A และโปรเจ็กต์ ot-cli-ftd สำหรับ BRD4168A 2 ตัว โปรดทำตามขั้นตอนเหล่านี้และเลือกแอปพลิเคชันตัวอย่างที่เหมาะสมสำหรับบอร์ดของคุณ

  1. เปิดเมนูไฟล์ของ 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

วิซาร์ดโปรเจ็กต์ใหม่

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

ขั้นตอนที่ 2 ของวิซาร์ดโปรเจ็กต์ใหม่

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

ขั้นตอนที่ 3 ของวิซาร์ดโปรเจ็กต์ใหม่

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

ภาพรวมโครงการ

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

คอมโพเนนต์ซอฟต์แวร์

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

สร้างและแฟลชโปรเจ็กต์

สร้างและแฟลชทั้งโปรเจ็กต์ ot-rcp และ ot-cli-ftd

  1. หลังจากกําหนดค่าโปรเจ็กต์แล้ว ให้คลิกการควบคุมการสร้าง (ไอคอนค้อน) ในแถบเครื่องมือด้านบน หรือคุณจะคลิกขวาที่โปรเจ็กต์แล้วคลิกสร้างโปรเจ็กต์ก็ได้

ปุ่มสร้างโปรเจ็กต์

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

หน้าต่างเอาต์พุตการบิลด์โปรเจ็กต์

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

Flash

5. สรุปการตั้งค่าเฟิร์มแวร์

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

หลังจากทําส่วนนี้เสร็จแล้ว การตั้งค่าฮาร์ดแวร์เครือข่าย Thread จะมีลักษณะดังนี้

การตั้งค่า EFR32MG

6. ตั้งค่าคอนโซลแบบอนุกรมสำหรับอุปกรณ์ ot-cli-ftd

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

มุมมองคอนโซล FTD Studio

คุณจะเห็นว่าเรายังไม่มีคอนโซลสำหรับ 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

เวอร์ชัน GSDK

การตั้งค่า Raspberry Pi

  1. ในการ์ด SD ให้ตรวจสอบว่าคุณแฟลชอิมเมจระบบปฏิบัติการ Raspbian Stretch Lite หรือ Raspbian Stretch with Desktop
  2. คุณจะ SSH ไปยัง Raspberry Pi หรือเลือกทำงานกับ Raspbian Desktop โดยตรงก็ได้ เปิดเทอร์มินัล
  3. โปรดอัปเดตรีโปซิโทรีในเครื่องและตัวจัดการแพ็กเกจ (apt-get update และ apt-get upgrade ก่อนติดตั้ง Docker)

ติดตั้งอิมเมจ Docker

  1. ติดตั้ง Docker ด้วยคำสั่งต่อไปนี้ใน RPi
    curl -sSL https://get.docker.com | sh
    
  2. เมื่อเสร็จแล้ว คุณจะแก้ไขการตั้งค่าผู้ใช้ Docker เพื่อไม่ให้ต้องใช้ sudo ก่อนแต่ละคำสั่งได้ ต้องรีบูต
    sudo usermod -aG docker $USER
    
  3. ออกคำสั่งต่อไปนี้เพื่อติดตั้งคอนเทนเนอร์ โปรดทราบว่าคุณเรียกใช้คอนเทนเนอร์เราเตอร์ชายแดนได้เพียง 1 รายการในแต่ละครั้งด้วย RCP นอกจากนี้ โปรดตรวจสอบว่าเวอร์ชัน GSDK ของ Simplicity Studio ตรงกับอิมเมจ Docker ที่ถูกต้อง เช่น gsdk-4.0.1
    docker pull siliconlabsinc/openthread-border-router:gsdk-4.0.1
    

กำหนดค่าและเรียกใช้ Docker

  1. คุณต้องกำหนดค่าพอร์ต TTY ที่ต้องการใช้สำหรับ OTBR เพื่อเชื่อมต่อ RCP เมื่อเริ่มต้น มองหาพอร์ต TTY ของอุปกรณ์ RCP วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการมองหารายการ /tty/dev... เมื่อเชื่อมต่อ RCP แล้ว โดยทั่วไปแล้วควรเป็น /dev/ttyUSB0 หรือ /dev/ttyACM0
  2. เรียกใช้การติดตั้ง Docker ด้วยคำสั่งต่อไปนี้ อย่าลืมแทนที่ชื่ออิมเมจ Docker ด้วย GSDK เวอร์ชันที่ตรงกัน เช่น gsdk-4.0.1
    docker 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 คอนโซล

  1. ot-cli-ftdคอนโซล 2 เครื่องใน Simplicity Studio ซึ่งตั้งค่าเป็นอุปกรณ์ Thread แบบเต็ม
  2. ot-ctlเชลล์แบบอินเทอร์แอกทีฟ 1 ตัวใน Raspberry Pi ซึ่งตั้งค่าเป็นเราเตอร์ขอบ OT

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

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

ตั้งค่า RCP

ในการสร้างเครือข่าย เราจะเริ่มด้วยเชลล์ ot-ctl ใน OTBR ซึ่งใช้เพื่อสื่อสารกับโหนด RCP ป้อนคำสั่งต่อไปนี้ตามลำดับที่แสดงด้านล่าง

ดัชนี

คำสั่ง

คำอธิบายคำสั่ง

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

1

dataset init new

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

เสร็จสิ้น

2

dataset commit active

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

เสร็จสิ้น

3

ifconfig up

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

เสร็จสิ้น

4

thread start

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

เสร็จสิ้น

รอ 10 วินาทีเพื่อให้ Thread Interface พร้อมใช้งาน

5

state

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

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

6

dataset

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

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
Done

เราจะใช้หมายเลขช่องและคีย์เครือข่ายใน ot-cli-ftd เพื่อเข้าร่วม FTD ทั้ง 2 เครื่องกับเครือข่าย Thread นี้

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

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

ดัชนี

คำสั่ง

คำอธิบายคำสั่ง

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

1

dataset channel 20

ตั้งค่าช่องที่ OTBR ใช้

เสร็จสิ้น

2

dataset networkkey 81ae2c2c17368d585dee71eaa8cf1e90

อุปกรณ์ต้องใช้เฉพาะคีย์เครือข่ายเพื่อเชื่อมต่อกับเครือข่าย Thread

เสร็จสิ้น

3

dataset commit active

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

เสร็จสิ้น

4

ifconfig up

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

เสร็จสิ้น

5

thread start

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

เสร็จสิ้น

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

6

state

ดูการกำหนดค่าเครือข่าย

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

การสื่อสารระหว่างอุปกรณ์ 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 มากมาย เช่น

10. การตั้งค่าเฟิร์มแวร์ที่ไม่บังคับ - การสาธิต

เดโมคืออิมเมจเฟิร์มแวร์ที่สร้างไว้ล่วงหน้าซึ่งพร้อมให้ดาวน์โหลดลงในอุปกรณ์ที่เข้ากันได้ วิธีที่เร็วที่สุดในการดูว่ามีเดโมสำหรับชิ้นส่วนของคุณใน Simplicity Studio หรือไม่คือการคลิกชิ้นส่วนของคุณในมุมมอง Debug Adapters แล้วไปที่แท็บ EXAMPLE PROJECTS & DEMOS ใน Launcher Perspective ปิดใช้ตัวกรองโปรเจ็กต์ตัวอย่าง แล้วเลือกช่องทำเครื่องหมายปุ่มตัวเลือก Thread ในส่วนประเภทเทคโนโลยี

การสาธิต Studio

รูปภาพแอปพลิเคชันเดโมที่คอมไพล์ล่วงหน้าซึ่งมาพร้อมกับ OpenThread SDK ใช้ได้กับบอร์ดต่อไปนี้

  1. BRD4161a
  2. BRD4166a
  3. BRD4168a
  4. BRD4180a
  5. BRD4304a

อาจมีการอัปเดตรายการนี้ใน SDK รุ่นต่อๆ ไปเพื่อรวมบอร์ดวิทยุเพิ่มเติม โปรดดูรายการชิ้นส่วนที่รองรับทั้งหมดในบันทึกประจำรุ่นของ Silicon Labs OpenThread SDK ในส่วนเอกสารประกอบ

แฟลชเดโมต่อไปนี้ในบอร์ดที่เกี่ยวข้อง หากต้องการแฟลช ให้เลือกบอร์ดในส่วน Debug Adapters ทางด้านซ้าย แล้วคลิก RUN สำหรับแอปพลิเคชันตัวอย่างที่เกี่ยวข้อง หน้าต่างป๊อปอัปจะแสดงความคืบหน้าของ Flash

  1. BRD4166A: ot-rcp — อุปกรณ์นี้จะทำหน้าที่เป็นตัวประมวลผลร่วมวิทยุสำหรับ OT Border Router เราจะใช้อุปกรณ์นี้เพื่อสร้างเครือข่าย Thread และเริ่มต้นใช้งานอุปกรณ์อีก 2 เครื่องในเครือข่าย Thread อุปกรณ์นี้เป็น Border Router จึงทำหน้าที่เป็นเกตเวย์สำหรับอุปกรณ์ในเครือข่าย Thread เพื่อสื่อสารผ่านอินเทอร์เน็ตด้วย
  2. BRD4168A จำนวน 2 เครื่อง: ot-cli-ftd — อุปกรณ์ 2 เครื่องนี้จะทำหน้าที่เป็นอุปกรณ์ Thread แบบเต็ม โดยจะเข้าร่วมเครือข่าย Thread ที่ OTBR สร้างขึ้น