1. ข้อมูลเบื้องต้น
OpenThread เป็นโปรโตคอลโอเพนซอร์สของ Thread® ซึ่งเป็นโปรโตคอลเครือข่ายที่ทํางานร่วมกันแบบไร้สายและมีประสิทธิภาพซึ่งออกแบบมาเพื่ออุปกรณ์ Internet of Things (IoT) OpenThread พัฒนาขึ้นโดยทีม Nest ของ Google และให้บริการฟรีแก่ชุมชนนักพัฒนาซอฟต์แวร์ในรูปแบบโครงการโอเพนซอร์ส
ข้อมูลจําเพาะของเธรดสร้างโปรโตคอลการสื่อสารไร้สายที่เชื่อถือได้ ปลอดภัย และประหยัดพลังงานสําหรับอุปกรณ์ที่มีทรัพยากรจํากัดซึ่งมักจะพบในบ้านอัจฉริยะและอาคารพาณิชย์ OpenThread มีขอบเขตเลเยอร์เครือข่ายแบบเต็มภายในเทรด เช่น IPv6, 6LoWPAN, IEEE 802.15.4 พร้อมการรักษาความปลอดภัย MAC, การสร้างลิงก์ Mesh และการกําหนดเส้นทาง Mesh
Telink ได้ผสานรวมการใช้งาน OpenThread เข้ากับ Zephyr RTOS ช่วยให้ใช้งานร่วมกับ Telink Hardware ได้อย่างราบรื่น ซอร์สโค้ดสําหรับการผสานรวมนี้สามารถเข้าถึงได้ทันทีใน GitHub และยังมีให้เป็นชุดพัฒนาซอฟต์แวร์ (SDK) ด้วย
ใน Codelab นี้ คุณจะต้องวางโปรแกรม OpenThread บนฮาร์ดแวร์จริง สร้างและจัดการเครือข่าย Thread รวมถึงแลกเปลี่ยนข้อความระหว่างโหนดต่างๆ รูปภาพด้านล่างแสดงการตั้งค่าฮาร์ดแวร์ ซึ่งประกอบด้วยเราเตอร์ OT Border Router (OTBR) และอุปกรณ์ Thread 1 ตัวใน Codelab
สิ่งที่คุณจะได้เรียนรู้
- วิธีตั้งค่าการใช้งาน OpenThread โดยใช้สภาพแวดล้อมการพัฒนาของ Telink Zephyr
- เพื่อสร้างตัวอย่าง OpenThread CLI (
ot-cli-ftd
และot-rcp
) และเผยแพร่ลงใน Telink B91 Development Board - ในการตั้งค่าเราเตอร์ OpenThread Border Router (OTBR) โดยใช้ Docker กับ Raspberry Pi 3B ขึ้นไป
- วิธีสร้างเครือข่ายเทรดใน OTBR
- หากต้องการเพิ่มอุปกรณ์ไปยังเครือข่ายเทรดโดยใช้การแก้ไขข้อบกพร่องนอกขอบเขต
- ในการตรวจสอบการเชื่อมต่อระหว่างโหนดในเครือข่ายเทรดโดยใช้ CLI
สิ่งที่ต้องมี
ฮาร์ดแวร์:
- คณะกรรมการเพื่อการพัฒนา B91 จํานวน 2 ท่าน
- Raspberry Pi 3B ขึ้นไป พร้อมรูปภาพ Raspbian OS
- เครื่อง Linux ที่มีพอร์ต USB อย่างน้อย 2 พอร์ต
- สวิตช์ที่เชื่อมต่ออินเทอร์เน็ต (หรือเราเตอร์) และสายอีเทอร์เน็ตหลายสาย
ซอฟต์แวร์:
- เครื่องมือเขียนและแก้ไขข้อบกพร่องของ Telink —— LinuxBDT
- เครื่องมือเทอร์มินัลพอร์ต เช่น PuTTY
- เครื่องมืออื่นๆ เช่น Git และ West
2. สิ่งที่ต้องดำเนินการก่อน
แนวคิดของชุดข้อความและ OpenThread CLI
เราขอแนะนําให้อ่าน OpenThread Simulation Codelab เพื่อทําความคุ้นเคยกับแนวคิดของ Thread พื้นฐานและ OpenThread CLI ก่อน Codelab นี้
เครื่อง Linux
เครื่อง Linux (Ubuntu v20.04 LTS หรือรุ่นใหม่กว่า) ทําหน้าที่เป็นเครื่องจักรในการตั้งค่าสภาพแวดล้อมการพัฒนา Telink Zephyr และกะพริบบอร์ดการพัฒนา Thread ทั้งหมด เพื่อทํางานดังกล่าว เครื่อง Linux จะต้องใช้พอร์ต USB 2 พอร์ตและการเชื่อมต่ออินเทอร์เน็ต
การเชื่อมต่อและพอร์ตอนุกรม
คุณสามารถเสียบอุปกรณ์เข้ากับพอร์ต USB ของเครื่อง Linux ได้โดยตรง นอกจากนี้ คุณจะต้องใช้เครื่องมือพอร์ตพอร์ตอนุกรมเพื่อเข้าถึงอุปกรณ์
ใน Codelab นี้ เครื่องมือเทอร์มินัล PuTTY จะใช้ควบคุมตัวเชื่อม FTD และ Raspberry Pi ซึ่งให้ภาพรวมของการใช้งาน แต่ก็สามารถใช้ซอฟต์แวร์เทอร์มินัลอื่นได้
Telink B91 Development Kit
Codelab นี้ต้องใช้ชุดการพัฒนา B91 จํานวน 2 ชุด รูปภาพด้านล่างแสดงองค์ประกอบขั้นต่ําที่จําเป็นในชุดเดียว
ชุดใดชุดหนึ่งจะใช้เป็น RCP (ตัวประมวลผลร่วมสําหรับวิทยุ) ขณะที่อีกชุดหนึ่งจะทํางานเป็น FTD (อุปกรณ์เทรดแบบเต็มรูปแบบ) หากยังไม่มีอุปกรณ์ ให้ดูรายละเอียดจากเว็บไซต์อย่างเป็นทางการของ Telink คอมโพเนนต์ที่จะใช้มีดังนี้
ดัชนี | ชื่อ |
1 | คณะกรรมการพัฒนา Telink B91 |
2 | Telink Burning Board |
3 | เสาอากาศ 2.4 GHz |
4 | สาย USB (USB A เป็น Mini USB) |
Raspberry Pi 3B ขึ้นไปพร้อมรูปภาพ Raspbian OS
ใน Codelab นี้ คุณต้องใช้ Raspbian Pills เวอร์ชัน 3B ขึ้นไปที่มีรูปภาพ Raspbian Bullseye Lite OS หรือ Raspbian Bullseye with Desktop อุปกรณ์เชื่อมต่อกับอินเทอร์เน็ตผ่านอีเทอร์เน็ตและจะมีการกําหนดค่าเป็นโฮสต์สําหรับ OpenThread Border Router (OTBR)
การเชื่อมต่อเครือข่าย
สวิตช์ที่เชื่อมต่ออินเทอร์เน็ต (หรือเราเตอร์) และสายอีเทอร์เน็ตหลายสาย ซึ่งใช้ในการเชื่อมต่อ Raspberry Pi เข้ากับเครื่อง Linux ที่ช่วยอํานวยความสะดวกในการกําหนดค่าของผู้ใช้ของ Raspberry Pi ผ่านโฮสต์
LinuxBDT
Telink Burning and Debugging Tool (BDT) ซึ่งใช้กับชิป Telink Chip ทุกรุ่นช่วยให้คุณลบและแฟลชเฟิร์มแวร์ OpenThread ลงบนบอร์ดการพัฒนา Telink B91 ได้ ติดตั้ง Linux เวอร์ชัน X86 linuxBDT ในเครื่อง Linux
อื่นๆ
- Git สําหรับการตั้งค่า Telink Zephyr Development Environment
- ทางตะวันตก สําหรับจัดการโครงการ Zephyr และสร้างไบนารี OpenThread
3. ตั้งค่าเฟิร์มแวร์
ตั้งค่าสภาพแวดล้อมการพัฒนา Telink Zephyr
ในเครื่อง Linux ให้เปิดเทอร์มินัล CLI แล้วเริ่มต้นโดยเรียกใช้คําสั่งต่อไปนี้เพื่อตรวจสอบว่า APT เป็นเวอร์ชันล่าสุดแล้ว
$ sudo apt update $ sudo apt upgrade
เมื่อเสร็จสิ้น ให้ทําตามขั้นตอนต่อไปนี้
- ติดตั้งการอ้างอิง
$ wget https://apt.kitware.com/kitware-archive.sh $ sudo bash kitware-archive.sh $ sudo apt install --no-install-recommends git cmake ninja-build \ gperf ccache dfu-util device-tree-compiler python3-dev python3-pip \ python3-setuptools python3-tk python3-wheel xz-utils file make gcc \ gcc-multilib g++-multilib libsdl2-dev
ปัจจุบัน Zephyr กําหนดให้ใช้ทรัพยากร Dependency หลักเวอร์ชันขั้นต่ํา เช่น CMake (3.20.0), Python3 (3.6) และ Devicetree Compiler (1.4.6)$ cmake --version $ python3 --version $ dtc --version
ตรวจสอบเวอร์ชันที่ติดตั้งอยู่ในระบบก่อนดําเนินการขั้นตอนต่อไป หากเวอร์ชันไม่ถูกต้อง ให้เปลี่ยนกระจก APT เป็นมิเรอร์ที่เสถียรและเป็นปัจจุบัน หรืออัปเดตทรัพยากร Dependency เหล่านี้ด้วยตนเอง - ติดตั้งทิศตะวันตก
$ pip3 install --user -U west $ echo 'export PATH=~/.local/bin:"$PATH"' >> ~/.bashrc $ source ~/.bashrc
ตรวจสอบว่า~/.local/bin
อยู่ในตัวแปรสภาพแวดล้อม$PATH
ของคุณ - รับซอร์สโค้ดของโปรเจ็กต์ Zephyr
$ west init ~/zephyrproject $ cd ~/zephyrproject $ west update $ west blobs fetch hal_telink $ west zephyr-export
- ติดตั้งการอ้างอิง Python เพิ่มเติมสําหรับ Zephyr
$ pip3 install --user -r ~/zephyrproject/zephyr/scripts/requirements.txt
- ตั้งค่าเชนเครื่องมือ Zephyr ดาวน์โหลด Zephyr Toolchain (ประมาณ 1~2 GB) ลงในไดเรกทอรีในตัวเครื่องเพื่อให้คุณสามารถแฟลชบอร์ดส่วนใหญ่ได้
$ wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.1/zephyr-sdk-0.16.1_linux-x86_64.tar.xz $ wget -O - https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.1/sha256.sum | shasum --check --ignore-missing
ดาวน์โหลด Zephyr SDK และวางในเส้นทางที่แนะนําดังที่แสดงด้านล่าง$HOME/zephyr-sdk[-x.y.z] $HOME/.local/zephyr-sdk[-x.y.z] $HOME/.local/opt/zephyr-sdk[-x.y.z] $HOME/bin/zephyr-sdk[-x.y.z] /opt/zephyr-sdk[-x.y.z] /usr/zephyr-sdk[-x.y.z] /usr/local/zephyr-sdk[-x.y.z]
ในกรณีที่ [-x.y.z] เป็นข้อความที่ไม่บังคับซึ่งสามารถเป็นข้อความใดก็ได้ เช่น -0.16.1 ย้ายไดเรกทอรีไม่ได้หลังจากที่ติดตั้ง SDK จากนั้นติดตั้ง Zephyr Toolchain$ tar xvf zephyr-sdk-0.16.1_linux-x86_64.tar.xz $ cd zephyr-sdk-0.16.1 $ ./setup.sh -t riscv64-zephyr-elf -h -c
- สร้างตัวอย่าง Hello World ขั้นแรก ตรวจสอบว่าการกําหนดค่าโปรเจ็กต์ Zephyr อย่างเป็นทางการถูกต้องโดยใช้ตัวอย่าง Hello World แล้วดําเนินการตั้งค่าโปรเจ็กต์ที่กําหนดเอง
$ cd ~/zephyrproject/zephyr $ west build -p auto -b tlsr9518adk80d samples/hello_world
ใช้คําสั่งบิวด์ West เพื่อสร้างตัวอย่าง hello_world จากไดเรกทอรีรูทของที่เก็บ Zephyr คุณสามารถค้นหาเฟิร์มแวร์ที่ชื่อzephyr.bin
ได้ภายใต้build/zephyr directory
- เพิ่มสคริปต์สภาพแวดล้อม Zephyr ไปที่
~/.bashrc
เรียกใช้คําสั่งต่อไปนี้$ echo "source ~/zephyrproject/zephyr/zephyr-env.sh" >> ~/.bashrc $ source ~/.bashrc
- เพิ่มที่เก็บระยะไกลของ Telink Zephyr ดาวน์โหลดที่เก็บ Telink ในเครื่องเป็นสาขาการพัฒนาและอัปเดต
$ cd ~/zephyrproject/zephyr $ git remote add telink-semi https://github.com/telink-semi/zephyr $ git fetch telink develop $ git checkout develop $ west update $ west blobs fetch hal_telink
สําหรับข้อมูลเพิ่มเติม โปรดดูที่ Zephyr Doc – คู่มือเริ่มต้นใช้งาน
ตั้งค่า Telink LinuxBDT
ดาวน์โหลดเครื่องมือ Telink LinuxBDT และแตกข้อมูลไปที่ไดเรกทอรีในเครื่องบน Linux ของคุณ เช่น ไดเรกทอรีหน้าแรก ~
ซึ่งจะเปิดใช้เฟิร์มแวร์แบบ Flash ไปยัง B91 Development Board
$ cd ~ $ wget http://wiki.telink-semi.cn/tools_and_sdk/Tools/BDT/LinuxBDT.tar.bz2 $ tar -vxf LinuxBDT.tar.bz2
เชื่อมต่อ Burning Board เข้ากับเครื่อง Linux ผ่านอินเทอร์เฟซ USB แล้วป้อนคําสั่งต่อไปนี้
$ cd LinuxBDT $ sudo ./bdt lsusb -v Bus 002 Device 001: ID 1d6b:0003 xHCI Host Controller Bus 001 Device 003: ID 0bda:565a Integrated_Webcam_HD Bus 001 Device 023: ID 413c:301a Dell MS116 USB Optical Mouse Bus 001 Device 037: ID 248a:826a Telink Web Debugger v3.6 Bus 001 Device 001: ID 1d6b:0002 xHCI Host Controller
หากคุณเห็นข้อความ "Telink Web Debugger v3.6" แสดงว่าโปรแกรมเมอร์ BDT เชื่อมต่อกับเครื่อง Linux เรียบร้อยแล้ว
การรวบรวมเฟิร์มแวร์
Codelab นี้จะสร้างเฟิร์มแวร์ OpenThread 2 ประเภท ได้แก่
ot-cli-ftd
- และ
ot-rcp
วิธีรวบรวมข้อมูลมีดังนี้
- โปรเซสเซอร์ร่วมวิทยุ](
ot-rcp
)$ cd ~/zephyrproject $ rm -rf build_ot_coprocessor $ west build -b tlsr9518adk80d -d build_ot_coprocessor zephyr/samples/net/openthread/coprocessor -- -DDTC_OVERLAY_FILE="usb.overlay" -DOVERLAY_CONFIG=overlay-rcp-usb-telink.conf
- อุปกรณ์เทรดเต็มรูปแบบพร้อมบรรทัดคําสั่งแบบอินเทอร์แอกทีฟ (
ot-cli-ftd
)$ cd ~/zephyrproject $ rm -rf build_ot_cli_ftd $ west build -b tlsr9518adk80d -d build_ot_cli_ftd zephyr/samples/net/openthread/cli -- -DOVERLAY_CONFIG=overlay-telink-fixed-mac.conf -DCONFIG_OPENTHREAD_FTD=y
แฟลชเฟิร์มแวร์
เชื่อมต่อ B91 Development Board กับ Burning Board โดยใช้สาย USB ตามภาพด้านล่างนี้
ในบรรทัดคําสั่ง ให้เรียกใช้คําสั่งต่อไปนี้เพื่อสร้างการเบิร์นเฟิร์มแวร์ (โดยใช้การกะพริบของเฟิร์มแวร์ ot-cli-ftd
)
$ cd ~/zephyrproject/build_ot_cli_ftd/zephyr $ cp zephyr.bin ~/LinuxBDT/bin/ot-cli-ftd.bin $ cd ~/LinuxBDT $ sudo ./bdt 9518 ac Activate OK! $ sudo ./bdt 9518 wf 0 -i bin/ot-cli-ftd.bin EraseSectorsize... Total Time: 2181 ms Flash writing... [100%][-] [##################################################] File Download to Flash at address 0x000000: 491700 bytes Total Time: 30087 ms
โดยทั่วไปเมธอด Flash ของ ot-rcp
ก็เหมือนกับ ot-cli-ftd
อย่างไรก็ตาม เส้นทางและชื่อเฟิร์มแวร์จะมีความแตกต่าง
หลังจากกะพริบ ให้แยกกระดานการพัฒนา B91 จํานวน 2 แผ่นโดยทําเครื่องหมายให้ทราบ ติดป้ายกํากับกระดานที่กะพริบด้วย ot-cli-ftd
เป็น "ตัวเชื่อม FTD" และกระดานที่กะพริบด้วย ot-rcp
เป็น "RCP"
4. กําหนดค่าคอนโซลอนุกรมสําหรับอุปกรณ์เชื่อมต่อเครื่อง FTD
ดังที่แสดงในภาพ ให้เสียบตัวเชื่อม FTD เข้ากับพอร์ต USB ของเครื่อง Linux โดยตรง
หลังจากเชื่อมต่ออุปกรณ์ตัวเชื่อม FTD เข้ากับเครื่อง Linux แล้ว ให้เปิด PuTTY จากนั้นสร้างเทอร์มินัลใหม่ ตั้งค่าข้อมูลพอร์ตอนุกรม แล้วเปิดพอร์ตอนุกรม
การอ้างอิงบรรทัดคําสั่ง OpenThread อยู่ที่นี่: ข้อมูลอ้างอิง OpenThread CLI โปรดตรวจสอบว่าได้ใส่คํานําหน้า ot
ในคําสั่งทั้งหมดแล้ว
ตัวอย่าง:
> ot state disabled Done > ot channel 11 Done >
5. ตั้งค่า Raspberry Pi เป็นเราเตอร์เส้นขอบ OpenThread
เราเตอร์ Border Router เป็นอุปกรณ์ที่มี 2 ส่วนหลัก:
- Raspberry Pi ประกอบด้วยบริการและเฟิร์มแวร์ทั้งหมดที่จําเป็นต่อการทําหน้าที่เป็น Border Router (BR)
- RCP มีหน้าที่สื่อสารชุดข้อความ
โปรเซสเซอร์ร่วมวิทยุ (RCP)
หากต้องการแฟลชเฟิร์มแวร์ ot-rcp
ให้ทําตามขั้นตอนเดียวกับขั้นตอนการแฟลชเฟิร์มแวร์ ot-cli-ftd
เชื่อมต่อ B91 Development Board เข้ากับพอร์ต USB บน Raspberry Pi ตามภาพด้านล่างนี้
ราสเบอรี่พาย
- ตรวจสอบว่าได้เขียนรูปภาพ Raspbian Bullseye Lite OS หรือ Raspbian Bullseye with Desktop ลงในการ์ด SD อย่างถูกต้องแล้ว
- คุณมีตัวเลือกในการ SSH ไปยัง Raspberry Pi หรือทํางานกับ Raspbian Desktop โดยตรง Codelab นี้จะใช้ SSH
- ก่อนที่จะติดตั้ง OTBR Docker ในขั้นตอนถัดไป โปรดอัปเดตที่เก็บในเครื่องและตัวจัดการแพ็กเกจก่อน
$ sudo apt-get update $ sudp apt-get upgrade
ติดตั้ง Docker
หากเพียงอัปเดต APT ของที่เก็บในเครื่องและตัวจัดการแพ็กเกจในขั้นตอนที่แล้ว ให้รีบูต Raspberry Pi แล้วเปิดหน้าต่างเทอร์มินัล SSH
- ติดตั้ง Docker:
$ curl -sSL https://get.docker.com | sh
- วางบัญชีปัจจุบันไว้ในกลุ่ม Docker เพื่อให้สิทธิ์ เพื่อไม่ให้มีการเพิ่ม
sudo
ไว้หน้าแต่ละคําสั่ง$ sudo usermod -aG docker $USER
คุณต้องรีสตาร์ท Raspberry Pi ก่อน - ถ้ายังไม่ได้เริ่ม Docker ให้เริ่มที่
$ sudo dockerd
- สคริปต์ไฟร์วอลล์ของ OTBR สร้างกฎภายในคอนเทนเนอร์ Docker ก่อนหน้านั้น ให้เรียกใช้
modprobe
เพื่อโหลดโมดูลเคอร์เนลของ iptable$ sudo modprobe ip6table_filter
กําหนดค่าและเรียกใช้ Docker
Codelab นี้จะดึงอิมเมจ Docker OTBR จาก OpenThread Docker Hub โดยตรง ภาพนี้ได้รับการทดสอบและยืนยันโดยทีม OpenThread แล้ว
- ดึงรูปภาพล่าสุด:
$ docker pull openthread/otbr:latest
- ตรวจสอบรายการอิมเมจในคอนเทนเนอร์ Docker ดังนี้
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE openthread/otbr latest db081f4de15f 6 days ago 766MB
- กําหนดชื่อพอร์ตอนุกรมของอุปกรณ์ RCP โดยตรวจสอบ
/dev
ซึ่งttyACM0
บ่งบอกว่าเชื่อมต่อ RCP ไว้อย่างถูกต้อง$ ls /dev/tty* ... /dev/ttyACM0 ...
- เรียกใช้ OTBR Docker เป็นครั้งแรกและอ้างอิงพอร์ตอนุกรมของ RCP (
ttyACM0
) หากต้องการใช้ OTBR Docker ต่อ ให้ใช้คําสั่ง docker start otbr$ docker run --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 openthread/otbr --radio-url spinel+hdlc+uart:///dev/ttyACM0
- เปิดหน้าต่างเทอร์มินัล SSH ใหม่เพื่อทดสอบการเชื่อมต่อระหว่าง Raspberry Pi และ RCP
$ docker exec -ti otbr sh -c "sudo ot-ctl" > state disabled Done
คําสั่ง Docker ที่ไม่บังคับมีดังนี้
- ดูข้อมูลเกี่ยวกับคอนเทนเนอร์ Docker ที่กําลังทํางานอยู่:
$ docker ps -aq
- หยุด OTBR Docker:
$ docker stop otbr
- นํา OTBR Docker ออก:
$ docker rm otbr
- โหลด OTBR Docker ซ้ํา:
$ docker restart otbr
ณ จุดนี้ อุปกรณ์ตัวเชื่อม FTD และ OTBR พร้อมแล้ว และคุณสามารถดําเนินการต่อเพื่อสร้างเครือข่ายเทรดได้
6. สร้างเครือข่ายเทรด
สร้างเครือข่ายเทรดใน RCP
เราใช้ Shell ot-ctl บน OTBR เพื่อสร้างเครือข่ายเทรด หากคุณออกจาก Shell ในส่วนสุดท้าย ให้ป้อนคําสั่งต่อไปนี้เพื่อเริ่มต้นอีกครั้งในเทอร์มินัล SSH
$ docker exec -ti otbr sh -c "sudo ot-ctl"
จากนั้น ป้อนคําสั่งตามลําดับที่ระบุไว้ในตาราง และตรวจสอบว่าแต่ละขั้นตอนประสบความสําเร็จตามที่คาดหวังไว้ก่อนที่จะทําขั้นตอนถัดไป
ดัชนี | คำสั่ง | ข้อมูลเบื้องต้น | การตอบกลับที่คาดหวัง | ||
1 |
| สร้างชุดข้อมูลเครือข่ายแบบสุ่มใหม่ | เสร็จสิ้น | ||
2 |
| ส่งชุดข้อมูลใหม่ไปยังชุดข้อมูลการดําเนินการที่ใช้งานอยู่ในพื้นที่เก็บข้อมูลที่ไม่เปลี่ยนแปลง | เสร็จสิ้น | ||
3 |
| เปิดอินเทอร์เฟซ IPv6 | เสร็จสิ้น | ||
4 |
| เปิดใช้การดําเนินการโปรโตคอลเทรดและเชื่อมต่อกับเครือข่ายเทรด | เสร็จสิ้น | ||
รอ 10 วินาทีให้อินเทอร์เฟซชุดข้อความทํางาน | |||||
5 |
| ตรวจสอบสถานะของอุปกรณ์ คุณเรียกใช้คําสั่งนี้ได้หลายครั้งจนกว่าจะกลายเป็นตัวแปรพื้นฐานและไปยังขั้นตอนถัดไป | ผู้นํา | ||
6 |
| ตรวจสอบชุดข้อมูลการดําเนินการที่ใช้งานอยู่ทั้งหมดและบันทึกคีย์เครือข่าย | เวลาของแอ็กทีฟ: 1 |
ระบบจะใช้คีย์เครือข่ายที่สร้างโดย OTBR แบบสุ่มระหว่างการสร้างเครือข่ายเมื่ออุปกรณ์ ot-cli-ftd
เข้าร่วมเครือข่ายเทรดนี้
เพิ่มตัวเชื่อม FTD ไปยังชุดข้อความผ่านการว่าจ้างนอกขอบเขต
การคอมมิตนอกขอบเขตหมายถึงการส่งข้อมูลรับรองของเครือข่ายไปยังอุปกรณ์ที่รอเข้าร่วมเครือข่ายผ่านวิธีการไร้สาย (เช่น การป้อนใน OpenThread CLI ด้วยตนเอง) ป้อนคําสั่งต่อไปนี้ในคอนโซลอนุกรมไปยังตัวเชื่อม FTD
ดัชนี | คำสั่ง | ข้อมูลเบื้องต้น | การตอบกลับที่คาดหวัง | ||
1 |
| เฉพาะอุปกรณ์เท่านั้นที่ต้องใช้คีย์เครือข่ายเพื่อเชื่อมต่อกับเครือข่ายเทรด | เสร็จสิ้น | ||
2 |
| ส่งชุดข้อมูลใหม่ไปยังชุดข้อมูลการดําเนินการที่ใช้งานอยู่ในพื้นที่เก็บข้อมูลที่ไม่เปลี่ยนแปลง | เสร็จสิ้น | ||
3 |
| เปิดอินเทอร์เฟซ IPv6 | เสร็จสิ้น | ||
4 |
| เปิดใช้การดําเนินการโปรโตคอลเทรดและเชื่อมต่อกับเครือข่ายเทรด | เสร็จสิ้น | ||
รอ 20 วินาทีขณะที่อุปกรณ์เข้าร่วมและกําหนดค่าตัวเอง | |||||
5 |
| ตรวจสอบสถานะของอุปกรณ์ | เด็ก/เราเตอร์ |
โทโพโลยี
ป้อนคําสั่ง เช่น ipaddr
, child table
, router table
ในเทอร์มินัล SSH เพื่อรับคําตอบ เช่น ข้อมูลโค้ดต่อไปนี้
> ipaddr rloc fd8c:60bc:a98:c7ba:0:ff:fe00:b000 Done > child table | ID | RLOC16 | Timeout | Age | LQ In | C_VN |R|D|N|Ver|CSL|QMsgCnt|Suprvsn| Extended MAC | +-----+--------+------------+------------+-------+------+-+-+-+---+---+-------+-------+------------------+ | 1 | 0xb001 | 240 | 23 | 3 | 51 |1|1|1| 3| 0 | 0 | 129 | 82bc12fbe783468e | Done > router table | ID | RLOC16 | Next Hop | Path Cost | LQ In | LQ Out | Age | Extended MAC | Link | +----+--------+----------+-----------+-------+--------+-----+------------------+------+ | 44 | 0xb000 | 63 | 0 | 0 | 0 | 0 | 7ae354109d611f7e | 0 | Done ... > child table | ID | RLOC16 | Timeout | Age | LQ In | C_VN |R|D|N|Ver|CSL|QMsgCnt|Suprvsn| Extended MAC | +-----+--------+------------+------------+-------+------+-+-+-+---+---+-------+-------+------------------+ Done > router table | ID | RLOC16 | Next Hop | Path Cost | LQ In | LQ Out | Age | Extended MAC | Link | +----+--------+----------+-----------+-------+--------+-----+------------------+------+ | 33 | 0x8400 | 63 | 0 | 3 | 3 | 13 | e61487c1cda940a6 | 1 | | 44 | 0xb000 | 63 | 0 | 0 | 0 | 0 | 7ae354109d611f7e | 0 | Done
RLOC16
ของ OTBR คือ 0xb000
และRLOC16
ของตัวเชื่อม FTD เริ่มต้นคือ0xb001
RLOC16
ของตัวเชื่อม FTD จะกลายเป็น 0x8400
หลังจากได้รหัสเราเตอร์ จะเห็นว่าตัวเชื่อม FTD ได้รับการอัปเกรดจากตัวเด็กเป็นเราเตอร์แล้ว
เครือข่ายเทรดปัจจุบันมี 2 โหนด และโทโพโลยีจะแสดงดังที่แสดงในภาพด้านล่าง
7. การสื่อสารระหว่างอุปกรณ์ชุดข้อความ
การสื่อสาร ICMPv6
เราใช้คําสั่ง ping
เพื่อตรวจสอบว่าอุปกรณ์เทรดในเครือข่ายเดียวกันสื่อสารกันได้หรือไม่ ขั้นแรก ให้ใช้คําสั่ง ipaddr
เพื่อรับ RLOC ของอุปกรณ์
> ipaddr fd8c:60bc:a98:c7ba:0:ff:fe00:fc11 fdbd:7274:649c:1:1d19:9613:f705:a5af fd8c:60bc:a98:c7ba:0:ff:fe00:fc10 fd8c:60bc:a98:c7ba:0:ff:fe00:fc38 fd8c:60bc:a98:c7ba:0:ff:fe00:fc00 fd8c:60bc:a98:c7ba:0:ff:fe00:b000 # Routing Locator (RLOC) fd8c:60bc:a98:c7ba:5249:34ab:26d1:aff6 fe80:0:0:0:78e3:5410:9d61:1f7e Done
ป้อนคําสั่งต่อไปนี้ในคอนโซลอนุกรมของตัวเชื่อม FTD เพื่อใช้คําสั่ง ping
> ot ping fd8c:60bc:a98:c7ba:0:ff:fe00:b000 16 bytes from fd8c:60bc:a98:c7ba:0:ff:fe00:b000: icmp_seq=1 hlim=64 time=19ms 1 packets transmitted, 1 packets received. Packet loss = 0.0%. Round-trip min/avg/max = 19/19.0/19 ms. Done
การตอบสนองเอาต์พุตของพอร์ตอนุกรมบ่งบอกว่าฝั่ง OTBR ได้รับคําขอ ping และผู้เชื่อม FTD ก็ได้รับคําสั่ง ping ที่แสดงผลโดย OTBR การสื่อสารระหว่างอุปกรณ์ทั้งสองสําเร็จ
การสื่อสาร UDP
บริการแอปพลิเคชันจาก OpenThread มี UDP ด้วย คุณสามารถใช้ UDP API เพื่อส่งข้อมูลระหว่างโหนดในเครือข่ายเทรด หรือส่งข้อมูลไปยังเครือข่ายภายนอกผ่าน Border Router บทนําโดยละเอียดเกี่ยวกับ UDP API ของ OpenThread อยู่ใน OpenThread CLI - UDP Example Codelab นี้จะใช้ API ต่างๆ ในการส่งข้อมูลระหว่างตัวเชื่อม OTBR กับ FTD
อันดับแรก รับ EID Mesh-Local ของ OTBR ที่อยู่นี้จะเป็นหนึ่งในที่อยู่ IPv6 ของอุปกรณ์เทรด และสามารถใช้เพื่อเข้าถึงอุปกรณ์เทรดในพาร์ติชันเครือข่ายของเทรดเดียวกัน
> ipaddr mleid fd8c:60bc:a98:c7ba:5249:34ab:26d1:aff6 Done
ป้อนคําสั่งต่อไปนี้ในเทอร์มินัล SSH เพื่อเปิดใช้ OTBR UDP และเชื่อมโยงพอร์ต 1022 ของอุปกรณ์
> udp open Done > udp bind :: 1022 Done
ป้อนคําสั่งต่อไปนี้ในคอนโซลอนุกรมและเปิดใช้ UDP ของผู้เชื่อม FTD เชื่อมโยงพอร์ต 1022 ของอุปกรณ์แล้วส่งข้อความ hello
ขนาด 5 ไบต์ไปยัง OTBR
> ot udp open Done > ot udp bind :: 1022 Done > ot udp send fd8c:60bc:a98:c7ba:5249:34ab:26d1:aff6 1022 hello Done
เทอร์มินัล SSH จะแสดงข้อมูลต่อไปนี้ OTBR ได้รับข้อความ hello
จากตัวเชื่อม FTD ซึ่งหมายความว่าการสื่อสาร UDP สําเร็จ
> 5 bytes from fd8c:60bc:a98:c7ba:9386:63cf:19d7:5a61 1022 hello
8. ขอแสดงความยินดี
คุณได้สร้างเครือข่ายเทรดแบบง่ายและยืนยันการสื่อสารภายในเครือข่ายนี้แล้ว
ตอนนี้คุณทราบประเด็นต่อไปนี้แล้ว:
- วิธีสร้างและใช้สภาพแวดล้อมการพัฒนา Telink Zephyr
- วิธีสร้างไบนารี
ot-cli-ftd
และot-rcp
รวมถึง Flash ลงในบอร์ดพัฒนา Telink B91 - วิธีตั้งค่า Raspberry Pi เวอร์ชัน 3B ขึ้นไปเป็น OpenThread Border Router (OTBR) โดยใช้ Docker
- วิธีสร้างเครือข่ายเทรดใน OTBR
- วิธีเพิ่มอุปกรณ์ไปยังเครือข่ายเทรดผ่านการกําหนดย่านความถี่นอกขอบเขต
- วิธียืนยันการเชื่อมต่อระหว่างโหนดในเครือข่ายเทรด
อ่านเพิ่มเติม
ไปที่ openthread.io และ GitHub เพื่อเรียนรู้เกี่ยวกับทรัพยากร OpenThread ต่างๆ รวมถึง:
- แพลตฟอร์มที่รองรับ — ค้นหาแพลตฟอร์มทั้งหมดที่รองรับ OpenThread
- สร้าง OpenThread — รายละเอียดเพิ่มเติมเกี่ยวกับการสร้างและกําหนดค่า OpenThread
- Thread Primer — ครอบคลุมแนวคิดเทรดทั้งหมดที่แสดงใน Codelab นี้
เอกสารอ้างอิง: