Membangun Jaringan Thread dengan Texas Instruments SimpleLink F3 dan OpenThread

1. Pengantar

Logo OpenThread

OpenThread (OT) Google adalah implementasi Thread open source. Google telah merilis OpenThread untuk menyediakan teknologi jaringan yang digunakan dalam produk Google Nest secara luas kepada developer, sehingga mempercepat pengembangan produk untuk aplikasi rumah yang terhubung dan bangunan komersial. Dengan lapisan abstraksi platform yang sempit dan jejak memori yang kecil, OpenThread sangat portabel. Platform ini mendukung desain system-on-chip (SoC) dan network co-processor (NCP).

Spesifikasi Thread menentukan protokol komunikasi nirkabel perangkat-ke-perangkat berbasis IPv6 yang andal, aman, dan berdaya rendah untuk aplikasi rumah dan bangunan komersial.

Texas Instruments telah menerapkan OpenThread untuk keluarga perangkat SimpleLink™ CC27xx. Repositori ot-ti di GitHub berisi driver platform dan contoh aplikasi yang diperlukan untuk menjalankan OpenThread di MCU yang Terhubung SimpleLink Texas Instruments. CC2745R10-Q1 adalah MCU nirkabel IEEE 802.15.4 bersertifikasi Thread kelas otomotif (memenuhi syarat AEC-Q100) dari keluarga SimpleLink CC27xx TI.

Codelab ini menjelaskan cara mulai mengembangkan aplikasi OpenThread dengan papan evaluasi LaunchPad LP-EM-CC2745R10-Q1 dan repositori ot-ti. Gambar di bawah menunjukkan penyiapan hardware yang digunakan dalam codelab ini, dengan OT Border Router (OTBR) dan dua Thread Full Thread Device (FTD).

Penyiapan Hardware CC2745R10

Yang akan Anda pelajari

  • Cara menyiapkan lingkungan build ot-ti Texas Instruments.
  • Cara membuat dan mem-flash biner OpenThread CLI ke papan LP-EM-CC2745R10-Q1.
  • Cara menyiapkan Raspberry Pi sebagai OpenThread Border Router (OTBR) menggunakan ot-br-posix.
  • Cara membuat jaringan Thread di OTBR.
  • Penyiapan out-of-band perangkat ke jaringan Thread.
  • Cara memverifikasi komunikasi Thread antar-node menggunakan perintah ping.

2. Prasyarat

Hardware

  1. 3 papan LP-EM-CC2745R10-Q1 LaunchPad: satu dikonfigurasi sebagai RCP yang terhubung ke Border Router, dan dua dikonfigurasi sebagai Perangkat Thread Lengkap (FTD). LP-EM-CC2745R10-Q1 Angled ViewCC2745R10-Q1 adalah MCU nirkabel IEEE 802.15.4 bersertifikasi Thread kelas otomotif (memenuhi syarat AEC-Q100) dalam keluarga SimpleLink CC27xx TI. LP-EM-CC2745R10-Q1 adalah Modul Evaluasi LaunchPad yang sesuai dan mendukung peran RCP, FTD, MTD, dan NCP Thread. CC2340R5 dengan LaunchPad LP-EM-CC2340R5 adalah opsi memori yang lebih rendah yang hanya dapat berfungsi sebagai RCP. Fitur ini tidak mendukung peran FTD, MTD, atau NCP. Jika Anda mengganti LP-EM-CC2340R5 untuk Board 1 (RCP), kedua board FTD harus tetap LP-EM-CC2745R10-Q1.
  2. 3 probe debug LP-XDS110ET: satu per papan LaunchPad, digunakan untuk pemrograman dan debug melalui USB. LP-XDS110ET Angled ViewLP-XDS110ET adalah probe debug USB terpisah yang diperlukan untuk LaunchPad dalam faktor bentuk LP-EM. Alat ini mencakup dukungan EnergyTrace untuk pembuatan profil daya. LP-XDS110 adalah alternatif berbiaya lebih rendah yang menyediakan kemampuan pemrograman dan debug yang sama, tetapi tidak menyertakan EnergyTrace. Sebagai alternatif lebih lanjut, LaunchPad dengan probe debug XDS110 bawaan (seperti LAUNCHXL-CC26X2R1) dapat digunakan sebagai pengganti papan LP-EM dan probe debug terpisah. Lihat panduan konektivitas debug LaunchPad untuk mengetahui detailnya.
  3. 3 kabel micro-USB untuk menghubungkan dan menyuplai daya ke papan LaunchPad dan probe debug.
  4. Raspberry Pi 4B atau yang lebih baru dengan Raspberry Pi OS yang terhubung ke internet melalui Ethernet. Perangkat ini akan dikonfigurasi sebagai host OT Border Router.Raspberry Pi 4
  5. Sistem host Linux atau macOS dengan minimal 2 port USB dan akses internet. Lingkungan build memerlukan shell yang kompatibel dengan Bash. Pengguna Windows harus menggunakan WSL2 (Windows Subsystem for Linux 2) dengan Ubuntu.
  6. Minimal satu kabel Ethernet untuk menghubungkan Raspberry Pi ke internet. Atau, Anda dapat menghubungkan Raspberry Pi ke Wi-Fi dan menggunakan wlan0 sebagai antarmuka infrastruktur — lihat langkah penyiapan OTBR untuk mengetahui detailnya.

Software

  • Repositori TI ot-ti: https://github.com/TexasInstruments/ot-ti
  • GNU ARM Embedded Toolchain 12.2 (diinstal secara otomatis oleh skrip bootstrap)
  • SysConfig 1.27.0 (diinstal secara otomatis oleh skrip bootstrap)
  • TI UniFlash: untuk mem-flash firmware ke papan LaunchPad

3. Penyiapan Hardware

Codelab ini menggunakan tiga board LP-EM-CC2745R10-Q1:

  • Board 1 (RCP): Menjalankan firmware ot-rcp. Terhubung ke Raspberry Pi melalui USB sebagai co-prosesor radio untuk Router Pembatas.
  • Board 2 (FTD 1): Menjalankan firmware ot-cli-ftd sebagai Perangkat Thread Penuh.
  • Board 3 (FTD 2): Menjalankan firmware ot-cli-ftd sebagai Perangkat Thread Penuh.

LP-EM-CC2745R10-Q1 Tampilan Atas

Hubungkan setiap LaunchPad ke komputer host Anda melalui micro-USB. Koneksi USB menyediakan kemampuan daya dan debug/pemrograman melalui probe debug XDS110 di perangkat.

Setiap LP-EM-CC2745R10-Q1 muncul sebagai dua port serial virtual saat terhubung melalui USB: satu untuk antarmuka debug XDS110 dan satu untuk UART aplikasi. Saat membuka konsol serial, hubungkan ke port Application/User UART, bukan port Data Tambahan.

Diagram Koneksi Hardware

4. Penyiapan dan Build Repositori

Sistem build ot-ti menggunakan CMake dan memerlukan shell Bash. Semua perintah di bagian ini dijalankan di host Linux atau macOS (atau WSL2 di Windows).

1. Melakukan cloning repositori

$ git clone https://github.com/TexasInstruments/ot-ti.git
$ cd ot-ti
$ git submodule update --init

2. Jalankan skrip bootstrap

Skrip bootstrap menginstal dependensi yang diperlukan, termasuk toolchain GNU ARM dan SysConfig:

$ ./script/bootstrap

Skrip bootstrap memerlukan cmake, git, wget, dan alat build standar. Di Ubuntu/Debian, instal prasyarat dengan: sudo apt-get install -y cmake git make wget tar ninja-build

3. Membangun firmware untuk LP_EM_CC2745R10_Q1

Bangun semua image firmware untuk papan LP-EM-CC2745R10-Q1:

$ ./script/build LP_EM_CC2745R10_Q1

Target build LP_EM_CC2745R10_Q1 sesuai dengan perangkat CC2745R10-Q1 dalam keluarga CC27xx SimpleLink (inti Arm Cortex-M33F). Untuk melihat semua papan yang didukung, jalankan ./script/build tanpa argumen.

Setelah build berhasil, biner ELF ada di build/bin/:

$ ls build/bin/
ot-cli-ftd.out  ot-cli-mtd.out  ot-ncp-ftd.out  ot-rcp.out

Dua gambar yang digunakan dalam codelab ini adalah:

  • ot-rcp.out: Firmware Radio Co-Processor untuk papan Border Router.
  • ot-cli-ftd.out: Firmware CLI Perangkat Thread Lengkap untuk dua papan FTD.

Perangkat Thread Minimal Opsional: Jika ingin menjelajahi perangkat akhir yang tidak aktif, bukan Perangkat Thread Lengkap, Anda dapat mem-flash ot-cli-mtd.out sebagai pengganti ot-cli-ftd.out di Board 2 dan 3. MTD tidak merutekan traffic Thread dan dapat memasuki status tidur berdaya rendah, sehingga sangat cocok untuk aplikasi yang menggunakan daya baterai. Langkah-langkah pembentukan jaringan Thread dalam codelab ini sama untuk kedua jenis perangkat.

Network Co-Processor (NCP) Opsional: Biner ot-ncp-ftd.out mengimplementasikan arsitektur NCP, dengan stack OpenThread berjalan di perangkat dan prosesor host menggerakkannya melalui protokol Spinel. Penggunaan NCP berada di luar cakupan codelab ini. Lihat README NCP untuk mengetahui detailnya.

5. Flash Firmware

Gunakan TI UniFlash untuk mem-flash image ELF ke papan LaunchPad.

Mem-flash menggunakan UniFlash

  1. Buka UniFlash. Board LaunchPad yang terhubung ditampilkan di bagian Detected Devices karena fitur deteksi perangkat otomatis.Jika board Anda tidak terdeteksi secara otomatis, klik New Configuration, pilih target LP-EM-CC2745R10-Q1, lalu pilih probe debug USB XDS110.Perangkat yang Terdeteksi UniFlash
  2. Pilih Board 1 (yang akan di-flash dengan ot-rcp.out), lalu klik Start.
  3. Klik tombol Browse dan buka ot-ti/build/bin/ot-rcp.out.Halaman Flash UniFlash
  4. Klik Load Image untuk mem-flash firmware. Area log menampilkan progres dan mengonfirmasi penyelesaian.
  5. Ulangi langkah 2–4 untuk Board 2 dan Board 3, dengan memilih ot-ti/build/bin/ot-cli-ftd.out untuk masing-masing papan.

Alternatif: Lakukan flashing menggunakan Code Composer Studio (CCS)

Code Composer Studio dapat digunakan sebagai alternatif UniFlash, dan juga menyediakan lingkungan debug lengkap:

  1. Download dan instal Code Composer Studio.
  2. Buat koneksi target (CCXML) untuk LP-EM-CC2745R10-Q1 dengan debugger XDS110. Lihat Panduan Pengguna CCS: Metode Manual.
  3. Mulai sesi debug tanpa project seperti yang dijelaskan dalam CCS User's Guide: Manual Launch.
  4. Hubungkan ke inti Arm Cortex-M33, lalu klik Load untuk memuat image ELF.

Konfigurasi CCXML default menggunakan cJTAG 2-kawat agar sesuai dengan konfigurasi jumper LP-EM-CC2745R10-Q1 default. Setelah memprogram melalui JTAG, lakukan siklus daya pada board untuk menghapus tanda berhenti saat booting.

6. Memprogram HSM

CC2745R10-Q1 berisi Modul Keamanan Hardware (HSM) yang harus disediakan sebelum menjalankan Thread atau firmware aplikasi aman lainnya. Jika board LP-EM-CC2745R10-Q1 Anda belum diprogram HSM-nya, selesaikan langkah ini sekarang.

Untuk memprogram HSM menggunakan UniFlash:

  1. Buka UniFlash dan pilih board LP-EM-CC2745R10-Q1 Anda dari Detected Devices.
  2. Buka panel pemrograman HSM dan muat image firmware HSM seperti yang ditunjukkan di bawah.

Pemrograman HSM UniFlash

  1. Ikuti perintah di layar untuk menyelesaikan penyediaan HSM. Operasi dicatat di konsol output UniFlash.

Lihat Panduan Memulai Cepat CC2745R10-Q1 di TI Resource Explorer untuk mengetahui prosedur pemrograman HSM lengkap, termasuk jalur image firmware yang diperlukan dalam SimpleLink Low Power F3 SDK.

7. Ringkasan Firmware

Pada tahap ini, ketiga papan harus di-flash:

  • Board 1: ot-rcp.out: Putuskan koneksi dari komputer host dan hubungkan ke Raspberry Pi melalui USB.
  • Papan 2: ot-cli-ftd.out: Tetap terhubung ke komputer host.
  • Papan 3: ot-cli-ftd.out: Tetap terhubung ke komputer host.

Penyiapan hardware Anda akan terlihat seperti diagram di bawah. Board 1 terhubung ke Raspberry Pi sebagai co-prosesor radio untuk OTBR, sedangkan Board 2 dan 3 tetap terhubung ke komputer host untuk akses konsol serial.

Penyiapan Hardware CC2745R10 dengan FTD

8. Menyiapkan Konsol Serial untuk Perangkat ot-cli-ftd

LP-EM-CC2745R10-Q1 mengekspos UART aplikasi melalui USB pada 921600 baud.

Buka terminal serial ke port COM UART Aplikasi (Windows) atau perangkat /dev/ttyACM* (Linux/macOS) untuk setiap papan FTD menggunakan setelan berikut:

Parameter

Nilai

Kecepatan (baud)

921600

Bit data

8

Bit berhenti

1

Paritas

None

Kontrol alur

None

Tips (Linux/macOS): Identifikasi node perangkat yang benar dengan menjalankan ls /dev/ttyACM* sebelum dan setelah mencolokkan board, lalu perhatikan entri mana yang muncul. Setiap LP-EM-CC2745R10-Q1 membuat dua entri: port bernomor lebih rendah adalah XDS110 debug UART dan port bernomor lebih tinggi adalah Application UART. Misalnya, jika papan membuat /dev/ttyACM0 dan /dev/ttyACM1, gunakan /dev/ttyACM1.

Tips (Windows): Buka Pengelola Perangkat dan lihat di bagian Ports (COM & LPT) untuk melihat dua port COM baru saat board dicolokkan. Port data debug XDS110 biasanya muncul terlebih dahulu, gunakan port COM kedua (bernomor lebih tinggi) untuk konsol aplikasi.

Tekan Enter di terminal untuk mendapatkan prompt CLI OpenThread (>). Untuk daftar lengkap perintah yang tersedia, lihat Referensi CLI OpenThread. Verifikasi bahwa FTD beroperasi:

> state
disabled
Done

FTD Terminal Serial

Anda belum akan menyiapkan konsol serial untuk papan RCP. OTBR di Raspberry Pi berkomunikasi langsung dengan RCP. Pada langkah berikutnya, Anda akan mengonfigurasi Raspberry Pi sebagai Router Batas OpenThread.

9. Menyiapkan Raspberry Pi sebagai Border Router

OTBR dibangun dari ot-br-posix, project OpenThread Border Router open source. Border Router berjalan di Raspberry Pi dan menggunakan Board 1 (RCP) sebagai radio 802.15.4 melalui USB.

Penyiapan Raspberry Pi

  1. Flash Raspberry Pi OS (64-bit Lite atau Desktop) ke kartu SD Anda menggunakan Raspberry Pi Imager.
  2. Boot Raspberry Pi dan buka terminal (melalui SSH atau secara langsung).
  3. Update pengelola paket dan upgrade paket yang diinstal:
    $ sudo apt-get update
    $ sudo apt-get upgrade -y
    

Mulai ulang Raspberry Pi setelah update sebelum melanjutkan: sudo reboot

Hubungkan Board 1 (RCP) ke Raspberry Pi

Hubungkan Board 1 (yang di-flash dengan ot-rcp) ke Raspberry Pi melalui USB mikro. Setelah koneksi, verifikasi apakah node perangkat muncul:

$ ls /dev/ttyACM*
/dev/ttyACM0
/dev/ttyACM1

UART Aplikasi pada papan RCP biasanya /dev/ttyACM1 (UART debug XDS110 adalah /dev/ttyACM0). Verifikasi port mana yang merupakan UART aplikasi dengan memeriksa apakah port tersebut merespons saat agen OTBR dimulai pada langkah berikutnya. Jika perangkat serial USB lain terhubung, nomor node perangkat mungkin berbeda. Sesuaikan jalur dalam konfigurasi OTBR dengan tepat.

Membangun dan Menginstal ot-br-posix

Di Raspberry Pi, clone dan bangun ot-br-posix:

$ git clone https://github.com/openthread/ot-br-posix.git
$ cd ot-br-posix
$ ./script/bootstrap

Jalankan skrip penyiapan, dengan menentukan antarmuka Ethernet Anda sebagai antarmuka backbone (infrastruktur):

$ INFRA_IF_NAME=eth0 ./script/setup

eth0 adalah nama umum untuk antarmuka Ethernet berkabel. Jika Anda menghubungkan Raspberry Pi melalui Wi-Fi, bukan Ethernet, ganti eth0 dengan wlan0 (dan pastikan Pi sudah terhubung ke jaringan Wi-Fi Anda). Verifikasi nama antarmuka aktif dengan ip link show.

Skrip penyiapan membangun ot-br-posix dari sumber, menginstal layanan sistem otbr-agent dan otbr-web, serta mengonfigurasi stack jaringan. Proses ini biasanya memerlukan waktu 10–20 menit di Raspberry Pi 4B.

Mengonfigurasi Agen OTBR

Edit file konfigurasi agen OTBR untuk menentukan jalur perangkat RCP dan kecepatan transfer data:

$ sudo nano /etc/default/otbr-agent

Temukan baris OTBR_AGENT_OPTS dan perbarui untuk mereferensikan RCP Application UART:

OTBR_AGENT_OPTS="-I wpan0 -B eth0 spinel+hdlc+uart:///dev/ttyACM1?uart-baudrate=921600"

Ganti eth0 dengan wlan0 jika Raspberry Pi Anda terhubung melalui Wi-Fi.

OTBR_AGENT_OPTS="-I wpan0 -B wlan0 spinel+hdlc+uart:///dev/ttyACM1?uart-baudrate=921600"

LP-EM-CC2745R10-Q1 RCP Application UART beroperasi pada 921600 baud. Pastikan jalur perangkat (/dev/ttyACM1 dalam contoh ini) cocok dengan UART Aplikasi pada papan RCP Anda.

Mulai ulang agen OTBR untuk menerapkan konfigurasi:

$ sudo systemctl restart otbr-agent
$ sudo systemctl enable otbr-agent

Pastikan agen sedang berjalan:

$ sudo systemctl status otbr-agent

Berinteraksi dengan Node RCP

Berkomunikasi dengan node RCP menggunakan alat ot-ctl:

$ sudo ot-ctl state
disabled
Done

Anda dapat memantau log agen OTBR untuk pesan koneksi dan status:

$ sudo journalctl -u otbr-agent -f

Jika perlu, antarmuka web OTBR tersedia di http://:80 dan memberikan tampilan grafis jaringan Thread.

Untuk menghentikan atau memulai ulang agen OTBR:

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

Pada tahap ini, Anda akan memiliki tiga konsol aktif:

  1. Terminal serial untuk Board 2 (ot-cli-ftd 1) di komputer host.
  2. Terminal serial untuk Board 3 (ot-cli-ftd 2) di komputer host.
  3. Sesi SSH atau terminal di Raspberry Pi untuk ot-ctl (OTBR/RCP).

Sekarang Anda siap membentuk jaringan Thread.

10. Membuat Jaringan Thread

Menyiapkan RCP (OTBR)

Buat jaringan Thread baru dari shell ot-ctl di Raspberry Pi. Masukkan perintah berikut secara berurutan:

Indeks

Perintah

Deskripsi

Respons yang Diharapkan

1

dataset init new

Buat konfigurasi jaringan baru.

Selesai

2

dataset commit active

Lakukan penerapan set data baru ke Set Data Operasional Aktif.

Selesai

3

ifconfig up

Aktifkan antarmuka Thread.

Selesai

4

thread start

Aktifkan dan lampirkan operasi protokol Thread.

Selesai

Tunggu 10 detik hingga antarmuka Thread muncul.

5

state

Periksa status perangkat. Harus berupa leader. Kemungkinan status lainnya: offline, dinonaktifkan, terlepas, turunan, router, atau pemimpin.

pemimpin
Selesai

6

dataset

Melihat konfigurasi jaringan. Nilai Anda akan berbeda. Catat channel, kunci jaringan, nama jaringan, dan PAN ID — informasi ini diperlukan untuk bergabung dengan FTD ke jaringan.

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

Menambahkan FTD ke Jaringan Thread (Metode Out-of-Band)

Dengan metode aktivasi di luar band, Anda memberikan kredensial jaringan secara langsung. Di terminal serial untuk setiap papan FTD, masukkan perintah berikut menggunakan kunci jaringan dan saluran dari output set data OTBR di atas:

Indeks

Perintah

Deskripsi

Respons yang Diharapkan

1

dataset channel 20

Setel channel agar cocok dengan OTBR. Ganti 20 dengan nilai saluran OTBR Anda.

Selesai

2

dataset networkkey 81ae2c2c17368d585dee71eaa8cf1e90

Tetapkan kunci jaringan. Ganti dengan kunci jaringan OTBR Anda. Hanya kunci ini yang diperlukan untuk melampirkan.

Selesai

3

dataset commit active

Lakukan penerapan set data baru ke Set Data Operasional Aktif.

Selesai

4

ifconfig up

Aktifkan antarmuka Thread.

Selesai

5

thread start

Mengaktifkan dan melampirkan operasi protokol Thread.

Selesai

Tunggu 20 detik saat perangkat bergabung dan mengonfigurasi dirinya sendiri.

6

state

Periksa status perangkat.

child
Selesai

Karena sifat jaringan Thread yang dapat dikonfigurasi sendiri dan perangkat ini adalah Perangkat Thread Lengkap, salah satu atau kedua FTD pada akhirnya dapat menjadi router. Anda dapat memverifikasi peran saat ini kapan saja dengan perintah state.

Komunikasi Antara Perangkat Thread

Gunakan perintah ping untuk memverifikasi bahwa perangkat dapat berkomunikasi. Dapatkan alamat IPv6 setiap perangkat dengan 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

Dari kedua FTD, ping OTBR menggunakan alamat RLOC-nya:

> 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

Respons yang berhasil mengonfirmasi bahwa jaringan Thread beroperasi dan perangkat dapat berkomunikasi. Ulangi proses untuk melakukan ping ke setiap FTD dari OTBR (sudo ot-ctl ping ).

11. Selamat

Anda telah membuat jaringan Thread dengan papan TI CC2745R10-Q1.

Sekarang Anda tahu:

  • Cara menyiapkan lingkungan build ot-ti Texas Instruments.
  • Cara membuat dan mem-flash biner OpenThread CLI ke LP-EM-CC2745R10-Q1 LaunchPad.
  • Cara menyiapkan Raspberry Pi sebagai OpenThread Border Router (OTBR) menggunakan ot-br-posix.
  • Cara membuat jaringan Thread di OTBR.
  • Penyiapan out-of-band perangkat ke jaringan Thread.
  • Cara memverifikasi komunikasi Thread antar-node menggunakan perintah ping.

Bacaan Lebih Lanjut

Lihat openthread.io dan GitHub untuk berbagai referensi OpenThread, termasuk: