1. Giới thiệu

OpenThread là một cách triển khai nguồn mở của giao thức mạng Thread®. Đây là một giao thức mạng lưới không dây mạnh mẽ và an toàn, được thiết kế cho các thiết bị Internet of Things (IoT). OpenThread do nhóm Nest của Google phát triển và được cung cấp miễn phí cho cộng đồng nhà phát triển dưới dạng một dự án nguồn mở.
Quy cách Thread thiết lập một giao thức truyền thông không dây đáng tin cậy, an toàn và tiết kiệm năng lượng cho các thiết bị có tài nguyên hạn chế thường thấy trong nhà thông minh và toà nhà thương mại. OpenThread bao gồm toàn bộ phạm vi lớp mạng trong Thread, chẳng hạn như IPv6, 6LoWPAN, IEEE 802.15.4 có tính năng bảo mật MAC, thiết lập đường liên kết dạng lưới và định tuyến dạng lưới.
Telink đã tích hợp việc triển khai OpenThread vào Zephyr RTOS, cho phép khả năng tương thích liền mạch với phần cứng Telink. Bạn có thể dễ dàng truy cập vào mã nguồn của chế độ tích hợp này trên GitHub, đồng thời mã nguồn này cũng được cung cấp dưới dạng một bộ công cụ phát triển phần mềm (SDK).
Trong lớp học lập trình này, bạn sẽ lập trình OpenThread trên phần cứng thực, tạo và quản lý mạng Thread, đồng thời trao đổi thông báo giữa các nút. Hình ảnh bên dưới mô tả chế độ thiết lập phần cứng, bao gồm một Bộ định tuyến biên OT (OTBR) và một thiết bị Thread trong lớp học lập trình.

Kiến thức bạn sẽ học được
- Cách thiết lập việc triển khai OpenThread bằng môi trường phát triển Telink Zephyr.
- Để tạo các mẫu CLI OpenThread (
ot-cli-ftdvàot-rcp) và chuyển chúng vào Bo mạch phát triển Telink B91. - Cách thiết lập Bộ định tuyến biên OpenThread (OTBR) bằng Docker trên Raspberry Pi 3B+ trở lên.
- Cách tạo mạng Thread trên OTBR.
- Cách thêm thiết bị vào mạng Thread bằng tính năng gỡ lỗi ngoài băng tần.
- Để xác thực khả năng kết nối giữa các nút trong mạng Thread bằng CLI.
Bạn cần có
Phần cứng:
- Hai bảng mạch phát triển B91.
- Một Raspberry Pi 3B+ trở lên có Hình ảnh hệ điều hành Raspbian.
- Một máy Linux có ít nhất 2 cổng USB.
- Một bộ chuyển mạch (hoặc Bộ định tuyến) có kết nối Internet và một vài cáp Ethernet.
Phần mềm:
- Telink Burning and Debugging Tool (Công cụ ghi và gỡ lỗi của Telink) – LinuxBDT.
- Công cụ đầu cuối cổng nối tiếp, chẳng hạn như PuTTY.
- Các công cụ khác như Git và West.
2. Điều kiện tiên quyết
Các khái niệm về luồng và OpenThread CLI
Bạn nên tham gia lớp học lập trình Mô phỏng OpenThread để làm quen với các khái niệm cơ bản về Thread và OpenThread CLI trước khi tham gia lớp học lập trình này.
Máy Linux
Máy Linux (Ubuntu phiên bản 20.04 LTS trở lên) đóng vai trò là máy tạo bản dựng để thiết lập môi trường phát triển Telink Zephyr và flash tất cả các bảng phát triển Thread. Để hoàn thành những việc này, máy Linux cần có 2 cổng USB và kết nối Internet.
Kết nối cổng nối tiếp và đầu nối
Bạn có thể cắm trực tiếp thiết bị vào cổng USB của máy Linux. Ngoài ra, bạn sẽ cần một công cụ đầu cuối cổng nối tiếp để truy cập vào các thiết bị.
Trong lớp học lập trình này, công cụ đầu cuối PuTTY được dùng để điều khiển FTD Joiner và Raspberry Pi. Nó cung cấp thông tin tổng quan về việc sử dụng, nhưng bạn cũng có thể sử dụng phần mềm thiết bị đầu cuối khác.
Bộ công cụ phát triển Telink B91
Lớp học lập trình này cần 2 bộ B91 Development Kit. Ảnh bên dưới cho thấy các thành phần tối thiểu bắt buộc trong một bộ.

Một trong các bộ này sẽ được dùng làm RCP (Bộ đồng xử lý vô tuyến), còn bộ kia sẽ hoạt động dưới dạng FTD (Thiết bị Thread đầy đủ). Nếu chưa có bộ công cụ này, bạn có thể tìm hiểu thêm thông tin trên trang web chính thức của Telink. Sau đây là một số thành phần sẽ được sử dụng:
Chỉ mục | Tên |
1 | Bảng mạch phát triển Telink B91 |
2 | Telink Burning Board |
3 | Ăng-ten 2,4 GHz |
4 | Cáp USB (USB A sang USB mini) |
Raspberry Pi 3B+ trở lên có Hình ảnh hệ điều hành Raspbian
Trong lớp học lập trình này, bạn cần có Raspberry Pi 3B+ trở lên với hình ảnh hệ điều hành Raspbian Bullseye Lite hoặc Raspbian Bullseye có Desktop. Thiết bị này được kết nối với Internet qua Ethernet và sẽ được định cấu hình làm máy chủ lưu trữ cho Bộ định tuyến biên OpenThread (OTBR).
Kết nối mạng
Một bộ chuyển mạch (hoặc bộ định tuyến) có kết nối Internet và một vài cáp Ethernet. Chúng được dùng để kết nối Raspberry Pi với máy Linux, giúp người dùng định cấu hình Raspberry Pi thông qua máy chủ.
LinuxBDT
Công cụ ghi và gỡ lỗi (BDT) của Telink áp dụng cho tất cả các dòng chip Telink, cho phép bạn xoá và flash phần mềm OpenThread vào các bảng phát triển Telink B91. Cài đặt phiên bản Linux dựa trên X86 linuxBDT trên máy Linux.
Khác
- Git, để thiết lập Môi trường phát triển Telink Zephyr.
- West, để quản lý dự án Zephyr và tạo các tệp nhị phân OpenThread.
3. Thiết lập chương trình cơ sở
Thiết lập Môi trường phát triển Telink Zephyr
Trên máy Linux, hãy mở một cửa sổ dòng lệnh rồi bắt đầu bằng cách thực thi các lệnh sau để đảm bảo APT của bạn luôn được cập nhật.
$ sudo apt update $ sudo apt upgrade
Sau khi hoàn tất, hãy tiếp tục thực hiện các bước sau.
- Cài đặt các phần phụ thuộc.
Zephyr hiện yêu cầu phiên bản tối thiểu của các phần phụ thuộc chính, chẳng hạn như CMake (3.20.0), Python3 (3.6) và Trình biên dịch Devicetree (1.4.6).$ 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
Xác minh các phiên bản đã cài đặt trên hệ thống của bạn trước khi tiến hành các bước tiếp theo. Nếu các phiên bản không chính xác, hãy chuyển APT mirror sang một mirror ổn định và mới nhất hoặc cập nhật các phần phụ thuộc này theo cách thủ công.$ cmake --version $ python3 --version $ dtc --version
- Cài đặt về phía tây.
Đảm bảo rằng$ pip3 install --user -U west $ echo 'export PATH=~/.local/bin:"$PATH"' >> ~/.bashrc $ source ~/.bashrc
~/.local/binnằm trong biến môi trường$PATH. - Lấy mã nguồn Dự án Zephyr.
$ west init ~/zephyrproject $ cd ~/zephyrproject $ west update $ west blobs fetch hal_telink $ west zephyr-export
- Cài đặt các phần phụ thuộc Python bổ sung cho Zephyr.
$ pip3 install --user -r ~/zephyrproject/zephyr/scripts/requirements.txt
- Thiết lập chuỗi công cụ Zephyr. Tải chuỗi công cụ Zephyr (khoảng 1~2 GB) xuống một thư mục cục bộ để cho phép bạn flash hầu hết các bảng.
Tải Zephyr SDK xuống và đặt SDK này vào đường dẫn được đề xuất, như minh hoạ bên dưới.$ 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
Trong đó [-x.y.z] là văn bản không bắt buộc và có thể là bất kỳ văn bản nào, chẳng hạn như -0.16.1. Bạn không thể di chuyển thư mục sau khi cài đặt SDK. Sau đó, hãy cài đặt chuỗi công cụ Zephyr.$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]
$ 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
- Tạo ví dụ Hello World. Trước tiên, hãy xác minh rằng cấu hình dự án Zephyr chính thức là chính xác bằng ví dụ Hello World, sau đó tiến hành thiết lập dự án tuỳ chỉnh của bạn.
Sử dụng lệnh West build để tạo ví dụ hello_world từ thư mục gốc của kho lưu trữ Zephyr. Bạn có thể tìm thấy chương trình cơ sở có tên$ cd ~/zephyrproject/zephyr $ west build -p auto -b tlsr9518adk80d samples/hello_world
zephyr.bintrong phầnbuild/zephyr directory. - Thêm tập lệnh môi trường Zephyr vào
~/.bashrc. Thực thi các lệnh sau.$ echo "source ~/zephyrproject/zephyr/zephyr-env.sh" >> ~/.bashrc $ source ~/.bashrc
- Thêm kho lưu trữ từ xa Telink Zephyr. Tải kho lưu trữ Telink xuống cục bộ dưới dạng một nhánh phát triển rồi cập nhật kho lưu trữ đó.
$ 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
Để biết thêm thông tin, bạn có thể tham khảo Tài liệu Zephyr – Hướng dẫn bắt đầu sử dụng.
Thiết lập Telink LinuxBDT
Tải công cụ Telink LinuxBDT xuống và giải nén vào một thư mục cục bộ trên máy Linux, chẳng hạn như thư mục chính ~, cho phép ghi chương trình cơ sở vào Bảng phát triển B91.
$ cd ~ $ wget http://wiki.telink-semi.cn/tools_and_sdk/Tools/BDT/LinuxBDT.tar.bz2 $ tar -vxf LinuxBDT.tar.bz2
Kết nối Burning Board với máy Linux qua giao diện USB, sau đó nhập các lệnh sau.
$ 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
Nếu bạn thấy thông báo "Telink Web Debugger v3.6", tức là trình lập trình BDT đã kết nối thành công với máy Linux.
Tổng hợp chương trình cơ sở
Lớp học lập trình này sẽ tạo 2 loại chương trình cơ sở OpenThread:
ot-cli-ftd,- và
ot-rcp.
Các phương pháp biên dịch như sau:
- Bộ đồng xử lý vô tuyến (
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
- Thiết bị Thread đầy đủ tính năng có dòng lệnh tương tác (
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
Nạp chương trình cơ sở
Kết nối Bảng phát triển B91 với Bảng ghi bằng cáp USB như minh hoạ trong hình bên dưới.

Trong dòng lệnh, hãy thực thi các lệnh sau để thực hiện ghi phần mềm (ví dụ: sử dụng thao tác nhấp nháy phần mềm 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
Phương thức flash cho ot-rcp về cơ bản giống với phương thức cho ot-cli-ftd. Tuy nhiên, đường dẫn và tên của phần mềm có sự khác biệt.
Sau khi nạp, hãy phân biệt 2 Bảng phát triển B91 bằng cách đánh dấu tương ứng. Gắn nhãn bảng có ot-cli-ftd là "FTD Joiner" và bảng có ot-rcp là "RCP".
4. Định cấu hình Bảng điều khiển nối tiếp cho Thiết bị kết nối FTD
Như trong hình, hãy cắm trực tiếp FTD Joiner vào cổng USB của máy Linux.

Sau khi kết nối Thiết bị kết nối FTD với máy Linux, hãy mở PuTTY. Sau đó, hãy tạo một thiết bị đầu cuối mới, đặt thông tin cổng nối tiếp và mở cổng nối tiếp.

Bạn có thể tham khảo dòng lệnh OpenThread tại đây: Tài liệu tham khảo về CLI của OpenThread. Nhớ thêm tiền tố ot vào tất cả các lệnh.
Ví dụ:
> ot state disabled Done > ot channel 11 Done >
5. Thiết lập Raspberry Pi làm Bộ định tuyến biên OpenThread
Bộ định tuyến biên OpenThread là một thiết bị bao gồm 2 phần chính:
- Raspberry Pi chứa tất cả các dịch vụ và phần mềm cần thiết để hoạt động như một Bộ định tuyến biên (BR).
- RCP chịu trách nhiệm về việc giao tiếp qua Thread.
Bộ đồng xử lý vô tuyến (RCP)
Để nạp phần sụn ot-rcp, hãy làm theo các bước tương tự như quy trình nạp phần sụn ot-cli-ftd. Kết nối Bảng phát triển B91 với một cổng USB trên Raspberry Pi, như minh hoạ trong hình bên dưới.

Raspberry Pi
- Đảm bảo rằng hình ảnh hệ điều hành Raspbian Bullseye Lite hoặc Raspbian Bullseye có Desktop được ghi đúng cách vào thẻ SD.
- Bạn có thể chọn SSH vào Raspberry Pi hoặc làm việc trực tiếp với Raspbian Desktop. Lớp học lập trình này sẽ sử dụng SSH.
- Trước khi tiến hành cài đặt OTBR Docker ở bước tiếp theo, hãy nhớ cập nhật kho lưu trữ cục bộ và trình quản lý gói trước.
$ sudo apt-get update $ sudp apt-get upgrade
Cài đặt Docker
Nếu bạn chỉ cập nhật kho lưu trữ cục bộ và trình quản lý gói APT ở bước trước, hãy khởi động lại Raspberry Pi rồi mở cửa sổ thiết bị đầu cuối SSH.
- Cài đặt Docker:
$ curl -sSL https://get.docker.com | sh
- Đưa tài khoản hiện tại vào một nhóm Docker để cấp quyền sao cho không cần thêm
sudovào trước mỗi lệnh. Bạn cần khởi động lại Raspberry Pi để các thay đổi có hiệu lực.$ sudo usermod -aG docker $USER
- Nếu Docker chưa khởi động, hãy khởi động:
$ sudo dockerd
- Các tập lệnh tường lửa OTBR tạo ra các quy tắc bên trong vùng chứa Docker. Trước đó, hãy thực thi
modprobeđể tải mô-đun hạt nhân của iptables.$ sudo modprobe ip6table_filter
Định cấu hình và chạy Docker
Lớp học lập trình này trực tiếp kéo hình ảnh OTBR Docker từ OpenThread Docker Hub. Hình ảnh này đã được nhóm OpenThread kiểm thử và xác minh.
- Kéo hình ảnh mới nhất:
$ docker pull openthread/otbr:latest
- Kiểm tra danh sách hình ảnh trong vùng chứa Docker:
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE openthread/otbr latest db081f4de15f 6 days ago 766MB
- Xác định tên cổng nối tiếp của thiết bị RCP bằng cách kiểm tra
/dev.ttyACM0cho biết RCP đã được kết nối đúng cách.$ ls /dev/tty* ... /dev/ttyACM0 ...
- Chạy OTBR Docker lần đầu tiên và tham chiếu cổng nối tiếp của RCP (
ttyACM0). Nếu bạn muốn tiếp tục sử dụng OTBR Docker này, hãy dùng lệnh 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
- Mở một cửa sổ thiết bị đầu cuối SSH mới để kiểm tra khả năng kết nối giữa Raspberry Pi và RCP.
$ docker exec -ti otbr sh -c "sudo ot-ctl" > state disabled Done
Các lệnh docker không bắt buộc:
- Nhận thông tin về vùng chứa Docker đang chạy:
$ docker ps -aq
- Dừng OTBR Docker:
$ docker stop otbr
- Xoá OTBR Docker:
$ docker rm otbr
- Tải lại Docker OTBR:
$ docker restart otbr
Tại thời điểm này, thiết bị FTD Joiner và OTBR đã sẵn sàng và bạn có thể chuyển sang bước tiếp theo để tạo mạng Thread.
6. Tạo mạng Thread
Tạo mạng Thread trên RCP
Chúng tôi sử dụng trình bao ot-ctl trên OTBR để thiết lập mạng Thread. Nếu bạn thoát khỏi shell ở phần trước, hãy nhập lệnh sau để khởi động lại shell trong cửa sổ dòng lệnh SSH:
$ docker exec -ti otbr sh -c "sudo ot-ctl"
Tiếp theo, hãy nhập các lệnh theo thứ tự được chỉ định trong bảng và đảm bảo rằng mỗi bước đều đạt được kết quả mong đợi trước khi chuyển sang bước tiếp theo.
Chỉ mục | Lệnh | Giới thiệu | Phản hồi dự kiến | ||
1 |
| Tạo một tập dữ liệu mạng ngẫu nhiên mới. | Xong | ||
2 |
| Cam kết tập dữ liệu mới vào Tập dữ liệu hoạt động đang hoạt động trong bộ nhớ không biến đổi. | Xong | ||
3 |
| Mở giao diện IPv6. | Xong | ||
4 |
| Bật hoạt động của giao thức Thread và kết nối với mạng Thread. | Xong | ||
Chờ 10 giây để giao diện luồng hoạt động. | |||||
5 |
| Kiểm tra trạng thái của thiết bị.Lệnh này có thể được gọi nhiều lần cho đến khi thiết bị trở thành thiết bị chính và chuyển sang bước tiếp theo. | leader | ||
6 |
| Kiểm tra toàn bộ Tập dữ liệu hoạt động đang hoạt động và ghi lại khoá mạng. | Dấu thời gian hoạt động: 1 | ||
Khoá mạng do OTBR tạo ngẫu nhiên trong quá trình tạo mạng sẽ được dùng khi các thiết bị ot-cli-ftd kết nối với mạng Thread này.
Thêm FTD Joiner vào Thread thông qua quy trình thiết lập ngoài băng tần
Quy trình thiết lập ngoài băng tần đề cập đến việc truyền thông tin đăng nhập mạng đến các thiết bị đang chờ tham gia mạng thông qua các phương thức không phải không dây (ví dụ: nhập thủ công vào OpenThread CLI). Nhập các lệnh sau theo thứ tự vào bảng điều khiển nối tiếp cho FTD Joiner.
Chỉ mục | Lệnh | Giới thiệu | Phản hồi dự kiến | ||
1 |
| Thiết bị chỉ cần có Khoá mạng để kết nối với mạng Thread. | Xong | ||
2 |
| Cam kết tập dữ liệu mới vào Tập dữ liệu hoạt động đang hoạt động trong bộ nhớ không biến đổi. | Xong | ||
3 |
| Mở giao diện IPv6. | Xong | ||
4 |
| Bật hoạt động của giao thức Thread và kết nối với mạng Thread. | Xong | ||
Chờ 20 giây trong khi thiết bị tham gia và tự định cấu hình. | |||||
5 |
| Kiểm tra trạng thái thiết bị. | child/router | ||
Cấu trúc liên kết
Nhập các lệnh như ipaddr, child table, router table trong thiết bị đầu cuối SSH để nhận được các phản hồi như đoạn mã sau.
> 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 của OTBR là 0xb000 và RLOC16 của FTD Joiner ban đầu là 0xb001. Sau đó, RLOC16 của FTD Joiner sẽ trở thành 0x8400 sau khi nhận được Router ID. Có thể thấy rằng FTD Joiner đã được nâng cấp từ một thiết bị con thành một bộ định tuyến.
Mạng Thread hiện tại có 2 nút và cấu trúc liên kết như trong hình bên dưới.

7. Giao tiếp giữa các thiết bị Thread
Giao tiếp ICMPv6
Chúng ta dùng lệnh ping để kiểm tra xem các thiết bị Thread trong cùng một mạng có thể giao tiếp với nhau hay không. Trước tiên, hãy dùng lệnh ipaddr để lấy RLOC của thiết bị.
> 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
Nhập lệnh sau vào bảng điều khiển nối tiếp của FTD Joiner để thực hiện thao tác 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
Phản hồi đầu ra của cổng nối tiếp cho biết phía OTBR đã nhận được yêu cầu ping và FTD Joiner đã nhận được phản hồi ping do OTBR trả về. Hai thiết bị giao tiếp thành công.
Giao tiếp UDP
Các dịch vụ ứng dụng do OpenThread cung cấp cũng bao gồm UDP. Bạn có thể sử dụng UDP API để truyền thông tin giữa các nút trong mạng Thread hoặc truyền thông tin đến các mạng bên ngoài thông qua Bộ định tuyến biên. Phần giới thiệu chi tiết về API UDP của OpenThread có trong Ví dụ về UDP trên OpenThread CLI. Lớp học lập trình này sẽ sử dụng một số API trong đó để truyền thông tin giữa OTBR và FTD Joiner.
Trước tiên, hãy lấy EID cục bộ của mạng lưới của OTBR. Địa chỉ này cũng là một trong các địa chỉ IPv6 của thiết bị Thread và có thể dùng để truy cập vào các thiết bị Thread trong cùng một phân vùng mạng Thread.
> ipaddr mleid fd8c:60bc:a98:c7ba:5249:34ab:26d1:aff6 Done
Nhập các lệnh sau trong cửa sổ dòng lệnh SSH để bật OTBR UDP và liên kết cổng 1022 của thiết bị.
> udp open Done > udp bind :: 1022 Done
Nhập các lệnh sau vào bảng điều khiển nối tiếp và bật UDP của FTD Joiner. Liên kết cổng 1022 của thiết bị, sau đó gửi thông báo hello gồm 5 byte đến OTBR.
> ot udp open Done > ot udp bind :: 1022 Done > ot udp send fd8c:60bc:a98:c7ba:5249:34ab:26d1:aff6 1022 hello Done
Thiết bị đầu cuối SSH sẽ xuất ra thông tin sau. OTBR nhận được thông báo hello từ FTD Joiner, tức là quá trình giao tiếp UDP đã thành công.
> 5 bytes from fd8c:60bc:a98:c7ba:9386:63cf:19d7:5a61 1022 hello
8. Xin chúc mừng
Bạn đã tạo một mạng Thread đơn giản và xác minh hoạt động giao tiếp trong mạng này.
Giờ thì bạn đã biết:
- Cách tạo và sử dụng môi trường phát triển Telink Zephyr.
- Cách tạo các tệp nhị phân
ot-cli-ftdvàot-rcp, cũng như cách chuyển các tệp nhị phân này vào Telink B91 Development Boards. - Cách thiết lập Raspberry Pi 3B+ hoặc phiên bản cao hơn làm Bộ định tuyến biên OpenThread (OTBR) bằng Docker.
- Cách tạo mạng Thread trên OTBR.
- Cách thêm thiết bị vào mạng Thread thông qua quy trình thiết lập ngoài băng tần.
- Cách xác minh khả năng kết nối giữa các nút trong mạng Thread.
Tài liệu đọc thêm
Hãy xem openthread.io và GitHub để tìm hiểu về nhiều tài nguyên OpenThread, bao gồm:
- Nền tảng được hỗ trợ – khám phá tất cả nền tảng hỗ trợ OpenThread
- Tạo OpenThread – thông tin chi tiết hơn về cách tạo và định cấu hình OpenThread
- Thread Primer – bao gồm tất cả các khái niệm về Thread có trong lớp học lập trình này
Tài liệu tham khảo: