Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Membuat jaringan Thread dengan board Silicon Labs EFR32 dan OpenThread menggunakan Ssederhanay Studio v5

1. Pengantar

26b7f4f6b3ea0700.png

OpenThread (OT) Google adalah implementasi open source dari Thread. Google telah merilis OpenThread untuk menjadikan teknologi jaringan yang digunakan dalam produk Google Nest tersedia lebih luas bagi developer, guna mempercepat pengembangan produk untuk bangunan rumah dan komersial yang terhubung. Dengan lapisan abstraksi platform yang sempit dan jejak memori kecil, OpenThread sangat portabel. Mendukung sistem-on-chip (SoC) dan desain jaringan co-processor (NCP).

Spesifikasi Thread mendefinisikan protokol komunikasi perangkat-ke-perangkat nirkabel berbasis IPv6 yang dapat diandalkan, aman, dan rendah daya untuk aplikasi bangunan 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 Simply Studio 5 (SSv5). SDK menyertakan snapshot kode sumber GitHub yang telah diuji sepenuhnya. Library ini mendukung rangkaian hardware yang lebih luas daripada versi GitHub, dan menyertakan dokumentasi dan aplikasi contoh yang tidak tersedia di GitHub.

Panduan ini menjelaskan cara memulai pengembangan aplikasi OpenThread menggunakan Silicon Labs OpenThread SDK dan Simply 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.

Penyiapan Hardware EFR32MG

Yang akan Anda pelajari

  • Cara membuat project OpenThread menggunakan IDE Silicon Labs Simply Studio.
  • Cara membuat dan mem-flash biner CLI OpenThread ke board radio Silicon Labs.
  • Cara menyiapkan Raspberry Pi 3B+ atau yang lebih tinggi sebagai OpenThread Border Router (OTBR) menggunakan Docker.
  • Cara membuat jaringan Thread pada OTBR.
  • Penetapan perangkat di luar jaringan ke jaringan Thread.
  • Cara memverifikasi komunikasi Thread antara node menggunakan perintah ping.

2. Prasyarat

Perangkat keras:

  1. 3 papan radio EFR32MGxx - kombinasi apa pun dari perangkat ini dapat digunakan. Codelab ini menggunakan BRD4166A sebagai RCP dan dua BRD4168A sebagai Perangkat Thread Penuh.
    • EFR32MG12 (BRD4161A, BRD4166A, BRD4170A, BRD4304A)
    • EFR32MG13 (BRD4168A)
    • EFR32MG21 (BRD4180A, BRD4180B)
    Jika memulai dari awal, Anda bisa mendapatkan salah satu starter kit EFR32 Thread yang memiliki board yang tercantum di atas.
  2. 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.

AEM WSTK

  1. Raspberry Pi 3B+ atau yang lebih tinggi dengan gambar OS Raspbian Stretch Lite atau Raspbian Stretch dengan Desktop yang terhubung ke internet melalui Ethernet. Kami mengonfigurasi ini sebagai Router Perbatasan OT.
  2. Sistem Host Windows/Linux/Mac dengan minimal 2 port USB dan koneksi internet. Periksa persyaratan hardware dan OS di SSv5.
  3. Minimal satu kabel Ethernet untuk menghubungkan Raspberry Pi ke Internet. WSTK juga mendukung debug dan flash melalui IP, sehingga, secara opsional, kabel Ethernet tambahan dapat digunakan untuk menghubungkan WSTK ke sistem host Anda melalui Tombol Ethernet.

Perangkat lunak:

  • Simply Studio v5 diinstal dan diupdate pada sistem Host Windows/Linux/Mac dengan
    • Toolchain ARM GNU
    • Gecko SDK Suite 3.2.0 atau yang lebih baru dan Silicon Labs OpenThread SDK.

3. Penyiapan hardware

Codelab ini dibuat menggunakan

  1. EFR32MG12 BRD4166A Thunderboard Sense 2 seperti yang ditampilkan di sebelah kiri.
  2. Dua EFR32MG13 BRD4168A seperti yang ditunjukkan di sebelah kanan.
  3. Simply Studio v5 diinstal di macOS Catalina 10.15.7 dengan
    1. Gecko SDK 3.2.0
    2. GNU ARM v7.2.1

BRD4.168A

Sambungkan setiap board utama Wireless Starter Kit ke komputer host menggunakan USB seperti yang ditunjukkan pada gambar di bawah. Koneksi ini akan mengizinkan pemrograman dan analisis jaringan RCP dan perangkat akhir. Kami akan menggunakan komputer host terlebih dahulu untuk memprogram BRD4166A dengan firmware ot-rcp dan akhirnya menghubungkannya ke Raspberry Pi. Secara opsional, perangkat akhir dapat terhubung ke komputer host melalui tombol Ethernet umum. Starter kit juga mendukung analisis pemrograman dan jaringan melalui IPv4.

Koneksi

4. Penyiapan firmware

Ada dua cara untuk memulai. Kedua opsi ini memungkinkan Anda melakukan flash firmware yang diperlukan untuk codelab ini.

  1. Project: (Direkomendasikan) Membuat, mem-build, dan mem-flash aplikasi sampel. Opsi ini memungkinkan Anda menyesuaikan aplikasi dalam project.OR
  2. Demo: (Opsional) Mem-flash demo bawaan secara langsung di papan radio untuk semua aplikasi sampel. Pengguna dianjurkan untuk mencoba firmware Demo yang disiapkan sebagai latihan opsional. Lihat bagian "Penyiapan firmware opsional - Demo" di bagian akhir codelab ini untuk 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 ini dan pilih aplikasi contoh yang sesuai untuk board Anda.

  1. Buka menu File Studio lalu pilih New > Silicon Labs Project Wizard. Dialog Target, SDK, dan Toolchain akan terbuka. Jangan ubah toolchain Simply IDE / GNU default yang didukung oleh OpenThread. Klik Berikutnya.
    • Papan target: Menampilkan papan radio yang dipilih (BRD4168A) beserta papan utama (BRD4001A)
    • Perangkat Target: Kolom ini menunjukkan chip pengontrol mikro (MCU). BRD4168A memiliki MCU EFR32MG13 onboard.
    • SDK: Di sini Anda dapat memilih versi SDK OT yang sedang Anda gunakan. Informasi suite mencakup tag SDK dan build Silicon Labs OpenThread, misalnya Platform 4.0.1.0 dan OpenThread 2.0.1.0 (GitHub-55af6ce2c).
    • IDE/ Toolchain: Toolchain yang akan digunakan untuk mengompilasi project OT. Kami menggunakan GNU ARM.

Wizard project baru

  1. Dialog Contoh Project Selection akan terbuka. Anda akan melihat daftar project Contoh. Gunakan Jenis Teknologi Rangkaian Pesan dan filter kata kunci untuk menelusuri contoh tertentu. Pastikan Anda mencantumkan nomor versi Gecko SDK Suite. Anda akan memerlukan tag versi ini saat menyiapkan Raspberry Pi sebagai Border Router. Pilih ot-cli-ftd, lalu klik BERIKUTNYA.

Langkah 2 wizard project baru

  1. Dialog Project Configuration akan terbuka. Di sini Anda dapat mengganti nama project, mengubah lokasi file project default, dan menentukan apakah Anda akan menautkan 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. Menyalin sumber project memungkinkan Anda mengedit salinan lokal project agar file SDK tetap utuh. ‘Link sdk and copy project sources' adalah opsi default dan direkomendasikan. Klik SELESAI.

Langkah 3 wizard project baru

  1. Perspektif IDE Kesederhanaan terbuka dengan Project Configurator terbuka ke tab RINGKASAN.

Ringkasan project

Project dikonfigurasi dari tab Komponen Software dengan menginstal dan meng-uninstal komponen, serta mengonfigurasi komponen yang diinstal. Komponen yang terinstal diperiksa. Klik Komponen yang Diinstal untuk melihat daftar komponen yang diinstal oleh aplikasi contoh. Setiap perubahan yang Anda buat akan otomatis disimpan, dan file project akan dibuat secara otomatis. Progres ditampilkan di sudut kanan bawah perspektif IDE Kesederhanaan.

Komponen Software

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 Mem-flash project

Buat dan flash project ot-rcp dan ot-cli-ftd.

  1. Setelah project dikonfigurasi, klik Build build (hammer icon) di panel alat atas. Atau, Anda dapat mengklik kanan project tersebut dan mengklik project build.

Tombol build project

  1. Progres ditampilkan di Console dan status progres di kanan bawah. Setiap error atau peringatan yang terkait dengan project Anda juga akan muncul di jendela output ini.

Jendela output build project

  1. Image biner dihasilkan 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, lalu pilih perangkat untuk diprogram, klik Oke. Programmer Flash akan terbuka dengan jalur file yang diisi. Klik PROGRAM.

Flash

5. Ringkasan penyiapan firmware

Pada tahap ini, Anda seharusnya telah membuat, mengompilasi, dan mem-flash firmware yang sesuai di papan radio. Setelah ot-rcp di-flash ke BRD4166A, putuskan koneksinya dari sistem host dan hubungkan board ini ke Raspberry Pi.

Setelah menyelesaikan bagian ini, penyiapan hardware jaringan Thread Anda akan terlihat seperti ini.

Penyiapan EFR32MG

6. Siapkan konsol Serial untuk perangkat ot-cli-ftd

Untuk meluncurkan antarmuka Console, dalam perspektif IDE Kesederhanaan, klik kanan pada perangkat J-Link Anda di Jendela Tampilan Perangkat / Adaptor Debug. Pilih Luncurkan Konsol. Untuk mendapatkan perintah di Console, pilih tab Serial 1, lalu tekan Enter. Periksa status node FTD.

Tampilan Konsol FTD Studio

Anda akan melihat bahwa kami belum memiliki konsol untuk ot-rcp. Pada langkah berikutnya, kita akan mengonfigurasi Raspberry Pi sebagai router batas 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 yang cepat.

Gambar 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 dibuat menggunakan Simply Studio 5 untuk rilis tertentu. Pastikan untuk mencocokkan versi tag penampung dengan versi GSDK yang Anda uji. Misalnya, jika versi GDSK Anda adalah Gecko SDK Suite v4.0.1 (140) saat memilih ot-rcp dari jendela Example Project Selection, gunakan gambar siliconlabsinc/openthread-border-router:gsdk-4.0.1.

Versi GSDK

Penyiapan Raspberry Pi

  1. Pada kartu SD, pastikan Anda mem-flash gambar Raspbian Stretch Lite OS atau Raspbian Stretch dengan Desktop.
  2. Anda dapat menerapkan SSH ke Raspberry Pi atau memilih untuk menggunakan Desktop Raspbian Desktop secara langsung. Buka terminal.
  3. Pastikan untuk mengupdate repositori lokal dan pengelola paket (apt-get update dan apt-get upgrade sebelum menginstal Docker).

Menginstal image Docker

  1. Instal Docker dengan perintah berikut di RPi Anda.
    curl -sSL https://get.docker.com | sh
    
  2. Setelah selesai, Anda bisa memodifikasi pengaturan pengguna Docker untuk tidak memerlukan sudo sebelum tiap perintah. Perlu reboot.
    sudo usermod -aG docker $USER
    
  3. Jalankan perintah berikut untuk menginstal container. Perhatikan bahwa Anda hanya dapat menjalankan satu penampung Border Router pada satu waktu dengan RCP. Selain itu, pastikan untuk mencocokkan versi GSDK Simply Studio Anda dengan gambar Docker yang benar. Misalnya, gsdk-4.0.1:
    docker pull siliconlabsinc/openthread-border-router:gsdk-4.0.1
    

Mengonfigurasi dan menjalankan dok

  1. Anda harus mengonfigurasi port TTY yang ingin digunakan untuk OTBR guna menghubungkan RCP saat startup. Cari port TTY di perangkat RCP Anda. Cara termudah untuk melakukannya adalah dengan mencari entri /tty/dev... setelah RCP terhubung. URL tersebut secara umum harus /dev/ttyUSB0 atau /dev/ttyACM0.
  2. 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 container berjalan dalam mode terpisah.
    • Anda dapat melihat log yang berjalan untuk container kapan saja menggunakan perintah docker logs.
    • --name melekat hingga penampung dok tertutup 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

Jika ingin, 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 akan memiliki 3 konsol.

  1. Dua konsol ot-cli-ftd di Simply Studio yang disiapkan sebagai perangkat Full Thread.
  2. Satu shell interaktif ot-ctl pada Raspberry Pi yang disiapkan sebagai router batas OT.

Kini kita siap membentuk jaringan Thread.

8 Membuat jaringan Thread

Menyiapkan RCP

Untuk membuat jaringan, kita mulai dengan ot-ctl shell di OTBR yang digunakan untuk berkomunikasi dengan node RCP. Masukkan perintah berikut sesuai urutan berikut:

Indeks

Perintah

Deskripsi perintah

Respons yang Diharapkan

1

dataset init new

Buat konfigurasi jaringan baru.

Selesai

2

dataset commit active

Melakukan commit set data baru ke Set Data Operasional Aktif.

Selesai

3

ifconfig up

Mengaktifkan antarmuka Thread.

Selesai

4

thread start

Mengaktifkan dan melampirkan operasi protokol Thread.

Selesai

Tunggu 10 detik sampai antarmuka thread aktif.

5

state

Periksa status perangkat. Perangkat harus menjadi pemimpin.
Negara bagian lain yang memungkinkan: offline, dinonaktifkan, dilepas,
turunan, router, atau pemimpin

Pemimpin
Selesai

6

dataset

Lihat konfigurasi jaringan.
Nilai Anda akan berbeda dari codelab ini.
Catat saluran, kunci jaringan,
nama jaringan, dan ID PAN.

Stempel Waktu Aktif: 1
Channel: 20
Masker Saluran: 0x07fff800
ID PAN Ext: 39ba71f7fc367160
Awalan Lokal Mesh: fd5c:c6b:3a17:40b9::/64
Kebijakan Jaringan: 81ae2c2c1cccc#c4c
c8c9c8c
c8c9c
c

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, kami mengetahui semua informasi keamanan dan menambahkan node secara manual. Di konsol Kesederhanaan, tambahkan kedua FTD ke jaringan kami menggunakan perintah berikut sesuai urutan yang ditunjukkan di bawah.

Indeks

Perintah

Deskripsi perintah

Respons yang Diharapkan

1

dataset channel 20

Setel channel yang digunakan oleh OTBR.

Selesai

2

dataset networkkey 81ae2c2c17368d585dee71eaa8cf1e90

Hanya Kunci Jaringan yang diperlukan agar perangkat terhubung ke jaringan Thread.

Selesai

3

dataset commit active

Melakukan commit set data baru ke Set Data Operasional Aktif.

Selesai

4

ifconfig up

Mengaktifkan antarmuka Thread.

Selesai

5

thread start

Mengaktifkan dan melampirkan operasi protokol Thread.

Selesai

Tunggu selama 20 detik saat perangkat bergabung dan mengonfigurasi dirinya sendiri.

6

state

Lihat konfigurasi jaringan.

turunan
Selesai

Komunikasi antarperangkat Thread

Kita akan menggunakan perintah ping untuk memeriksa apakah perangkat dapat berkomunikasi satu sama lain. Untuk menggunakan perintah ping, kita perlu alamat IPv6 perangkat tersebut. 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, ping 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

Respons 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.

Anda sekarang tahu:

  • Cara membuat project OpenThread menggunakan IDE Silicon Labs Simply Studio.
  • Cara membuat dan mem-flash biner CLI OpenThread ke board radio Silicon Labs.
  • Cara menyiapkan Raspberry Pi 3B+ atau yang lebih tinggi sebagai OpenThread Border Router (OTBR) menggunakan Docker.
  • Cara membuat jaringan Thread pada OTBR.
  • Penetapan perangkat di luar jaringan ke jaringan Thread.
  • Cara memverifikasi komunikasi Thread antara node menggunakan perintah ping.

Bacaan lebih lanjut

Buka openthread.io dan GitHub untuk berbagai resource OpenThread, termasuk:

10. Penyiapan firmware opsional - Demo

Demo adalah gambar firmware bawaan yang siap didownload ke perangkat yang kompatibel. Cara tercepat untuk mengetahui apakah demo tersedia untuk bagian Anda di Simply Studio adalah dengan mengklik bagian Anda di tampilan Adaptor Debug, lalu membuka tab CONTOH PROJECTS &DEMOS di Perspektif Peluncur. Nonaktifkan filter Project Contoh dan centang kotak centang Thread di bawah Jenis Teknologi.

Demo studio

Gambar aplikasi demo prakompilasi yang disediakan dengan OpenThread SDK kompatibel dengan board berikut:

  1. BRD4.161a
  2. BRD4.166a
  3. BRD4168a
  4. BRD4.180a
  5. BRD4.304a

Daftar ini dapat diperbarui di rilis SDK mendatang untuk menyertakan lebih banyak board radio. Lihat catatan rilis OpenThread SDK Silicon Labs di bawah Documentation untuk daftar lengkap bagian yang didukung.

Lakukan flash demo berikut di board masing-masing. Untuk melakukan flash, pilih board di bawah Debug Adapters di sebelah kiri dan klik RUN untuk aplikasi contoh yang sesuai. Jendela pop-up akan menampilkan progres flash.

  1. BRD4166A: ot-rcp — Perangkat ini akan berfungsi sebagai Prosesor Radio Co ke Router OT Border. Kita akan menggunakan perangkat ini untuk membuat jaringan Thread dan mengaktifkan dua perangkat lain di jaringan Thread. Menjadi Border Router perangkat ini juga bertindak sebagai gateway bagi perangkat dalam jaringan Thread untuk berkomunikasi melalui internet.
  2. Dua BRD4168A: ot-cli-ftd — Kedua perangkat ini akan bertindak sebagai Perangkat Rangkaian Lengkap. Mereka akan bergabung dengan jaringan Thread yang dibuat oleh OTBR.