1. Giriş
Google'ın OpenThread (OT) Konu bir açık kaynak uygulamasıdır. Google, bağlantılı ev ve ticari binalara yönelik ürünlerin geliştirilmesini hızlandırmak amacıyla Google Nest ürünlerinde kullanılan ağ teknolojisini geliştiricilere daha geniş bir şekilde sunmak için OpenThread'i yayınladı. Dar bir platform soyutlama katmanı ve küçük bir bellek ayak izi ile OpenThread son derece taşınabilirdir. Hem çip üzerinde sistem (SoC) hem de ağ yardımcı işlemcisi (NCP) tasarımlarını destekler.
Konu şartname ev ve ticari bina uygulamaları için bir IPv6 tabanlı güvenilir, güvenli ve düşük güç kablosuz cihazdan cihaza iletişim protokolünü tanımlar.
Silikon Labs Silikon Labs donanımıyla çalışmalarına OpenThread geliştirmiştir. Bu kaynak kodu GitHub'da ve ayrıca Simplicity Studio 5 (SSv5) ile birlikte yüklenen bir yazılım geliştirme kiti (SDK) olarak mevcuttur. SDK, GitHub kaynak kodunun tamamen test edilmiş bir anlık görüntüsünü içerir. GitHub sürümünden daha geniş bir donanım yelpazesini destekler ve GitHub'da bulunmayan belgeleri ve örnek uygulamaları içerir.
Bu kılavuz, Silicon Labs OpenThread SDK ve Simplicity Studio 5'i kullanarak OpenThread uygulamaları geliştirmeye nasıl başlayacağınızı açıklamaktadır. Aşağıdaki resim, kartlar (BRD'ler) ve bir OT Border Router (OTBR) ile donanım kurulumunu ve sistemde kullanılan iki Thread cihazını göstermektedir. kod laboratuvarı.
ne öğreneceksin
- Silicon Labs Simplicity Studio IDE kullanarak bir OpenThread projesi nasıl oluşturulur.
- OpenThread CLI ikili dosyaları nasıl oluşturulur ve Silicon Labs radyo panolarına flashlanır.
- Docker kullanarak bir Raspberry Pi 3B+ veya üstü OpenThread Border Router (OTBR) olarak nasıl kurulur.
- OTBR'de bir Thread ağı nasıl oluşturulur.
- Cihazların bir Thread ağında bant dışı devreye alınması.
- Ping komutunu kullanarak düğümler arasındaki iş parçacığı iletişimi nasıl doğrulanır.
2. Önkoşullar
Donanım:
- 3 EFR32MGxx radyo kartı - bu cihazların herhangi bir kombinasyonu kullanılabilir. Bu codelab, RCP olarak bir BRD4166A ve Tam İş Parçacığı Aygıtları olarak iki BRD4168A kullanır.
- EFR32MG12 (BRD 4161A, BRD 4166A, BRD 4170A, BRD 4304 A)
- EFR32MG13 (BRD 4168A)
- EFR32MG21 (BRD 4180A, 4180B BRD)
- BRD4001A: Radyo kartlarını barındırmak için kablosuz başlangıç ana kartları (WSTK). BRD4166A hariç, tüm radyo kartlarının her birinin bir başlangıç ana kartına ihtiyacı vardır. BRD4166A için ana kartları veya mikro USB kablosunu bağlamak ve güç sağlamak için mini USB kabloları.
- Bir Ahududu Pi 3B + veya daha büyük Raspbian Stretch Lite OS görüntüsü veya Masaüstü ile Raspbian Stretch Ethernet üzerinden internete bağlanır. Bunu bir OT Border Router olarak yapılandırıyoruz.
- En az 2 USB bağlantı noktasına ve bir internet bağlantısına sahip bir Windows/Linux/Mac Host sistemi. En donanım ve işletim sistemi gereksinimlerini kontrol SSv5 .
- Raspberry Pi'yi İnternet'e bağlamak için en az bir Ethernet kablosu. WSTK'ler ayrıca IP üzerinden hata ayıklamayı ve yanıp sönmeyi de destekler, bu nedenle isteğe bağlı olarak, WSTK'yi bir Ethernet Anahtarı aracılığıyla ana sisteminize bağlamak için ek Ethernet kabloları kullanılabilir.
Yazılım:
- Simplicity Studio v5, Windows/Linux/Mac Host sistemine yüklendi ve güncellendi:
- GNU ARM v7.2.1 araç zinciri
- Gecko SDK Suite 3.2.0 veya üstü ve Silicon Labs OpenThread SDK.
3. Donanım kurulumu
Bu Codelab kullanılarak oluşturuldu
- EFR32MG12 BRD4166A Thunderboard Anlam 2 solda gösterildiği gibi.
- İki EFR32MG13 BRD4168A olarak sağda gösterilen.
- MacOS Catalina 10.15.7'de yüklü Simplicity Studio v5
- Gecko SDK'sı 3.2.0
- GNU ARM v7.2.1
Her bir Kablosuz Başlangıç Kiti ana kartını aşağıdaki resimde gösterildiği gibi USB ile ana bilgisayara bağlayın. Bu bağlantılar, RCP ve uç cihazların programlanmasına ve ağ analizine izin verecektir. BRD4166A'yı ot-rcp bellenimi ile programlamak için önce ana bilgisayarı kullanacağız ve sonunda onu Raspberry Pi'ye bağlayacağız. İsteğe bağlı olarak, uç cihazlar ortak bir Ethernet anahtarı aracılığıyla ana bilgisayara bağlanabilir. Başlangıç kitleri ayrıca IPv4 üzerinden programlama ve ağ analizini de destekler.
4. Bellenim kurulumu
Başlamanın iki yolu vardır. Her iki seçenek de bu kod laboratuvarı için gerekli olan yazılımları flaş etmenize izin verir.
- Projeler: (Önerilen) Örnek bir uygulama oluşturun, oluşturun ve flaşlayın. Bu seçenek, projedeki uygulamayı özelleştirmenizi sağlar.VEYA
- Demolar: (İsteğe bağlı) Herhangi bir örnek uygulama için önceden oluşturulmuş demoları doğrudan radyo kartına yükleyin. Kullanıcıların, isteğe bağlı bir alıştırma olarak kurulan Demos ürün yazılımını denemeleri önerilir. Ayrıntılar için lütfen bu kod laboratuvarının sonundaki "İsteğe bağlı donanım yazılımı kurulumu - Demolar" bölümüne bakın.
Bu codelab için proje tabanlı yöntemi kullanacağız.
Örnekleri kullanarak projeler oluşturun
İki proje oluşturacağız.
ot-rcp BRD4166A için proje ve
ot-cli-ftd iki BRD4168A projesi. Lütfen bu adımları takip edin ve panonuz için uygun örnek uygulamayı seçin.
- Açık Studio'nun Dosya menüsü ve Yeni> Silikon Labs Projesi Sihirbazı seçin. Hedef, SDK ve Araç Zinciri Seçimi iletişim kutusu açılır. OpenThread tarafından desteklenen varsayılan Simplicity IDE / GNU araç zincirini değiştirmeyin. İleri 'yi tıklayın.
- Hedef panoları: Ana kart (BRD4001A) ile birlikte seçilen radyo panosunu (BRD4168A) gösterir
- Hedef Cihaz: Bu alan, yerleşik mikrodenetleyici çipini (MCU) gösterir. BRD4168A, yerleşik bir EFR32MG13 MCU'ya sahiptir.
- SDK: Burada, birlikte çalıştığınız OT'nin SDK sürümünü seçebilirsiniz. Bu kod laboratuvarı için OpenThread 184.108.40.206 kullanıyoruz.
- IDE/ Toolchain: OT projesini derlemek için kullanılacak olan araç zinciri. GNU ARM 7.2.1 kullanıyoruz.
- Örnek Proje Seçimi iletişim kutusu açılır. Örnek projelerin bir listesini göreceksiniz. Bu durumda, belirli bir örnek aramak için 'Konu' Teknoloji Tipi ve anahtar kelime filtreleri kullanın
ot-cli-ftd. Bunu seçin ve NEXT 'e tıklayın.
- Proje Yapılandırması iletişim kutusu açılır. Burada projenizi yeniden adlandırabilir, varsayılan proje dosyasının konumunu değiştirebilir ve proje dosyalarına bağlanıp bağlanmayacağınızı veya kopyalayıp kopyalamayacağınızı belirleyebilirsiniz. Bağlantılı proje dosyaları SDK'ya işaret eder ve yaptığınız tüm değişiklikler SDK'da yapılır ve gelecekteki projeler için kullanılır. Proje kaynaklarını kopyalamak, SDK dosyalarının bozulmadan kalması için proje yerel kopyasını düzenlemenize olanak tanır. 'Bağlantı sdk ve kopya proje kaynaklar' varsayılan ve önerilen seçimdir. FINISH'i tıklayın.
- Sadelik IDE Perspektif BAKIŞ sekmesine Proje Yapılandırıcı açıkken açılır.
Proje yükleme ve bileşenlerini kaldırma ve yüklü bileşenleri yapılandırarak Yazılım Bileşenleri sekmesinden yapılandırılır. Kurulu bileşenler kontrol edilir. Örnek uygulama tarafından yüklenen bileşenleri filtrelenmiş listesini görmek için Yüklü Bileşenleri tıklayın. Yaptığınız tüm değişiklikler otomatik olarak kaydedilir ve proje dosyaları otomatik olarak oluşturulur. İlerleme, Simplicity IDE perspektifinin sağ alt köşesinde gösterilir.
Bu demo için örnek uygulamaların varsayılan konfigürasyonunu kullanacağız. Oluşturmak için yukarıdaki adımları tekrarlayın
ot-rcp diğer yönetim kurulu için projeyi.
Projeleri oluşturun ve Flashlayın
Yapı ve hem yanıp
ot-rcp ve
ot-cli-ftd projeler.
- Projeniz yapılandırıldığı sonra üst araç çubuğundaki Yapı denetimi (çekiç simgesi) tıklayın. Alternatif olarak projeye sağ tıklayıp proje oluştur seçeneğine tıklayabilirsiniz.
- İlerleme Konsol ve sağ alt bir ilerleme çubuğunda görüntülenir. Projenizle ilgili herhangi bir hata veya uyarı da bu çıktı penceresinde görünecektir.
- İkili dosyalar görüntüleri, başarılı bir proje oluşturma işleminden sonra oluşturulur. Project Explorer görünümünden ikili görüntü yanıp sönebilir. Derleyici alt dizininde .bin, .hex veya .s37 dosyasını bulun. Dosyayı sağ tıklayın ve Aygıt Flash seçin. Sonra Tamam'ı tıklayın programa bir cihaz seçin bağlı birden fazla cihaz varsa. Flash Programmer, dosya yolu doldurularak açılır. PROGRAMINI tıklayın.
5. Firmware kurulum özeti
Bu noktada radyo kartlarında uygun ürün yazılımını oluşturmuş, derlemiş ve flashlamış olmalısınız. Bir kez
ot-rcp BRD4166A için yanıp söner, ana bilgisayar sisteminden bağlantısını kesin ve Ahududu Pi Bu tabloyu bağlayın.
Bu bölümü tamamladıktan sonra Thread ağ donanım kurulumunuz aşağıdaki gibi görünecektir.
6. ot-cli-ftd cihazları için Seri konsolu kurun
Cihazlar Görünüm / ayıklama Adaptörleri Pencere daki J-Link cihazda Sadelik IDE perspektif sağ tıklama, Konsol arayüzünü başlatmak için. Fırlatma Konsolu seçin. Konsol'da bir istem almak için, Seri 1 sekme ve Enter tuşuna basın seçin. FTD düğümünün durumunu kontrol edin.
Henüz ilgili bir konsol yok olduğunu göreceksiniz
ot-rcp . Bir sonraki adımda biz OT sınır yönlendiricisi olarak Ahududu Pi yapılandırma ve için konsolu kuracak
ot-rcp .
7. Raspberry Pi'yi Border Router olarak kurun
Silicon Labs, şirketin Docker kapsayıcısının OTBR ile dağıtılmasını önerir. OTBR'yi bir kapsayıcıda çalıştırmak, kolayca konuşlandırılabilir yapıtların oluşturulmasına ve hızlı geliştirme prototipleme ve testine olanak tanır.
Silicon Labs, DockerHub'da barındırılan aşağıdaki önceden oluşturulmuş Docker kapsayıcılarını (etiketlerle birlikte) sağlar:
https://hub.docker.com/r/siliconlabsinc/openthread-border-router/tags
https://hub.docker.com/r/siliconlabsinc/openthread-backbone-border-router/tags
Raspberry Pi kurulumu
- SD kart üzerinde, flaş emin olmak Raspbian Stretch Lite OS imajı veya Desktop ile Raspbian Stretch .
- Raspberry Pi'ye SSH yapabilir veya doğrudan Raspbian Masaüstü ile çalışmayı seçebilirsiniz. Bir terminal açın.
- Emin yerel depoları ve paket yöneticisini (apt-get güncelleme ve apt-get Docker yüklemeden önce yükseltme) güncellemek için emin olun.
liman işçisi görüntüsünü yükleyin
- Docker'ı aşağıdaki komutla RPi'nize yükleyin.
curl -sSL https://get.docker.com | sh
- Bitirdikten sonra, Docker kullanıcı ayarlarını her komuttan önce sudo gerektirmeyecek şekilde değiştirebilirsiniz. Yeniden başlatma gerekli.
sudo usermod -aG docker $USER
- Kapsayıcıları yüklemek için aşağıdaki komutları verin. RCP'nizle aynı anda çalışan yalnızca bir Border Router kapsayıcınız olabileceğini unutmayın. Ayrıca, bu kapsayıcıya karşı çalıştırılması gereken RCP sürümünü (İş parçacığı sürümü 1.2) doğruladığınızdan emin olun.
docker pull siliconlabsinc/openthread-border-router:gsdk-3.2.0
Docker'ı yapılandırın ve çalıştırın
- OTBR'nin başlangıçta RCP'nizi bağlaması için kullanmak istediğiniz TTY bağlantı noktasını yapılandırmanız gerekir. RCP cihazınızın TTY bağlantı noktasını arayın. Bunu yapmanın en kolay yolu, bir bakmaktır
/tty/devBİP bağlandığında ... girişi. Genellikle ya olmalı
/dev/ttyUSB0veya
/dev/ttyACM0.
- Docker kurulumunuzu aşağıdaki gibi çalıştırın. Örnek, Thread 1.1 Border Router kapsayıcısını kullanır.
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
-
-dmüstakil modda konteyner ishal olmasını sağlar.
- Sen kullanarak kapsayıcı için hiçbir zaman çalışan günlükleri görebilirsiniz
docker logskomutu.
-
--namedocker kap düzgün bir şekilde kapatılır (veya kaldırılmış) kadar yapışkandır.
- Port 8080, Border Router yönetim web sayfasını barındıran web sunucusunun portunu gösterir.
-
?uart-baudrate=460800böyle uzun IPv6 paketleri ile DTLS olarak masraflı operasyonları ile parçalanması / UART üzerinde tekrar birleştirme sorunları aşmanın radyo url seçeneklerinde gereklidir.
-
RCP düğümü ile etkileşim
Docker çalıştığında, bu komutu kullanarak etkileşimli bir kabuk aracılığıyla RCP düğümü ile iletişim kurabilirsiniz. RCP düğümünün durumunu kontrol edin.
$ docker exec -ti otbr sh -c "sudo ot-ctl" > state disabled Done
Çalışan kapsayıcı kimliklerinin bir listesini alabilirsiniz
$ docker ps -aq
Border Router'ın günlük çıktısını çalıştırmak için OTBR Docker konteynerini çalıştıran pencereyi kontrol edebilir veya konteyner günlüğünü aşağıdaki gibi takip edebilirsiniz:
$ docker logs [container-id] -f
İsteğe bağlı olarak, docker kapsayıcı düzgün yüklenmişse görüntünüzü durdurabilir, kaldırabilir veya sonlandırabilirsiniz.
$ docker stop otbr
$ docker rm otbr
$ docker kill otbr
İsteğe bağlı: Kabuktan çıkmak için CNTL + C kullanın.
Bu noktada 3 konsolunuz olmalı.
- İki
ot-cli-ftdSadelik Studio konsolları Tam Konu cihazları olarak ayarlanmış olan.
- Bir
ot-ctlbir OT sınır yönlendiricisi olarak ayarlandı Ahududu Pi üzerinde interaktif kabuk.
Artık bir Thread ağı oluşturmaya hazırız.
8. Bir Konu ağı oluşturun
RCP'yi kurun
Ağ oluşturmak için, ile başlayan
ot-ctl RCP düğümle iletişim için kullanılan OTBR üzerinde kabuk. Aşağıdaki komutları aşağıda gösterildiği gibi sırayla girin:
dizin
Emretmek
Komut açıklaması
Beklenen Yanıt
1
Yeni bir ağ yapılandırması oluşturun.
Tamamlandı
2
Yeni veri kümesini Aktif Operasyonel Veri Kümesine bağlayın.
Tamamlandı
3
Thread arayüzünü etkinleştirin.
Tamamlandı
4
Thread protokolü işlemini etkinleştirin ve ekleyin.
Tamamlandı
İplik arayüzünün açılması için 10 saniye bekleyin.
5
Cihaz durumunu kontrol edin. Lider olmalı.
Önder
6
Ağ yapılandırmasını görüntüleyin.
Etkin Zaman Damgası: 1
Biz kanal numarasını ve ağ anahtarı kullanacak
ot-cli-ftd Konuyu ağa iki FTDs katılmak.
FTD'yi Thread ağımıza kurun ve ekleyin (bant dışı yöntem)
Bant dışı yöntem ile tüm güvenlik bilgilerini biliyoruz ve düğümü manuel olarak ekliyoruz. Basitlik konsollarında, aşağıda gösterilen sırayla aşağıdaki komutları kullanarak her iki FTD'yi ağımıza ekleyin.
dizin
Emretmek
Komut açıklaması
Beklenen Yanıt
1
OTBR tarafından kullanılan kanalı ayarlayın.
Tamamlandı
2
Bir aygıtın Thread ağına bağlanması için yalnızca Ağ Anahtarı gerekir.
Tamamlandı
3
Yeni veri kümesini Aktif Operasyonel Veri Kümesine bağlayın.
Tamamlandı
4
Thread arayüzünü etkinleştirin.
Tamamlandı
5
Thread protokolü işlemini etkinleştirin ve ekleyin.
Tamamlandı
Cihaz birleşip kendini yapılandırırken 20 saniye bekleyin.
6
Ağ yapılandırmasını görüntüleyin.
çocuk
Thread cihazları arasındaki iletişim
Biz kullanacağız
ping cihazlar birbirleriyle iletişim kurabilir olmadığını kontrol etmek komutu. Ping komutunu kullanmak için cihazların IPv6 adreslerine ihtiyacımız var. Bunlar kullanılarak elde edilebilir
ipaddr komutu.
> 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)
Her iki FTD'den OTBR'ye OTBR'nin RLOC adresini kullanarak ping atın.
> 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
Yanıt, alınan yükü ve iletişimin başarılı olduğunu gösterir. OTBR'den FTD'lere ping atmak için işlemi tekrarlayın.
9. Tebrikler
Bir Thread ağı oluşturdunuz!
Artık biliyorsunuz:
- Silicon Labs Simplicity Studio IDE kullanarak bir OpenThread projesi nasıl oluşturulur.
- OpenThread CLI ikili dosyaları nasıl oluşturulur ve Silicon Labs radyo panolarına flashlanır.
- Docker kullanarak bir Raspberry Pi 3B+ veya üstü OpenThread Border Router (OTBR) olarak nasıl kurulur.
- OTBR'de bir Thread ağı nasıl oluşturulur.
- Cihazların bir Thread ağında bant dışı devreye alınması.
- Ping komutunu kullanarak düğümler arasındaki iş parçacığı iletişimi nasıl doğrulanır.
daha fazla okuma
- Desteklenen Platformlar - tüm platformları keşfetmek desteğin OpenThread
- OpenThread İnşa - OpenThread bina ve yapılandırma hakkında daha fazla ayrıntı
- Primer Konu - Bu Codelab yer örtüler tüm Konu kavramları
- Silikon Labs OpenThread Eğitim - OpenThread bir giriş, adı geçen alma ve sınır yönlendiriciler ve uygulamalı egzersiz bir OpenThread ağı oluşturarak.
- QSG170: Silikon Labs OpenThread Hızlı Başlangıç Kılavuzu - ayrıntılı kapakları Silikon Labs Konu gelişimi için başlangıç süreci
- AN1256: OpenThread Sınır Yönlendirici ile Silikon Labs RCP Kullanılması - Ahududu Pi Sınır Yönlendirici Host için Yapı ve tesisat uyarıları
10. İsteğe bağlı donanım yazılımı kurulumu - Demolar
Demolar, uyumlu bir cihaza indirilmeye hazır, önceden oluşturulmuş ürün yazılımı görüntüleridir. Simplicity Studio'daki parçanız için bir demo olup olmadığını bulmanın en hızlı yolu, Hata Ayıklama Adaptörleri görünümü altındaki parçanıza tıklayıp Başlatıcı Perspektifinde ÖRNEK PROJELER VE DEMOS sekmesine gitmektir. Örnek Projeler filtresini devre dışı bırakın ve Teknoloji Türü altındaki Thread radyo onay kutusunu işaretleyin.
OpenThread SDK ile sağlanan önceden derlenmiş demo uygulama görüntüleri aşağıdaki panolarla uyumludur:
- BRD4161a
- BRD4166a
- BRD4168a
- BRD4180a
- BRD4304a
Bu liste, daha fazla radyo kartı içerecek şekilde gelecekteki SDK sürümlerinde güncellenebilir. Desteklenen parçaların tam listesi için lütfen Belgeler altındaki Silicon Labs OpenThread SDK sürüm notlarına bakın.
İlgili panolarda aşağıdaki demoları flashlayın. Flash için, soldaki Hata Ayıklama Adaptörleri altında anakartınızı seçin ve ilgili örnek uygulamalar için ÇALIŞTIR'a tıklayın. Bir açılır pencere flaş ilerlemesini gösterecektir.
- BRD4166A: ot-rcp - Bu cihaz OT Sınır Router ile Radyo Eş İşlemci olarak işleyecektir. Bu cihazı bir Thread ağı oluşturmak ve Thread ağındaki diğer iki cihazı yerleştirmek için kullanacağız. Bir Border Router olan bu cihaz aynı zamanda Thread ağındaki cihazların internet üzerinden iletişim kurması için bir ağ geçidi görevi görür.
- İki BRD4168A: ot-cli-ftd - Bu iki cihaz Tam Konu Devices olarak hareket edecektir. OTBR tarafından oluşturulan Thread ağına katılacaklar.