1. Pengantar
OpenThread (OT) Google adalah implementasi open source untuk Thread. Google telah merilis OpenThread agar teknologi jaringan yang digunakan dalam produk Google Nest tersedia secara lebih luas bagi developer, guna mempercepat pengembangan produk untuk bangunan rumah dan komersial yang terhubung. Dengan lapisan abstraksi platform yang sempit dan jejak memori yang kecil, OpenThread sangat portabel. Aplikasi ini mendukung desain sistem-di-chip (SoC) dan co-processor jaringan (NCP).
Spesifikasi Thread mendefinisikan protokol komunikasi perangkat ke perangkat nirkabel yang andal, aman, dan berdaya rendah dari IPv6 untuk aplikasi gedung rumah dan komersial.
Silicon Labs telah meningkatkan OpenThread agar berfungsi dengan hardware Silicon Labs. Kode sumber ini tersedia di GitHub dan juga sebagai software development kit (SDK) yang diinstal dengan Simplicity Studio 5 (SSv5). SDK menyertakan snapshot kode sumber GitHub yang telah diuji sepenuhnya. Ini mendukung lebih banyak hardware daripada versi GitHub, serta menyertakan dokumentasi dan aplikasi contoh yang tidak tersedia di GitHub.
Panduan ini menjelaskan cara mulai mengembangkan aplikasi OpenThread menggunakan Silicon Labs OpenThread SDK dan Simplicity Studio 5. Gambar di bawah menunjukkan board (BRD) dan hardware yang disiapkan dengan OT Border Router (OTBR) dan dua perangkat Thread yang digunakan dalam codelab.
Yang akan Anda pelajari
- Cara membuat project OpenThread menggunakan IDE Studio Simply Studio Silicon.
- Cara membuat dan melakukan flash biner OpenThread CLI ke board radio Silicon Labs.
- Cara menyiapkan Raspberry Pi 3B+ atau yang lebih besar sebagai OpenThread Border Router (OTBR) menggunakan Docker.
- Cara membuat jaringan Thread di OTBR.
- Pembuatan perangkat di luar jaringan ke jaringan Thread.
- Cara memverifikasi komunikasi Thread di antara node menggunakan perintah ping.
2. Prasyarat
Perangkat keras:
- 3 Papan radio EFR32MGxx - kombinasi perangkat apa pun yang dapat digunakan. Codelab ini menggunakan BRD4166A sebagai RCP dan dua BRD4168As sebagai Perangkat Thread Penuh.
- EFR32MG12 (BRD4161A, BRD4166A, BRD4170A, BRD4304A)
- EFR32MG13 (BRD4168A)
- EFR32MG21 (BRD4180A, BRD4180B)
- BRD4001A: Papan utama starter nirkabel (WSTK) untuk menghosting papan radio. Kecuali untuk BRD4166A, semua papan radio memerlukan papan utama awal. Kabel USB mini untuk menghubungkan dan menyalakan papan utama atau kabel USB mikro untuk BRD4166A.
- Raspberry Pi 3B+ atau yang lebih besar dengan image Raspbian Span Lite OS atau Raspbian Span with Desktop yang terhubung ke internet melalui Ethernet. Kami mengonfigurasi ini sebagai Router Batas OT.
- Sistem Host Windows/Linux/Mac dengan minimal 2 port USB dan koneksi internet. Periksa persyaratan hardware dan OS di SSv5.
- Minimal satu kabel Ethernet untuk menghubungkan Raspberry Pi ke internet. WSTK juga mendukung debug dan flashing melalui IP sehingga, secara opsional, kabel Ethernet tambahan dapat digunakan untuk menghubungkan WSTK ke sistem host Anda melalui Switch Ethernet.
Software:
- Simply Studio v5 diinstal dan diupdate di sistem Host Windows/Linux/Mac dengan
- Toolchain ARM GNU
- Gecko SDK Suite 3.2.0 atau versi yang lebih baru dan Silicon Labs OpenThread SDK.
3. Penyiapan hardware
Codelab ini dibuat menggunakan
- EFR32MG12 BRD4166A Thunderboard Sense 2 seperti yang ditunjukkan di sebelah kiri.
- Dua EFR32MG13 BRD4168A seperti yang ditunjukkan di sebelah kanan.
- Simply Studio v5 diinstal di macOS Catalina 10.15.7 dengan
- Gecko SDK 3.2.0
- GNU ARM v7.2.1
Hubungkan setiap board utama Wireless Starter Kit ke komputer host menggunakan USB seperti yang ditunjukkan pada gambar di bawah. Koneksi ini akan memungkinkan analisis pemrograman dan jaringan pada RCP dan perangkat akhir. Pertama-tama kita akan menggunakan komputer host untuk memprogram BRD4166A dengan firmware ot-rcp dan akhirnya menghubungkannya ke Raspberry Pi. Secara opsional, perangkat akhir dapat dihubungkan ke komputer host melalui tombol Ethernet umum. Starter kit juga mendukung pemrograman dan analisis jaringan melalui IPv4.
4. Penyiapan firmware
Ada dua cara untuk memulai. Kedua opsi tersebut memungkinkan Anda mem-flash firmware yang diperlukan untuk codelab ini.
- Project: (Direkomendasikan) Membuat, mem-build, dan mem-flash aplikasi sampel. Opsi ini memungkinkan Anda menyesuaikan aplikasi dalam project.ATAU
- Demo: (Opsional) Melakukan flash demo bawaan langsung di board radio untuk setiap aplikasi contoh. Pengguna disarankan untuk mencoba firmware Demo yang disiapkan sebagai latihan opsional. Lihat bagian "Penyiapan firmware opsional - Demo" di akhir codelab ini untuk mengetahui detailnya.
Kita akan menggunakan metode berbasis project untuk codelab ini.
Membuat project menggunakan contoh
Kita akan membuat dua project. Project ot-rcp
untuk BRD4166A dan project ot-cli-ftd
untuk dua BRD4168A. Ikuti langkah-langkah ini dan pilih aplikasi contoh yang sesuai untuk board Anda.
- Buka menu File Studio, lalu pilih New > Silicon Labs Project Wizard. Dialog Target, SDK, dan Pemilihan Toolchain akan terbuka. Jangan ubah toolchain Simply IDE / G GNU yang didukung oleh OpenThread. Klik Berikutnya.
- Papan target: Menampilkan papan radio yang dipilih (BRD4168A) beserta papan utama (BRD4001A)
- Perangkat Target: Kolom ini menunjukkan chip mikrokontroler (MCU) onboard. BRD4168A memiliki ECU3FRMG13 MCU onboard.
- SDK: Di sini Anda dapat memilih versi SDK OT yang bekerja sama dengan Anda. Informasi suite mencakup tag SDK dan build Silicon Labs OpenThread, misalnya
Platform 4.0.1.0
danOpenThread 2.0.1.0 (GitHub-55af6ce2c)
. - IDE/ Toolchain: Toolchain yang akan digunakan untuk mengompilasi project OT. Kami menggunakan GNU ARM.
- Dialog Example Project Selection akan terbuka. Anda akan melihat daftar Contoh project. Gunakan jenis Teknologi Thread dan filter kata kunci untuk menelusuri contoh tertentu. Pastikan untuk mencatat nomor versi Gecko SDK Suite. Anda memerlukan tag versi ini saat menyiapkan Raspberry Pi sebagai Border Router. Pilih ot-cli-ftd, lalu klik NEXT.
- Dialog Konfigurasi Project akan terbuka. Di sini Anda dapat mengganti nama project, mengubah lokasi file project default, dan menentukan apakah Anda akan menautkan ke atau menyalin file project. File project tertaut mengarah ke SDK dan perubahan apa pun yang Anda buat akan dibuat di SDK dan digunakan untuk project mendatang. Dengan menyalin sumber project, Anda dapat mengedit salinan lokal project agar file SDK tetap utuh. 'Tautkan SDK dan salin sumber project' adalah pilihan default dan yang direkomendasikan. Klik SELESAI.
- Perspective IDE Perspektif terbuka dengan Project Configurator yang terbuka ke tab RINGKASAN.
Project dikonfigurasi dari tab Komponen Software dengan menginstal dan meng-uninstal komponen, serta mengonfigurasi komponen yang terinstal. Komponen yang diinstal akan diperiksa. Klik Komponen Terinstal untuk melihat daftar komponen yang difilter yang diinstal oleh aplikasi contoh. Setiap perubahan yang Anda buat akan disimpan secara otomatis, dan file project akan otomatis dibuat. Progres ditampilkan di sudut kanan bawah perspektif IDE Kesederhanaan.
Untuk demo ini, kita akan menggunakan konfigurasi default aplikasi contoh. Ulangi langkah-langkah di atas guna membuat project ot-rcp
untuk board Anda yang lain.
Mem-build dan melakukan flash project
Mem-build dan mem-flash project ot-rcp
dan ot-cli-ftd
.
- Setelah project dikonfigurasi, klik Kontrol build (ikon palu) di toolbar bagian atas. Atau, Anda dapat mengklik kanan project tersebut dan mengklik build project.
- Progres ditampilkan di Konsol dan status progres di kanan bawah. Setiap error atau peringatan yang terkait dengan project Anda juga akan muncul di jendela output ini.
- Image biner dibuat setelah project berhasil dibuat. Anda dapat mem-flash image biner dari tampilan Project Explorer. Temukan file .bin, .hex, atau .s37 di subdirektori compiler. Klik kanan file, lalu pilih Flash ke Perangkat. Jika Anda memiliki lebih dari satu perangkat yang terhubung, pilih perangkat yang akan diprogram, klik Oke. Programmer Flash akan terbuka dengan jalur file yang terisi. Klik PROGRAM.
5. Ringkasan penyiapan firmware
Pada tahap ini, Anda seharusnya telah membuat, mengompilasi, dan mem-flash firmware yang sesuai di board radio. Setelah ot-rcp
di-flash ke BRD4166A, putuskan koneksinya dari sistem host lalu hubungkan board ini ke Raspberry Pi.
Setelah menyelesaikan bagian ini, penyiapan hardware jaringan Thread Anda akan terlihat seperti ini.
6. Menyiapkan konsol Serial untuk perangkat ot-cli-ftd
Untuk meluncurkan antarmuka Console, dalam perspektif IDE Kepraktisan klik kanan pada perangkat J-Link Anda di Jendela View Perangkat / Adaptor Adaptor. Pilih Luncurkan Konsol. Untuk mendapatkan perintah di Console, pilih tab Serial 1 dan tekan Enter. Periksa status node FTD.
Anda akan melihat bahwa kami belum memiliki konsol untuk ot-rcp
. Pada langkah berikutnya, kita akan mengonfigurasi Raspberry Pi sebagai router pembatas OT dan menyiapkan konsol untuk ot-rcp
.
7. Menyiapkan Raspberry Pi sebagai Border Router
Silicon Labs merekomendasikan untuk men-deploy container Docker perusahaan dengan OTBR. Menjalankan OTBR dalam container memungkinkan pembuatan artefak yang mudah di-deploy, serta pembuatan prototipe dan pengujian pengembangan yang cepat.
Image OTBR Silicon Labs dihosting di siliconlabsinc DockerHub, dengan tag. Setiap tag sesuai dengan versi GSDK:
https://hub.docker.com/r/siliconlabsinc/openthread-border-router/tags
Container Docker harus digunakan dengan RCP yang di-build menggunakan Simplicity Studio 5 untuk rilis tertentu. Pastikan untuk mencocokkan versi tag container dengan versi GSDK yang Anda uji. Misalnya, jika versi GDSK Anda adalah Gecko SDK Suite v4.0.1 (140)
saat Anda memilih ot-rcp
dari jendela Example Project Selection, gunakan gambar siliconlabsinc/openthread-border-router:gsdk-4.0.1
.
Penyiapan Raspberry Pi
- Di kartu SD, pastikan Anda mem-flash image Raspbian Span Lite OS atau Raspbian Span dengan Desktop.
- Anda dapat menjalankan SSH ke Raspberry Pi atau memilih untuk bekerja menggunakan Desktop Raspbian secara langsung. Buka terminal.
- Pastikan Anda mengupdate repositori lokal dan pengelola paket Anda (apt-get update dan apt-get upgrade sebelum menginstal Docker).
Menginstal image Docker
- Instal Docker dengan perintah berikut di RPi.
curl -sSL https://get.docker.com | sh
- Setelah selesai, Anda dapat mengubah setelan pengguna Docker agar tidak memerlukan sudo sebelum setiap perintah. Perlu memulai ulang.
sudo usermod -aG docker $USER
- Berikan perintah berikut untuk menginstal container. Perhatikan bahwa Anda hanya dapat memiliki satu penampung Router Border yang berjalan pada satu waktu dengan RCP. Selain itu, pastikan Anda mencocokkan versi Simplicity Studio GSDK dengan image Docker yang benar. Misalnya,
gsdk-4.0.1
.docker pull siliconlabsinc/openthread-border-router:gsdk-4.0.1
Mengonfigurasi dan menjalankan docker
- Anda perlu mengonfigurasi port TTY yang ingin digunakan untuk OTBR guna menghubungkan RCP saat startup. Cari port TTY perangkat RCP Anda. Cara termudah untuk melakukannya adalah dengan mencari entri
/tty/dev
... setelah RCP terhubung. Nilai ini biasanya harus/dev/ttyUSB0
atau/dev/ttyACM0
. - Jalankan penginstalan Docker dengan perintah berikut. Pastikan untuk mengganti nama image Docker dengan versi GSDK yang cocok. Misalnya,
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
memastikan bahwa container berjalan dalam mode terpisah.- Anda dapat melihat log yang berjalan untuk container kapan saja menggunakan perintah
docker logs
. --name
melekat hingga penampung docker ditutup dengan benar (atau dilepas).- Port 8080 menunjukkan port server web yang menghosting halaman web pengelolaan Border Router.
?uart-baudrate=460800
diperlukan dalam opsi URL radio untuk mengatasi masalah fragmentasi / perakitan ulang melalui UART, dengan operasi yang mahal seperti DTLS dengan paket IPv6 yang panjang.
Berinteraksi dengan node RCP
Setelah docker berjalan, Anda dapat berkomunikasi dengan node RCP melalui shell interaktif menggunakan perintah ini. Periksa status node RCP.
$ docker exec -ti otbr sh -c "sudo ot-ctl" > state disabled Done
Anda bisa mendapatkan daftar ID penampung yang berjalan
$ docker ps -aq
Anda dapat memeriksa jendela yang menjalankan container Docker OTBR untuk menjalankan output log Border Router atau mengikuti log container seperti berikut:
$ docker logs [container-id] -f
Secara opsional, Anda dapat menghentikan, menghapus, atau menghentikan gambar jika penampung docker dimuat dengan benar.
$ docker stop otbr
$ docker rm otbr
$ docker kill otbr
Opsional: Untuk keluar dari shell, gunakan CNTL + C.
Pada tahap ini, Anda seharusnya memiliki 3 konsol.
- Dua konsol
ot-cli-ftd
di Simply Studio yang disiapkan sebagai perangkat Thread Lengkap. - Satu shell interaktif
ot-ctl
pada Raspberry Pi yang disiapkan sebagai router pembatas OT.
Sekarang kita siap membentuk jaringan Thread.
8. Membuat jaringan Thread
Menyiapkan RCP
Untuk membuat jaringan, kita mulai dengan shell ot-ctl
di OTBR yang digunakan untuk berkomunikasi dengan node RCP. Masukkan perintah berikut sesuai urutan yang ditunjukkan di bawah ini:
Indeks | Perintah | Deskripsi perintah | Respons yang Diharapkan | ||
1 |
| Buat konfigurasi jaringan baru. | Selesai | ||
2 |
| Meng-commit set data baru ke Set Data Operasional Aktif. | Selesai | ||
3 |
| Mengaktifkan antarmuka Thread. | Selesai | ||
4 |
| Mengaktifkan dan melampirkan operasi protokol Thread. | Selesai | ||
Tunggu 10 detik sampai antarmuka thread aktif. | |||||
5 |
| Periksa status perangkat. Harus berada di posisi teratas. | Pemimpin | ||
6 |
| Lihat konfigurasi jaringan. | Stempel Waktu Aktif: 1 |
Kita akan menggunakan nomor saluran dan kunci jaringan di ot-cli-ftd
untuk menggabungkan dua FTD ke jaringan thread ini.
Menyiapkan dan menambahkan FTD ke jaringan Thread kami (metode di luar band)
Dengan metode out-of-band, kita mengetahui semua informasi keamanan dan menambahkan node secara manual. Di konsol Kepraktisan, tambahkan kedua FTD ke jaringan kami menggunakan perintah berikut sesuai urutan yang ditunjukkan di bawah.
Indeks | Perintah | Deskripsi perintah | Respons yang Diharapkan | ||
1 |
| Setel saluran yang digunakan oleh OTBR. | Selesai | ||
2 |
| Hanya Kunci Jaringan yang diperlukan agar perangkat terpasang ke jaringan Thread. | Selesai | ||
3 |
| Meng-commit set data baru ke Set Data Operasional Aktif. | Selesai | ||
4 |
| Mengaktifkan antarmuka Thread. | Selesai | ||
5 |
| Mengaktifkan dan melampirkan operasi protokol Thread. | Selesai | ||
Tunggu 20 detik saat perangkat bergabung dan mengonfigurasi dirinya sendiri. | |||||
6 |
| Lihat konfigurasi jaringan. | anak |
Komunikasi antara perangkat Thread
Kita akan menggunakan perintah ping
untuk memeriksa apakah perangkat dapat saling berkomunikasi. Untuk menggunakan perintah ping, kita memerlukan alamat IPv6 dari perangkat. Ini dapat diperoleh menggunakan perintah 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)
Dari kedua FTD yang melakukan ping ke OTBR menggunakan alamat 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
Responsnya menunjukkan payload yang diterima dan bahwa komunikasi berhasil. Ulangi proses tersebut untuk melakukan ping ke FTD dari OTBR.
9. Selamat
Anda telah membuat jaringan Thread!
Sekarang Anda tahu:
- Cara membuat project OpenThread menggunakan IDE Studio Simply Studio Silicon.
- Cara membuat dan melakukan flash biner OpenThread CLI ke board radio Silicon Labs.
- Cara menyiapkan Raspberry Pi 3B+ atau yang lebih besar sebagai OpenThread Border Router (OTBR) menggunakan Docker.
- Cara membuat jaringan Thread di OTBR.
- Pembuatan perangkat di luar jaringan ke jaringan Thread.
- Cara memverifikasi komunikasi Thread di antara node menggunakan perintah ping.
Bacaan lebih lanjut
Lihat openthread.io dan GitHub untuk berbagai resource OpenThread, termasuk:
- Platform yang Didukung — temukan semua platform yang mendukung OpenThread
- Membuat OpenThread — detail lebih lanjut tentang cara membuat dan mengonfigurasi OpenThread
- Thread Primer — mencakup semua konsep Thread yang ditampilkan dalam Codelab ini
- Pelatihan OpenThread Silicon Labs— pengantar untuk OpenThread, membahas pemilihan komisi dan router pembatas, serta latihan langsung untuk membuat jaringan OpenThread.
- QSG170: Panduan Memulai Cepat OpenThread Silicon Labs— secara mendetail membahas proses memulai pengembangan Thread Silicon Labs
- AN1256: Menggunakan RCP Labs Silicon dengan Router Border OpenThread— Petunjuk Build dan Penginstalan untuk Host Router Border Raspberry Pi
10. Penyiapan firmware opsional - Demo
Demo adalah image firmware bawaan yang siap didownload ke perangkat yang kompatibel. Cara tercepat untuk menemukan apakah demo tersedia untuk bagian Anda di Simplicity Studio adalah dengan mengklik bagian Anda pada tampilan Adaptor Debug, lalu membuka tab CONTOH PROJECT & DEMOS di Perspective Peluncur. Nonaktifkan filter Project Contoh dan centang kotak centang Thread di bagian Jenis Teknologi.
Image aplikasi demo yang telah dikompilasi sebelumnya yang disediakan dengan OpenThread SDK kompatibel dengan board berikut:
- BRD4161a
- BRD4166a
- BRD4168a
- BRD4180
- BRD4.304a
Daftar ini dapat diperbarui di rilis SDK mendatang untuk menyertakan lebih banyak board radio. Lihat catatan rilis OpenThread SDK Silicon Labs di bagian Dokumentasi untuk mengetahui daftar lengkap bagian yang didukung.
Melakukan flash demo berikut di board masing-masing. Untuk mem-flash, pilih board Anda pada Debug Adapter di sebelah kiri dan klik RUN untuk aplikasi contoh yang sesuai. Jendela pop-up akan menampilkan progres flash.
- BRD4166A: ot-rcp — Perangkat ini akan berfungsi sebagai Prosesor Radio Co untuk Router OT Border. Kita akan menggunakan perangkat ini untuk membuat jaringan Thread dan mengaktivasi dua perangkat lainnya di jaringan Thread. Menjadi Border Router, perangkat ini juga berfungsi sebagai gateway bagi perangkat dalam jaringan Thread untuk berkomunikasi melalui internet.
- Dua BRD4168A: ot-cli-ftd — Kedua perangkat ini akan bertindak sebagai Perangkat Thread Lengkap. Mereka akan bergabung ke jaringan Thread yang dibuat oleh OTBR.