Bangun jaringan Thread dengan papan Silicon Labs EFR32 dan OpenThread menggunakan Simplicity Studio v5

1. Perkenalan

26b7f4f6b3ea0700.png

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

The Spesifikasi Thread mendefinisikan protokol berbasis IPv6 handal, aman, dan rendah daya nirkabel perangkat-ke-perangkat komunikasi untuk aplikasi rumah dan bangunan komersial.

Silicon Labs telah ditingkatkan OpenThread bekerja dengan hardware Silicon Labs. Kode sumber ini tersedia di GitHub dan juga sebagai perangkat pengembangan perangkat lunak (SDK) yang diinstal dengan Simplicity Studio 5 (SSv5). SDK menyertakan cuplikan kode sumber GitHub yang telah diuji sepenuhnya. Ini mendukung perangkat keras yang lebih luas daripada versi GitHub, dan termasuk dokumentasi dan contoh aplikasi 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 papan (BRD) dan perangkat keras yang diatur dengan OT Border Router (OTBR) dan dua perangkat Thread yang digunakan dalam lab kode

Pengaturan Perangkat Keras EFR32MG

Apa yang akan Anda pelajari?

  • Cara membuat proyek OpenThread menggunakan Silicon Labs Simplicity Studio IDE.
  • Cara membuat dan mem-flash binari OpenThread CLI ke papan radio Silicon Labs.
  • Cara mengatur Raspberry Pi 3B+ atau lebih besar sebagai OpenThread Border Router (OTBR) menggunakan Docker.
  • Cara membuat jaringan Thread di OTBR.
  • Komisioning perangkat di luar pita ke jaringan Thread.
  • Cara memverifikasi komunikasi Thread antara node menggunakan perintah ping.

2. Prasyarat

Perangkat keras:

  1. 3 papan radio EFR32MGxx - kombinasi perangkat ini dapat digunakan. Codelab ini menggunakan BRD4166A sebagai RCP dan dua BRD4168A sebagai Perangkat Utas Penuh.
    • EFR32MG12 (BRD 4161A, BRD 4166A, BRD 4170A, BRD 4304 A)
    • EFR32MG13 (BRD 4168A)
    • EFR32MG21 (BRD 4180A, BRD 4180B)
    Jika Anda memulai segar, Anda bisa mendapatkan salah satu dari EFR32 Thread starter kit yang memiliki papan yang tercantum di atas.
  2. BRD4001A: Papan utama starter nirkabel (WSTK) untuk menampung papan radio. Kecuali untuk BRD4166A, semua papan radio masing-masing memerlukan papan utama starter. Kabel USB mini untuk menghubungkan dan memberi daya pada papan utama atau kabel micro USB untuk BRD4166A.

WSTK AEM

  1. Sebuah Raspberry Pi 3B + atau lebih besar dengan Raspbian Peregangan Lite OS gambar atau Raspbian Peregangan dengan Desktop yang terhubung ke internet over Ethernet. Kami mengkonfigurasi ini sebagai Router Perbatasan OT.
  2. Sistem Windows/Linux/Mac Host dengan minimal 2 port USB dan koneksi internet. Periksa perangkat keras dan persyaratan OS di SSv5 .
  3. Setidaknya satu kabel Ethernet untuk menghubungkan Raspberry Pi ke Internet. WSTK juga mendukung debug dan flashing melalui IP sehingga, opsional, kabel Ethernet tambahan dapat digunakan untuk menghubungkan WSTK ke sistem host Anda melalui Ethernet Switch.

Perangkat lunak:

  • Simplicity Studio v5 diinstal dan diperbarui pada sistem Host Windows/Linux/Mac dengan
    • Rantai alat GNU ARM v7.2.1
    • Gecko SDK Suite 3.2.0 atau lebih baru dan Silicon Labs OpenThread SDK.

Unduh Kesederhanaan Studio 5

3. Pengaturan perangkat keras

Codelab ini dibuat menggunakan

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

BRD4168A

Hubungkan setiap papan utama Wireless Starter Kit ke komputer host dengan USB seperti yang ditunjukkan pada gambar di bawah. Koneksi ini akan memungkinkan pemrograman dan analisis jaringan 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 sakelar Ethernet umum. Starter kit juga mendukung pemrograman dan analisis jaringan melalui IPv4.

Koneksi

4. Pengaturan firmware

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

  1. Proyek: (Disarankan) Membuat, membangun, dan mem-flash aplikasi sampel. Opsi ini memungkinkan Anda untuk menyesuaikan aplikasi dalam proyek.ATAU
  2. Demo: (Opsional) Flash demo bawaan langsung di papan radio untuk aplikasi sampel mana pun. Pengguna didorong untuk mencoba pengaturan firmware Demo sebagai latihan opsional. Silakan lihat bagian "Pengaturan firmware opsional - Demo" di akhir codelab ini untuk detailnya.

Kami akan menggunakan metode berbasis proyek untuk codelab ini.

Buat proyek menggunakan contoh

Kami akan membuat dua proyek. The ot-rcp proyek untuk BRD4166A dan ot-cli-ftd proyek untuk dua BRD4168A. Ikuti langkah-langkah ini dan pilih aplikasi sampel yang sesuai untuk papan Anda.

  1. Open Studio menu File dan pilih New> Silicon Labs Project Wizard. Dialog Target, SDK, dan Pilihan Rantai Alat akan terbuka. Jangan ubah rantai alat Simplicity IDE / GNU default yang didukung oleh OpenThread. Klik Next.
    • Papan target: Menampilkan papan radio yang dipilih (BRD4168A) bersama dengan papan utama (BRD4001A)
    • Perangkat Target: Bidang ini menunjukkan chip mikrokontroler (MCU) terpasang. BRD4168A memiliki EFR32MG13 MCU onboard.
    • SDK: Di sini Anda dapat memilih versi SDK dari PL yang sedang Anda kerjakan. Untuk codelab ini kami menggunakan OpenThread 1.2.0.0.
    • IDE/ Toolchain: Toolchain yang akan digunakan untuk mengkompilasi proyek PL. Kami menggunakan GNU ARM 7.2.1.

Penyihir proyek baru

  1. Dialog Pemilihan Proyek Contoh akan terbuka. Anda akan melihat daftar proyek Contoh. Gunakan 'Thread' Teknologi Jenis dan filter kata kunci untuk mencari contoh spesifik, dalam hal ini ot-cli-ftd . Pilih dan klik NEXT.

Panduan proyek baru langkah 2

  1. Dialog Konfigurasi Proyek terbuka. Di sini Anda dapat mengganti nama proyek Anda, mengubah lokasi file proyek default, dan menentukan apakah Anda akan menautkan atau menyalin file proyek. File proyek tertaut mengarah ke SDK dan modifikasi apa pun yang Anda buat akhirnya dibuat di SDK dan digunakan untuk proyek mendatang. Menyalin sumber proyek, memungkinkan Anda mengedit salinan lokal proyek sehingga file SDK tetap utuh. 'Link SDK dan sumber proyek copy' adalah default dan pilihan yang direkomendasikan. Klik FINISH.

Panduan proyek baru langkah 3

  1. Kesederhanaan IDE Perspektif terbuka dengan terbuka Proyek Configurator ke tab SEKILAS.

Ulasan Proyek

Proyek ini dikonfigurasi dari tab Software Komponen dengan menginstal dan menguninstall komponen, dan mengkonfigurasi komponen yang terpasang. Komponen yang terpasang diperiksa. Klik Komponen Terpasang untuk melihat daftar disaring komponen diinstal oleh aplikasi misalnya. Setiap perubahan yang Anda buat disimpan secara otomatis, dan file proyek dibuat secara otomatis. Kemajuan ditampilkan di sudut kanan bawah perspektif IDE Kesederhanaan.

Komponen Perangkat Lunak

Untuk demo ini kita akan menggunakan konfigurasi default dari contoh aplikasi. Ulangi langkah di atas untuk membuat ot-rcp proyek untuk forum Anda lainnya.

Bangun dan Flash proyek

Membangun dan flash baik ot-rcp dan ot-cli-ftd proyek.

  1. Setelah proyek Anda dikonfigurasi, klik kontrol Build (ikon palu) pada panel alat atas. Atau Anda dapat mengklik kanan pada proyek dan klik membangun proyek.

Buat tombol proyek

  1. Kemajuan ditampilkan dalam Konsol dan progress bar di kanan bawah. Setiap kesalahan atau peringatan yang terkait dengan proyek Anda juga akan muncul di jendela keluaran ini.

Jendela keluaran pembuatan proyek

  1. Gambar binari dihasilkan setelah pembangunan proyek yang berhasil. Anda dapat flash gambar biner dari pandangan Project Explorer. Temukan file .bin, .hex, atau .s37 di subdirektori kompilator. Klik kanan file tersebut dan pilih Flash untuk Perangkat. Jika Anda memiliki lebih dari satu perangkat Koneksi kemudian pilih perangkat ke program, klik OK. Programmer Flash terbuka dengan jalur file yang terisi. Klik PROGRAM.

Kilatan

5. Ringkasan pengaturan firmware

Pada titik ini Anda seharusnya telah membuat, mengkompilasi, dan mem-flash firmware yang sesuai di papan radio. Setelah ot-rcp yang berkelebat ke BRD4166A, lepaskan dari sistem host dan menghubungkan papan ini untuk Raspberry Pi.

Setelah menyelesaikan bagian ini, pengaturan perangkat keras jaringan Thread Anda akan terlihat seperti ini.

Pengaturan EFR32MG

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

Untuk meluncurkan antarmuka Console, dalam Kesederhanaan IDE perspektif yang benar-klik pada perangkat J-Link Anda dalam Devices View / Debug Adapter Jendela. Pilih Launch Console. Untuk mendapatkan prompt pada Console, pilih Serial 1 tab dan tekan Enter. Periksa keadaan simpul FTD.

Tampilan Konsol Studio FTD

Anda akan melihat bahwa kita belum memiliki konsol untuk ot-rcp . Pada langkah selanjutnya kita akan mengkonfigurasi Raspberry Pi sebagai router perbatasan PL dan mengatur konsol untuk ot-rcp .

7. Siapkan Raspberry Pi sebagai Router Perbatasan

Silicon Labs merekomendasikan penggelaran wadah Docker perusahaan dengan OTBR. Menjalankan OTBR dalam wadah memungkinkan pembuatan artefak yang mudah digunakan serta pembuatan prototipe dan pengujian pengembangan yang cepat.

Silicon Labs menyediakan container Docker bawaan berikut (dengan tag), yang dihosting di DockerHub:

https://hub.docker.com/r/siliconlabsinc/openthread-border-router/tags

https://hub.docker.com/r/siliconlabsinc/openthread-backbone-border-router/tags

Pengaturan Raspberry Pi

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

Instal gambar buruh pelabuhan

  1. Instal Docker dengan perintah berikut di RPi Anda.
    curl -sSL https://get.docker.com | sh
    
  2. Setelah selesai, Anda dapat mengubah pengaturan pengguna Docker agar tidak memerlukan sudo sebelum setiap perintah. Diperlukan boot ulang.
    sudo usermod -aG docker $USER
    
  3. Keluarkan perintah berikut untuk menginstal container. Perhatikan bahwa Anda hanya dapat menjalankan satu wadah Router Perbatasan pada satu waktu dengan RCP Anda. Juga, pastikan untuk memverifikasi versi RCP (Utas versi 1.2) yang harus dijalankan terhadap penampung ini.
    docker pull siliconlabsinc/openthread-border-router:gsdk-3.2.0
    

Konfigurasikan dan jalankan buruh pelabuhan

  1. Anda perlu mengkonfigurasi port TTY yang ingin Anda gunakan untuk OTBR untuk menghubungkan RCP Anda saat startup. Cari port TTY perangkat RCP Anda. Cara termudah untuk melakukannya adalah dengan mencari /tty/dev ... masuk sekali RCP terhubung. Ini harus umumnya berupa /dev/ttyUSB0 atau /dev/ttyACM0 .
  2. Jalankan instalasi Docker Anda sebagai berikut. Contoh menggunakan wadah Router Perbatasan Thread 1.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-3.2.0 \
     --radio-url spinel+hdlc+uart:///dev/ttyACM0?uart-baudrate=460800 \
     --backbone-interface eth0
    
    • -d memastikan bahwa berjalan kontainer dalam mode terpisah.
    • Anda dapat melihat log berjalan untuk wadah setiap saat menggunakan docker logs perintah.
    • --name lengket sampai wadah buruh pelabuhan benar ditutup (atau dihapus).
    • Port 8080 menunjukkan port server web yang menghosting halaman web manajemen Router Perbatasan.
    • ?uart-baudrate=460800 diperlukan dalam pilihan url radio untuk berkeliling fragmentasi / reassembly masalah lebih UART, dengan operasi mahal seperti DTLS dengan paket IPv6 yang panjang.

Berinteraksi dengan simpul RCP

Setelah buruh pelabuhan berjalan, Anda dapat berkomunikasi dengan node RCP melalui shell interaktif menggunakan perintah ini. Periksa keadaan simpul RCP.

$ docker exec -ti otbr sh -c "sudo ot-ctl"
> state 
disabled
Done

Anda bisa mendapatkan daftar id kontainer yang sedang berjalan

$ docker ps -aq

Anda dapat memeriksa jendela yang menjalankan wadah OTBR Docker untuk menjalankan keluaran log dari Router Perbatasan atau mengikuti log wadah sebagai berikut:

$ docker logs [container-id] -f

Secara opsional, Anda dapat menghentikan, menghapus, atau mematikan gambar Anda jika wadah buruh pelabuhan dimuat dengan benar.

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

Opsional: Untuk keluar dari shell gunakan CNTL + C.

Pada titik ini, Anda harus memiliki 3 konsol.

  1. Dua ot-cli-ftd konsol di Kesederhanaan Studio yang ditetapkan sebagai perangkat Thread penuh.
  2. Satu ot-ctl shell interaktif di Raspberry Pi yang diatur sebagai router perbatasan OT.

Sekarang kita siap membentuk jaringan Thread.

8. Buat jaringan Utas

Siapkan RCP

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

Indeks

Memerintah

Deskripsi perintah

Respon yang diharapkan

1

dataset init new

Buat konfigurasi jaringan baru.

Selesai

2

dataset commit active

Komit dataset baru ke Dataset Operasional Aktif.

Selesai

3

ifconfig up

Aktifkan antarmuka Utas.

Selesai

4

thread start

Aktifkan dan lampirkan operasi protokol Thread.

Selesai

Tunggu 10 detik hingga antarmuka utas aktif.

5

state

Periksa status perangkat. Itu harus menjadi pemimpin.
Status lain yang mungkin: offline, dinonaktifkan, terlepas,
anak, 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
Saluran: 20
Masker Saluran: 0x07ffff800
ID PAN Ekst: 39ba71f7fc367160
Awalan Lokal Jala: fd5c:c6b:3a17:40b9::/64
Kunci Jaringan: 81ae2c2c17368d585dee71eaa8cf1e90
Nama Jaringan: OpenThread-008c
ID PAN: 0x008c
PSKc: c98f0193d4236025d22dd0ee614e641f
Kebijakan Keamanan: 0, onrcb
Selesai

Kami akan menggunakan nomor saluran dan kunci jaringan pada ot-cli-ftd untuk bergabung dengan dua FTD ke jaringan thread ini.

Siapkan dan tambahkan FTD ke jaringan Thread kami (metode out of 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 dalam urutan yang ditunjukkan di bawah ini.

Indeks

Memerintah

Deskripsi perintah

Respon yang diharapkan

1

dataset channel 20

Atur saluran yang digunakan oleh OTBR.

Selesai

2

dataset networkkey 81ae2c2c17368d585dee71eaa8cf1e90

Hanya Kunci Jaringan yang diperlukan perangkat untuk dilampirkan ke jaringan Utas.

Selesai

3

dataset commit active

Komit dataset baru ke Dataset Operasional Aktif.

Selesai

4

ifconfig up

Aktifkan antarmuka Utas.

Selesai

5

thread start

Aktifkan dan lampirkan operasi protokol Thread.

Selesai

Tunggu 20 detik saat perangkat bergabung dan mengkonfigurasi sendiri.

6

state

Lihat konfigurasi jaringan.

anak
Selesai

Komunikasi antar perangkat Thread

Kami akan menggunakan ping perintah untuk memeriksa apakah perangkat dapat berkomunikasi satu sama lain. Untuk menggunakan perintah ping kita memerlukan alamat IPv6 perangkat. Ini dapat diperoleh dengan menggunakan ipaddr perintah.

> 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 muatan yang diterima dan komunikasi berhasil. Ulangi proses untuk melakukan ping ke FTD dari OTBR.

9. Selamat

Anda telah membuat jaringan Thread!

Anda sekarang tahu:

  • Cara membuat proyek OpenThread menggunakan Silicon Labs Simplicity Studio IDE.
  • Cara membuat dan mem-flash binari OpenThread CLI ke papan radio Silicon Labs.
  • Cara mengatur Raspberry Pi 3B+ atau lebih besar sebagai OpenThread Border Router (OTBR) menggunakan Docker.
  • Cara membuat jaringan Thread di OTBR.
  • Komisioning perangkat di luar pita ke jaringan Thread.
  • Cara memverifikasi komunikasi Thread antara node menggunakan perintah ping.

Bacaan lebih lanjut

Periksa openthread.io dan GitHub untuk berbagai sumber daya OpenThread, termasuk:

10. Pengaturan firmware opsional - Demo

Demo adalah gambar firmware bawaan yang siap diunduh ke perangkat yang kompatibel. Cara tercepat untuk mengetahui apakah demo tersedia untuk bagian Anda di Simplicity Studio adalah dengan mengklik bagian Anda di bawah tampilan Adaptor Debug dan kemudian menavigasi ke tab CONTOH PROYEK & DEMOS di Perspektif Peluncur. Nonaktifkan filter Contoh Proyek dan centang kotak radio Thread di bawah Jenis Teknologi.

Demo studio

Gambar aplikasi demo yang telah dikompilasi yang disediakan dengan OpenThread SDK kompatibel dengan papan berikut:

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

Daftar ini dapat diperbarui di rilis SDK mendatang untuk menyertakan lebih banyak papan radio. Silakan merujuk ke catatan rilis Silicon Labs OpenThread SDK di bawah Dokumentasi untuk daftar lengkap bagian yang didukung.

Flash demo berikut di papan masing-masing. Untuk mem-flash, pilih papan Anda di bawah Adaptor Debug di sebelah kiri dan klik RUN untuk aplikasi sampel yang sesuai. Sebuah jendela pop up akan menunjukkan kemajuan flash.

  1. BRD4166A: ot-rcp - Perangkat ini akan berfungsi sebagai Processor Radio Co untuk PL Border Router. Kami akan menggunakan perangkat ini untuk membuat jaringan Thread dan menghubungkan dua perangkat lainnya di jaringan Thread. Menjadi Border Router perangkat ini juga bertindak sebagai pintu gerbang bagi perangkat di jaringan Thread untuk berkomunikasi melalui internet.
  2. Dua BRD4168A: ot-cli-FTD - Kedua perangkat akan bertindak sebagai Devices Thread penuh. Mereka akan bergabung dengan jaringan Thread yang dibuat oleh OTBR.