Membangun jaringan Thread dengan board EFR32 Silicon Labs dan OpenThread menggunakan Simplicity Studio v5

1. Pengantar

26b7f4f6b3ea0700.pngS

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

Spesifikasi Thread mendefinisikan protokol komunikasi perangkat-ke-perangkat nirkabel berbasis IPv6 yang andal, 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 Simplicity Studio 5 (SSv5). SDK menyertakan snapshot kode sumber GitHub yang telah diuji sepenuhnya. GitHub mendukung lebih banyak hardware daripada versi GitHub, dan 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 menampilkan 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 Simplicity Studio.
  • Cara membangun dan melakukan flash biner OpenThread CLI ke board radio Silicon Labs.
  • Cara menyiapkan Raspberry Pi 3B+ atau yang lebih baru sebagai OpenThread Border Router (OTBR) menggunakan Docker.
  • Cara membuat jaringan Thread di OTBR.
  • commissioning perangkat di luar band ke jaringan Thread.
  • Cara memverifikasi komunikasi Thread antara node menggunakan perintah ping.

2. Prasyarat

Perangkat keras:

  1. 3 papan radio EFR32MGxx - kombinasi dari perangkat ini dapat digunakan. Codelab ini menggunakan BRD4166A sebagai RCP dan dua BRD4168A sebagai Perangkat Full Thread.
    • EFR32MG12 (BRD4161A, BRD4166A, BRD4170A, BRD4304A)
    • EFR32MG13 (BRD4168A)
    • EFR32MG21 (BRD4180A, BRD4180B)
    Jika memulai dari awal, Anda bisa mendapatkan salah satu starter kit Thread EFR32 yang memiliki board yang tercantum di atas.
  2. BRD4001A: Wireless starter main board (WSTK) untuk menghosting papan radio. Kecuali untuk BRD4166A, semua board radio memerlukan papan utama starter. Kabel USB mini untuk menghubungkan dan memberi daya pada board utama atau kabel USB mikro untuk BRD4166A.

AEM WSTK

  1. Raspberry Pi 3B+ atau yang lebih baru dengan Raspbian Stretch Lite OS image atau Raspbian Stretch with Desktop yang terhubung ke internet melalui Ethernet. Kita mengonfigurasi ini sebagai {i> OT Border Router<i}.
  2. Sistem Host Windows/Linux/Mac yang memiliki 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 flashing melalui IP sehingga, secara opsional, kabel Ethernet tambahan dapat digunakan untuk menghubungkan WSTK ke sistem host Anda melalui Tombol Ethernet.

Software:

  • Simplicity Studio v5 diinstal dan diperbarui di sistem Host Windows/Linux/Mac dengan
    • Toolchain GNU ARM
    • 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. Simplicity Studio v5 diinstal di macOS Catalina 10.15.7 dengan
    1. Gecko SDK 3.2.0
    2. GNU ARM v7.2.1

BRD4168A

Hubungkan setiap board utama Wireless Starter Kit ke komputer host melalui USB seperti yang ditunjukkan pada gambar di bawah. Koneksi ini akan mengizinkan analisis pemrograman dan jaringan untuk RCP serta 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 terhubung ke komputer host melalui tombol Ethernet umum. Starter kit juga mendukung pemrograman dan analisis jaringan melalui IPv4.

Koneksi

4. Penyiapan firmware

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

  1. Project: (Direkomendasikan) Membuat, mem-build, dan mem-flash aplikasi contoh. Opsi ini memungkinkan Anda menyesuaikan aplikasi dalam project.OR
  2. Demo: (Opsional) Flash demo siap pakai langsung di board radio untuk aplikasi contoh apa pun. Pengguna sebaiknya mencoba firmware Demo yang disiapkan sebagai latihan opsional. Lihat "Penyiapan firmware opsional - Demo" di akhir codelab ini untuk mengetahui detailnya.

Kita akan menggunakan metode berbasis project untuk codelab ini.

Membuat proyek menggunakan contoh

Kita akan membuat dua project. Project ot-rcp untuk BRD4166A dan project ot-cli-ftd untuk kedua BRD4168A. Ikuti langkah-langkah ini dan pilih aplikasi contoh yang sesuai untuk papan Anda.

  1. Buka menu File Studio dan pilih New > Wizard Project Silicon Labs. Dialog Target, SDK, dan Toolchain Selection akan terbuka. Jangan ubah Simplicity IDE / Toolchain GNU default yang didukung oleh OpenThread. Klik Berikutnya.
    • Papan target: Menampilkan papan radio (BRD4168A) yang dipilih beserta papan utama (BRD4001A)
    • Perangkat Target: Kolom ini menampilkan chip mikrokontroler (MCU) yang ada di perangkat. BRD4168A memiliki EFR32MG13 MCU onboard.
    • SDK: Di sini Anda dapat memilih versi SDK OT yang sedang Anda gunakan. Informasi suite mencakup tag SDK dan build Silicon Labs dari 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 Pilihan Project akan terbuka. Anda akan melihat daftar Project Contoh. Gunakan Jenis Teknologi Rangkaian Pesan 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 Router Perbatasan. Pilih ot-cli-ftd, lalu klik BERIKUTNYA.

Langkah 2 wizard project baru

  1. Dialog Konfigurasi Project akan terbuka. Di sini Anda dapat mengganti nama proyek, mengubah lokasi {i>default<i} untuk {i>file<i} proyek, dan menentukan apakah Anda akan menautkan ke atau menyalin {i>file<i} proyek. File proyek yang ditautkan mengarah ke SDK dan setiap modifikasi yang Anda buat akan dibuat di SDK dan digunakan untuk proyek mendatang. Dengan menyalin sumber project, Anda dapat mengedit salinan lokal project sehingga file SDK tetap utuh. 'Tautkan SDK dan salin sumber project' adalah opsi default dan yang direkomendasikan. Klik SELESAI.

Langkah 3 wizard project baru

  1. Perspektif Simplicity IDE akan terbuka dengan Project Configurator yang terbuka di tab RINGKASAN.

Ringkasan project

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

Komponen Software

Untuk demo ini, kami akan menggunakan konfigurasi default dari contoh aplikasi. Ulangi langkah-langkah di atas untuk membuat project ot-rcp untuk board lainnya.

Membangun dan mem-flash project

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

  1. Setelah project Anda dikonfigurasi, klik Build control (ikon palu) di toolbar bagian atas. Atau, Anda dapat mengklik kanan pada project dan mengklik build project.

Tombol build project

  1. Progres ditampilkan di Konsol dan status progres di kanan bawah. Error atau peringatan apa pun yang terkait dengan project Anda juga akan muncul di jendela output ini.

Jendela output build project

  1. Gambar biner dihasilkan setelah project berhasil dibangun. Anda dapat mem-flash image biner dari tampilan Project Explorer. Temukan file .bin, .hex, atau .s37 di subdirektori compiler. Klik kanan file dan 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 telah terisi. Klik PROGRAM.

Flash

5. Ringkasan penyiapan firmware

Pada tahap ini, Anda seharusnya sudah membuat, mengompilasi, dan mem-flash firmware yang sesuai pada 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. Menyiapkan {i>Serial console <i}untuk perangkat ot-cli-ftd

Untuk meluncurkan antarmuka Console, di perspektif Simplicity IDE, klik kanan perangkat J-Link Anda di Jendela Devices View / Debug Adapters. Pilih Launch Console. Untuk mendapatkan perintah di Konsol, pilih tab Serial 1 dan tekan Enter. Periksa status node FTD.

Tampilan Konsol FTD Studio

Anda akan melihat bahwa kita 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 Router Perbatasan

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 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 dibangun menggunakan Simplicity Studio 5 untuk rilis tertentu. Pastikan untuk mencocokkan versi tag penampung dengan versi GSDK yang Anda gunakan dalam pengujian. 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. Di kartu SD, pastikan Anda melakukan flash Raspbian Stretch Lite OS image atau Raspbian Stretch dengan Desktop.
  2. Anda dapat menjalankan SSH ke Raspberry Pi atau memilih untuk bekerja dengan Raspbian Desktop secara langsung. Buka terminal.
  3. Pastikan Anda 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 dapat memodifikasi setelan pengguna Docker agar tidak memerlukan sudo sebelum setiap perintah. Perlu memulai ulang.
    sudo usermod -aG docker $USER
    
  3. Berikan perintah berikut untuk menginstal container. Perhatikan bahwa Anda hanya dapat memiliki satu container Router Batas yang berjalan pada satu waktu dengan RCP. Selain itu, pastikan untuk mencocokkan versi GSDK Simplicity Studio dengan image Docker yang benar. Misalnya, gsdk-4.0.1:
    docker pull siliconlabsinc/openthread-border-router:gsdk-4.0.1
    

Mengonfigurasi dan menjalankan Docker

  1. Anda harus mengonfigurasi port TTY yang ingin digunakan untuk OTBR guna menghubungkan RCP saat memulai. Cari port TTY perangkat RCP Anda. Cara termudah untuk melakukannya adalah dengan mencari entri /tty/dev... setelah RCP terhubung. Secara umum, kolom tersebut harus /dev/ttyUSB0 atau /dev/ttyACM0.
  2. Jalankan penginstalan Docker dengan perintah berikut. Pastikan untuk mengganti nama image Docker Anda 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 sedang berjalan untuk container kapan saja menggunakan perintah docker logs.
    • --name melekat hingga container Docker ditutup dengan benar (atau dilepas).
    • Port 8080 menunjukkan port server web yang menghosting halaman web pengelolaan Router Perbatasan.
    • ?uart-baudrate=460800 diperlukan dalam opsi URL radio untuk mengatasi masalah fragmentasi / assembly 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 mematikan image jika container Docker dimuat dengan benar.

$ docker stop otbr
$ docker rm otbr
$ docker kill otbr

Opsional: Untuk keluar dari shell, gunakan CNTL + C.

Saat ini, Anda seharusnya memiliki 3 konsol.

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

Sekarang kita siap membentuk jaringan Thread.

8. Membuat jaringan Thread

Siapkan RCP

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

Indeks

Perintah

Deskripsi perintah

Respons yang Diharapkan

1

dataset init new

Buat konfigurasi jaringan baru.

Selesai

2

dataset commit active

Meng-commit set data baru ke Set Data Operasional yang Aktif.

Selesai

3

ifconfig up

Aktifkan antarmuka Thread.

Selesai

4

thread start

Mengaktifkan dan melampirkan operasi protokol Thread.

Selesai

Tunggu 10 detik hingga antarmuka thread muncul.

5

state

Periksa status perangkat. Harus pemimpin.
Status lain yang mungkin: offline, nonaktif, terputus,
turunan, router, atau pemimpin

Leader
Done

6

dataset

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

. . . . . . 1
Channel: 20
.







Kita akan menggunakan nomor saluran dan kunci jaringan di ot-cli-ftd untuk menggabungkan kedua FTD ke jaringan thread ini.

Menyiapkan dan menambahkan FTD ke jaringan Thread (metode out of band)

Dengan metode unik, kami mengetahui semua informasi keamanan dan menambahkan node secara manual. Di konsol Simplicity, tambahkan kedua FTD ke jaringan menggunakan perintah berikut dalam urutan yang ditunjukkan di bawah.

Indeks

Perintah

Deskripsi perintah

Respons yang Diharapkan

1

dataset channel 20

Tetapkan saluran yang digunakan oleh OTBR.

Selesai

2

dataset networkkey 81ae2c2c17368d585dee71eaa8cf1e90

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

Selesai

3

dataset commit active

Meng-commit 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 melakukan konfigurasi sendiri.

6

state

Lihat konfigurasi jaringan.

anak
Selesai

Komunikasi antara perangkat Thread

Kita akan menggunakan perintah ping untuk memeriksa apakah perangkat dapat saling berkomunikasi. Untuk menggunakan perintah {i>ping<i}, kita membutuhkan alamat IPv6 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, lakukan 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

Respons menunjukkan payload yang diterima dan bahwa komunikasi berhasil. Ulangi proses untuk melakukan ping FTD dari OTBR.

9. Selamat

Anda berhasil membuat jaringan Thread.

Anda sekarang mengetahui:

  • Cara membuat project OpenThread menggunakan IDE Silicon Labs Simplicity Studio.
  • Cara membangun dan melakukan flash biner OpenThread CLI ke board radio Silicon Labs.
  • Cara menyiapkan Raspberry Pi 3B+ atau yang lebih baru sebagai OpenThread Border Router (OTBR) menggunakan Docker.
  • Cara membuat jaringan Thread di OTBR.
  • commissioning perangkat di luar band ke jaringan Thread.
  • Cara memverifikasi komunikasi Thread antara node menggunakan perintah ping.

Bacaan lebih lanjut

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

10. Penyiapan firmware opsional - Demo

Demo adalah image firmware bawaan yang siap didownload ke perangkat yang kompatibel. Cara tercepat untuk mengetahui apakah demo tersedia untuk Anda di Simplicity Studio adalah dengan mengklik bagian Anda di bawah tampilan Debug Adapters, lalu navigasi ke EXAMPLE PROJECT & Tab DEMOS di Perspektif Peluncur. Nonaktifkan filter Example Projects dan centang kotak pilihan Thread di bagian Jenis Teknologi.

Demo studio

Image aplikasi demo yang telah dikompilasi sebelumnya dan disediakan dengan OpenThread SDK kompatibel dengan board berikut:

  1. BRD4161a
  2. BRD4166a
  3. BRD4168a
  4. BRD4180a
  5. BRD4304a

Daftar ini dapat diperbarui dalam rilis SDK mendatang untuk menyertakan lebih banyak radio board. Lihat catatan rilis Silicon Labs OpenThread SDK di bagian Dokumentasi untuk mengetahui daftar lengkap suku cadang yang didukung.

Soroti demo berikut pada papan mereka masing-masing. Untuk melakukan flash, pilih board Anda di bagian 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 mengaktivasi dua perangkat lainnya di jaringan Thread. Sebagai Router Perbatasan, perangkat ini juga berfungsi sebagai gateway bagi perangkat di jaringan Thread untuk berkomunikasi melalui internet.
  2. Dua BRD4168A: ot-cli-ftd — Kedua perangkat ini akan bertindak sebagai Perangkat Thread Penuh. Mereka akan bergabung dengan jaringan Thread yang dibuat oleh OTBR.