B91 Geliştirme Kurulu ve OpenThread ile İş Parçacığı Ağı Oluşturma

1. Giriş

26b7f4f6b3ea0700.png

OpenThread, Thread® ağ protokolünün açık kaynaklı bir uygulamasıdır. Bu, Nesnelerin İnterneti (IoT) cihazları için tasarlanmış sağlam ve güvenli bir kablosuz örgü ağ protokolüdür. OpenThread, Google'ın Nest ekibi tarafından geliştirilmiştir ve açık kaynak projesi olarak geliştirici topluluğunun kullanımına ücretsiz olarak sunulmuştur.

Thread Specification, akıllı evler ve ticari binalarda yaygın olarak bulunan kaynak kısıtlamalı cihazlar için güvenilir, güvenli ve enerji tasarruflu bir kablosuz iletişim protokolü oluşturur. OpenThread, Thread içinde MAC güvenliği, örgü bağlantısı kurulumu ve örgü yönlendirme gibi IPv6, 6LoWPAN, IEEE 802.15.4 gibi tam ağ katmanı kapsamını içerir.

Telink, OpenThread uygulamasını Zephyr RTOS'ya entegre ederek Telink donanımıyla sorunsuz uyumluluk sağladı. Bu entegrasyon için kaynak koduna GitHub'dan kolayca erişilebilir. Bu kod, yazılım geliştirme kiti (SDK) olarak da sunulmaktadır.

Bu codelab'de OpenThread'i gerçek donanım üzerinde programlayacak, Thread ağı oluşturup yönetecek ve düğümler arasında mesaj alışverişi yapacaksınız. Aşağıdaki resimde, codelab'de bir OT Sınır Yönlendirici (OTBR) ve bir Thread cihazı içeren donanım kurulumu gösterilmektedir.

codelab_overview.png

Neler öğreneceksiniz?

  • Telink Zephyr geliştirme ortamını kullanarak OpenThread uygulamasını ayarlamak.
  • OpenThread CLI örneklerini (ot-cli-ftd ve ot-rcp) derlemek ve Telink B91 Geliştirme Kartlarına yüklemek için.
  • Raspberry Pi 3B veya sonraki sürümlerde Docker kullanarak OpenThread Sınır Yönlendirici (OTBR) ayarlamak için.
  • OTBR üzerinde Thread ağı oluşturmak için.
  • Bant dışı hata ayıklamayı kullanarak Thread ağına cihaz eklemek için.
  • CLI kullanarak Thread ağındaki düğümler arasındaki bağlantıyı doğrulamak için kullanılır.

Gerekenler

Donanım:

  • İki B91 Geliştirme Kurulu.
  • Raspbian OS görüntüsüne sahip bir Raspberry Pi 3B+ veya üzeri.
  • En az iki USB bağlantı noktasına sahip bir Linux makinesi.
  • İnternete bağlı bir anahtar (veya Yönlendirici) ve birkaç Ethernet kablosu.

Yazılım:

  • Telink Yazma ve Hata Ayıklama Aracı — LinuxBDT.
  • Seri bağlantı noktası terminal aracı (ör. PuTTY).
  • Git ve West gibi diğer araçlar.

2. Ön koşullar

Thread Concepts ve OpenThread CLI)

Bu codelab'den önce OpenThread Simülasyon codelab'ini inceleyerek temel Thread kavramları ve OpenThread CLI hakkında bilgi edinebilirsiniz.

Linux Makinesi

Linux makinesi (Ubuntu v20.04 LTS veya sonraki sürümleri), Telink Zephyr geliştirme ortamını kurmak ve tüm Thread geliştirme kartlarını sunmak için kullanılan derleme makinesi olarak işlev görür. Bu görevleri gerçekleştirmek için Linux makinesinin iki kullanılabilir USB bağlantı noktası ve internet bağlantısı gerekir.

Seri Bağlantı Noktası Bağlantısı ve Terminaller

Cihazı doğrudan Linux makinesinin USB bağlantı noktasına takabilirsiniz. Ayrıca, cihazlara erişmek için bir seri bağlantı noktası terminal aracına ihtiyacınız olacaktır.

Bu codelab'de FTD Birleştirici ve Raspberry Pi'yi kontrol etmek için PuTTY terminal aracı kullanılmıştır. Kullanımıyla ilgili bir genel bakış sunar, ancak başka terminal yazılımları da kullanılabilir.

Bu codelab'de iki set B91 Geliştirme Kiti olmalıdır. Aşağıdaki fotoğrafta, tek bir grupta bulunması gereken minimum bileşenler gösterilmektedir.

overview.png

Bu kitlerden biri RCP (Radyo Ortak İşlemcisi), diğeri ise FTD (Tam İş Parçacığı Cihazı) olarak kullanılır. Henüz sete sahip değilseniz Telink resmi web sitesinden daha fazla bilgi edinebilirsiniz. Kullanılacak bazı bileşenler şunlardır:

Dizin

Ad

1

Telink B91 Geliştirme Kurulu

2

Telink Yan Tahta

3

2,4 GHz Anten

4

USB Kablosu (USB A - mini USB)

Raspbian Pi 3B+ veya Raspbian OS Görüntüsü ile Raspberry Pi 3B+

Bu codelab'de Raspbian Bullseye Lite OS görüntüsüne sahip Raspbian Pi 3B+ veya daha yeni bir Raspbian Bullseye Lite OS görüntüsü ya da Masaüstüyle Raspbian Bullseye gereklidir. Ethernet üzerinden internete bağlanır ve OpenThread Sınır Yönlendirici (OTBR) için ana makine olarak yapılandırılır.

Ağ Bağlantısı

İnternete bağlı bir anahtar (veya yönlendirici) ve birkaç Ethernet kablosu. Bunlar, Raspberry Pi'yi Linux makinesine bağlamak için kullanılır. Böylece, ana makine üzerinden Raspberry Pi'nin kullanıcı yapılandırması kolaylaşır.

LinuxBDT

Tüm Telink Çip serileri için geçerli olan Telink Yazma ve Hata Ayıklama Aracı (BDT), OpenThread donanım yazılımını Telink B91 Geliştirme Kartları'na silmenize ve güncelleme yapmanıza olanak tanır. Linux makinenize X86 tabanlı Linux sürümü linuxBDT'yi yükleyin.

Diğer

  • Telink Zephyr Geliştirme Ortamı'nı kurmak için Git'e göz atın.
  • West, Zephyr projesini yönetmek ve OpenThread ikili programları oluşturmak için kullanılır.

3. Donanım Yazılımı Kurma

Linux makinesinde bir CLI terminali açın ve APT'nizin güncel olduğundan emin olmak için aşağıdaki komutları çalıştırarak başlayın.

$ sudo apt update
$ sudo apt upgrade

Bu tamamlandıktan sonra aşağıdaki adımlarla devam edin.

  1. Bağımlılıkları yükleyin.
    $ wget https://apt.kitware.com/kitware-archive.sh
    $ sudo bash kitware-archive.sh
    $ sudo apt install --no-install-recommends git cmake ninja-build \
    gperf ccache dfu-util device-tree-compiler python3-dev python3-pip \
    python3-setuptools python3-tk python3-wheel xz-utils file make gcc \
    gcc-multilib g++-multilib libsdl2-dev
    
    Zephyr şu anda CMake (3.20.0), Python3 (3.6) ve Devicetree Compiler (1.4.6) gibi ana bağımlılıkların minimum sürümlerini gerektirir.
    $ cmake --version
    $ python3 --version
    $ dtc --version
    
    Sonraki adımlara geçmeden önce sisteminizde yüklü sürümleri doğrulayın. Sürümler doğru değilse APT yansıtmasını kararlı ve güncel bir yansıtmaya geçirin ya da bu bağımlılıkları manuel olarak güncelleyin.
  2. Batıya yükle.
    $ pip3 install --user -U west
    $ echo 'export PATH=~/.local/bin:"$PATH"' >> ~/.bashrc
    $ source ~/.bashrc
    
    ~/.local/bin öğesinin $PATH ortam değişkeninizde bulunduğundan emin olun.
  3. Zephyr Projesi kaynak kodunu alın.
    $ west init ~/zephyrproject
    $ cd ~/zephyrproject
    $ west update
    $ west blobs fetch hal_telink
    $ west zephyr-export
    
  4. Zephyr için ek Python bağımlılıkları yükleyin.
    $ pip3 install --user -r ~/zephyrproject/zephyr/scripts/requirements.txt
    
  5. Zephyr araç zincirini kurun. Çoğu Jamboard'u yüklemenizi sağlamak için Zephyr araç zincirini (yaklaşık 1~2 GB) yerel bir dizine indirin.
    $ wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.1/zephyr-sdk-0.16.1_linux-x86_64.tar.xz
    $ wget -O - https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.1/sha256.sum | shasum --check --ignore-missing
    
    Zephyr SDK'sını indirin ve aşağıda gösterildiği gibi önerilen yola yerleştirin.
    $HOME/zephyr-sdk[-x.y.z]
    $HOME/.local/zephyr-sdk[-x.y.z]
    $HOME/.local/opt/zephyr-sdk[-x.y.z]
    $HOME/bin/zephyr-sdk[-x.y.z]
    /opt/zephyr-sdk[-x.y.z]
    /usr/zephyr-sdk[-x.y.z]
    /usr/local/zephyr-sdk[-x.y.z]
    
    Burada [-x.y.z], -0.16.1 gibi herhangi bir metin olabilen isteğe bağlı bir metindir. SDK yüklendikten sonra dizin taşınamaz. Ardından Zephyr araç zincirini yükleyin.
    $ tar xvf zephyr-sdk-0.16.1_linux-x86_64.tar.xz
    $ cd zephyr-sdk-0.16.1
    $ ./setup.sh -t riscv64-zephyr-elf -h -c
    
  6. Hello World örneğini oluşturma Öncelikle Hello World örneğini kullanarak resmi Zephyr proje yapılandırmasının doğru olduğundan emin olun, ardından özel projenizi oluşturma işlemine devam edin.
    $ cd ~/zephyrproject/zephyr
    $ west build -p auto -b tlsr9518adk80d samples/hello_world
    
    Zephyr deposunun kök dizininden hello_world örneğini oluşturmak için West derleme komutunu kullanın. zephyr.bin adlı donanım yazılımını build/zephyr directory altında bulabilirsiniz.
  7. Zephyr ortamı komut dosyasını ~/.bashrc ürününe ekleyin. Aşağıdaki komutları yürütün.
    $ echo "source ~/zephyrproject/zephyr/zephyr-env.sh" >> ~/.bashrc
    $ source ~/.bashrc
    
  8. Telink Zephyr uzak deposunu ekleyin. Telink deposunu yerel olarak geliştirme dalı olarak indirin ve güncelleyin.
    $ cd ~/zephyrproject/zephyr
    $ git remote add telink-semi https://github.com/telink-semi/zephyr
    $ git fetch telink develop
    $ git checkout develop
    $ west update
    $ west blobs fetch hal_telink
    

Daha fazla bilgi için Zephyr Doc – Başlangıç Kılavuzu'na bakabilirsiniz.

Telink LinuxBDT aracını indirin ve Linux makinenizdeki yerel bir dizine (ör. ~ ana dizini) ayıklayın. Böylece, donanım yazılımını B91 Geliştirme Kartı'na yüklemeyi etkinleştirin.

$ cd ~
$ wget http://wiki.telink-semi.cn/tools_and_sdk/Tools/BDT/LinuxBDT.tar.bz2
$ tar -vxf LinuxBDT.tar.bz2 

Yazma Kartı'nı USB arayüzü üzerinden Linux makinesine bağlayın ve ardından aşağıdaki komutları girin.

$ cd LinuxBDT
$ sudo ./bdt lsusb -v
Bus 002 Device 001: ID 1d6b:0003 xHCI Host Controller
Bus 001 Device 003: ID 0bda:565a Integrated_Webcam_HD
Bus 001 Device 023: ID 413c:301a Dell MS116 USB Optical Mouse
Bus 001 Device 037: ID 248a:826a Telink Web Debugger v3.6
Bus 001 Device 001: ID 1d6b:0002 xHCI Host Controller

"Telink Web Debugger 3.6 sürümü" mesajını görüyorsanız bu, BDT programcısının Linux makinesine başarıyla bağlandığını gösterir.

Donanım Yazılımı Derlemesi

Bu codelab'de iki tür OpenThread donanım yazılımı derlenir:

  • ot-cli-ftd,
  • ve ot-rcp.

Derleme yöntemleri şunlardır:

  1. Ortak Radyo İşleyici(ot-rcp)
    $ cd ~/zephyrproject
    $ rm -rf build_ot_coprocessor
    $ west build -b tlsr9518adk80d -d build_ot_coprocessor zephyr/samples/net/openthread/coprocessor -- -DDTC_OVERLAY_FILE="usb.overlay" -DOVERLAY_CONFIG=overlay-rcp-usb-telink.conf
    
  2. Etkileşimli Komut Satırı İçeren Tam Öne Çıkan İleti Dizisi Cihazı (ot-cli-ftd)
    $ cd ~/zephyrproject
    $ rm -rf build_ot_cli_ftd
    $ west build -b tlsr9518adk80d -d build_ot_cli_ftd zephyr/samples/net/openthread/cli -- -DOVERLAY_CONFIG=overlay-telink-fixed-mac.conf -DCONFIG_OPENTHREAD_FTD=y
    

Donanım Yazılımı Flaş

B91 Geliştirme Kartı'nı aşağıdaki resimde gösterildiği gibi USB kablosu kullanarak Yazma Kartı'na bağlayın.

connection_overview.png

Donanım yazılımı yazma işlemini gerçekleştirmek için komut satırında aşağıdaki komutları yürütün (örnek olarak ot-cli-ftd donanım yazılımının yanıp sönmesini kullanın).

$ cd ~/zephyrproject/build_ot_cli_ftd/zephyr
$ cp zephyr.bin ~/LinuxBDT/bin/ot-cli-ftd.bin
$ cd ~/LinuxBDT
$ sudo ./bdt 9518 ac
 Activate OK!
$ sudo ./bdt 9518 wf 0 -i bin/ot-cli-ftd.bin
 EraseSectorsize...
 Total Time: 2181 ms
 Flash writing...
 [100%][-] [##################################################]
 File Download to Flash at address 0x000000: 491700 bytes
 Total Time: 30087 ms

ot-rcp için flash yöntemi, ot-cli-ftd için kullanılanla aynıdır. Ancak donanım yazılımı yolları ve adları arasında farklılıklar vardır.

Yanıp söndükten sonra iki B91 Geliştirme Kartını uygun şekilde işaretleyerek ayırt edin. ot-cli-ftd ile gösterilen panoyu "FTD Birleştirici" olarak etiketleyin. ve pano "RCP" olarak ot-rcp ile yanıp söndü.

4. FTD Birleştirme Cihazı için Seri Konsol yapılandırma

Resimde gösterildiği gibi, FTD Birleştirici'yi doğrudan Linux makinesinin USB bağlantı noktasına takın.

usb_connection.png

FTD Birleştirici Cihazı'nı Linux makinesine bağladıktan sonra PuTTY'yi açın. Ardından yeni bir terminal oluşturun, seri bağlantı noktası bilgilerini ayarlayın ve seri bağlantı noktasını açın.

uart_console.png

OpenThread komut satırı referansını burada bulabilirsiniz: OpenThread CLI Reference. Tüm komutların önüne ot eklediğinizden emin olun.

Örnekler:

> ot state
disabled
Done
> ot channel
11
Done
>

5. Raspberry Pi'yi OpenThread Sınır Yönlendirici olarak ayarlama

OpenThread Sınır Yönlendiricisi iki ana bölümden oluşan bir cihazdır:

  • Raspberry Pi, Sınır Yönlendirici (BR) işlevi görmek için gereken tüm hizmetleri ve donanım yazılımını içerir.
  • RCP, Thread iletişiminden sorumludur.

Ortak Telsiz İşlemcisi (RCP)

ot-rcp donanım yazılımını yüklemek için ot-cli-ftd donanım yazılımının yanıp sönme işlemiyle aynı adımları izleyin. B91 Geliştirme Kartı'nı aşağıdaki şekilde gösterildiği gibi Raspberry Pi'deki USB bağlantı noktasına bağlayın.

OTBR_overview.png

Ahududu Pi

  1. Raspbian Bullseye Lite OS görüntüsünün veya Masaüstüyle Raspbian Bullseye'nin SD karta düzgün şekilde yazıldığından emin olun.
  2. Raspbian Pi'ye SSH uygulama veya doğrudan Raspbian Masaüstü ile çalışma seçeneğiniz vardır. Bu codelab'de SSH kullanılır.
  3. Bir sonraki adımda OTBR Docker'ı yüklemeye geçmeden önce yerel depo ve paket yöneticisini güncellediğinizden emin olun.
    $ sudo apt-get update
    $ sudp apt-get upgrade
    

Docker'ı yükle

Önceki adımda yerel depo ve paket yöneticisi APT'yi güncellerseniz Raspberry Pi'yi yeniden başlatın ve bir SSH terminal penceresi açın.

  1. Docker'ı yükleyin:
    $ curl -sSL https://get.docker.com | sh
    
  2. Geçerli hesabı bir Docker grubuna yerleştirerek izni verin. Böylece her komutun önüne sudo eklenmesi gerekmez.
    $ sudo usermod -aG docker $USER
    
    Geçerli olması için Raspberry Pi'yi yeniden başlatmanız gerekiyor.
  3. Docker başlamadıysa şunu başlatın:
    $ sudo dockerd
    
  4. OTBR güvenlik duvarı komut dosyaları, Docker container'ının içinde kurallar oluşturur. Bundan önce, iptables'ın çekirdek modülünü yüklemek için modprobe yürütün.
    $ sudo modprobe ip6table_filter
    

Docker'ı Yapılandırma ve Çalıştırma

Bu codelab, OTBR Docker görüntüsünü doğrudan OpenThread Docker Hub'dan çeker. Bu görüntü, OpenThread ekibi tarafından test edilip doğrulandı.

  1. En son görüntüyü alın:
    $ docker pull openthread/otbr:latest
    
  2. Docker container'ındaki görüntü listesini kontrol edin:
    $ docker images
    REPOSITORY        TAG       IMAGE ID       CREATED      SIZE
    openthread/otbr   latest    db081f4de15f   6 days ago   766MB
    
  3. /dev kontrol ederek RCP cihazının seri bağlantı noktası adını belirleyin. ttyACM0, RCP'nin doğru şekilde bağlandığını belirtir.
    $ ls /dev/tty*
    ...
    /dev/ttyACM0
    ... 
    
  4. OTBR Docker'ı ilk kez çalıştırın ve RCP'nin seri bağlantı noktasına (ttyACM0) başvurun. Bu OTBR Docker'ı kullanmaya devam etmek istiyorsanız docker start otbr komutunu kullanın.
    $ docker run --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 openthread/otbr --radio-url spinel+hdlc+uart:///dev/ttyACM0
    
  5. Raspberry Pi ile RCP arasındaki bağlantıyı test etmek için yeni bir SSH terminal penceresi açın.
    $ docker exec -ti otbr sh -c "sudo ot-ctl"
    > state 
    disabled
    Done
    

İsteğe bağlı Docker komutları:

  • Çalışan Docker container'ı hakkında bilgi edinin:
    $ docker ps -aq
    
  • OTBR Docker'ı durdurun:
    $ docker stop otbr
    
  • OTBR Docker'ı kaldırın:
    $ docker rm otbr
    
  • OTBR Docker'ı yeniden yükleyin:
    $ docker restart otbr
    

Bu noktada bir FTD Birleştirici cihazı ve bir OTBR hazırdır. Thread ağını oluşturmak için sonraki adıma geçebilirsiniz.

6. Thread Ağı Oluşturma

RCP'de Thread Ağı oluşturma

Thread ağı oluşturmak için OTBR üzerinde ot-ctl kabuğunu kullanırız. Son bölümde kabuktan çıktıysanız aşağıdaki komutu girerek SSH terminalinde tekrar başlatın:

$ docker exec -ti otbr sh -c "sudo ot-ctl"

Ardından, komutları tabloda belirtilen sırayla girin ve sonraki adıma geçmeden önce her adımın beklenen sonuca ulaştığından emin olun.

Dizin

Komut

Giriş

Beklenen Yanıt

1

dataset init new

Yeni bir rastgele ağ veri kümesi oluşturun.

Bitti

2

dataset commit active

Değişken olmayan depolamadaki Aktif Operasyonel Veri Kümesine yeni veri kümesi kaydedin.

Bitti

3

ifconfig up

IPv6 arayüzünü açın.

Bitti

4

thread start

Thread protokolü işlemini etkinleştirin ve bir Thread ağına ekleyin.

Bitti

İleti dizisi arayüzünün hazır olması için 10 saniye bekleyin.

5

state

Cihaz durumunu kontrol edin.Bu komut, lider olana ve sonraki adıma geçene kadar birden fazla kez çağrılabilir.

leader
Done

6

dataset active

Etkin Operasyonel Veri Kümesinin tamamını kontrol edin ve ağ anahtarını kaydedin.











ot-cli-ftd cihaz bu Thread ağına katıldığında ağ oluşturma sırasında OTBR tarafından rastgele oluşturulan ağ anahtarı kullanılır.

Bant dışı devreye alma yoluyla FTD Birleştirici'yi Thread'e ekleme

Bant dışı komisyon, ağ kimlik bilgilerinin kablosuz olmayan yöntemlerle (örneğin, OpenThread CLI'a manuel olarak girilmesi) ağa katılmayı bekleyen cihazlara aktarılmasını ifade eder. Aşağıdaki komutları seri konsolda FTD Birleştiriciye doğru sırayla girin.

Dizin

Komut

Giriş

Beklenen Yanıtlar

1

ot dataset networkkey c312485187484ceb5992d2343baaf93d

Bir cihazın Thread ağına bağlanması için yalnızca Ağ Anahtarı gereklidir.

Bitti

2

ot dataset commit active

Değişken olmayan depolamadaki Aktif Operasyonel Veri Kümesine yeni veri kümesi kaydedin.

Bitti

3

ot ifconfig up

IPv6 arayüzünü açın.

Bitti

4

ot thread start

Thread protokolü işlemini etkinleştirin ve bir Thread ağına ekleyin.

Bitti

Cihaz katılıp kendini yapılandırırken 20 saniye bekleyin.

5

ot state

Cihaz durumunu kontrol edin.

çocuk/yönlendirici
Bitti

Topoloji

Aşağıdaki kod snippet'lerine benzer yanıtlar almak için SSH terminaline ipaddr, child table, router table gibi komutlar girin.

> ipaddr rloc
fd8c:60bc:a98:c7ba:0:ff:fe00:b000
Done
> child table
| ID  | RLOC16 | Timeout    | Age        | LQ In | C_VN |R|D|N|Ver|CSL|QMsgCnt|Suprvsn| Extended MAC     |
+-----+--------+------------+------------+-------+------+-+-+-+---+---+-------+-------+------------------+
|   1 | 0xb001 |        240 |         23 |     3 |   51 |1|1|1|  3| 0 |     0 |   129 | 82bc12fbe783468e |

Done
> router table
| ID | RLOC16 | Next Hop | Path Cost | LQ In | LQ Out | Age | Extended MAC     | Link |
+----+--------+----------+-----------+-------+--------+-----+------------------+------+
| 44 | 0xb000 |       63 |         0 |     0 |      0 |   0 | 7ae354109d611f7e |    0 |

Done
...
> child table
| ID  | RLOC16 | Timeout    | Age        | LQ In | C_VN |R|D|N|Ver|CSL|QMsgCnt|Suprvsn| Extended MAC     |
+-----+--------+------------+------------+-------+------+-+-+-+---+---+-------+-------+------------------+

Done
> router table
| ID | RLOC16 | Next Hop | Path Cost | LQ In | LQ Out | Age | Extended MAC     | Link |
+----+--------+----------+-----------+-------+--------+-----+------------------+------+
| 33 | 0x8400 |       63 |         0 |     3 |      3 |  13 | e61487c1cda940a6 |    1 |
| 44 | 0xb000 |       63 |         0 |     0 |      0 |   0 | 7ae354109d611f7e |    0 |

Done

OTBR'nin RLOC16 değeri 0xb000, FTD Birleştirici'nin RLOC16'si ise başlangıçta 0xb001. Daha sonra, Yönlendirici Kimliği alındıktan sonra FTD Birleştirici'nin RLOC16 değeri 0x8400 haline gelir. FTD Joiner'ın bir çocuktan yönlendiriciye yükseltildiği görülebilir.

Mevcut Thread ağı iki düğüm içerir ve topoloji aşağıdaki şekilde gösterildiği gibidir.

topology.png

7. Thread Cihazları Arasındaki İletişim

ICMPv6 İletişim

Aynı ağdaki Thread cihazlarının birbiriyle iletişim kurup kuramayacağını kontrol etmek için ping komutunu kullanırız. Öncelikle, cihazın RLOC'sini almak için ipaddr komutunu kullanın.

> ipaddr
fd8c:60bc:a98:c7ba:0:ff:fe00:fc11
fdbd:7274:649c:1:1d19:9613:f705:a5af
fd8c:60bc:a98:c7ba:0:ff:fe00:fc10
fd8c:60bc:a98:c7ba:0:ff:fe00:fc38
fd8c:60bc:a98:c7ba:0:ff:fe00:fc00
fd8c:60bc:a98:c7ba:0:ff:fe00:b000       # Routing Locator (RLOC)
fd8c:60bc:a98:c7ba:5249:34ab:26d1:aff6
fe80:0:0:0:78e3:5410:9d61:1f7e
Done

Ping işlemini yürütmek için FTD Birleştirici'nin seri konsoluna aşağıdaki komutu girin.

> ot ping fd8c:60bc:a98:c7ba:0:ff:fe00:b000
16 bytes from fd8c:60bc:a98:c7ba:0:ff:fe00:b000: icmp_seq=1 hlim=64 time=19ms
1 packets transmitted, 1 packets received. Packet loss = 0.0%. Round-trip min/avg/max = 19/19.0/19 ms.
Done

Seri bağlantı noktasının çıkış yanıtı, OTBR tarafının ping isteğini aldığını ve FTD Birleştirici'nin OTBR tarafından döndürülen ping yanıtını aldığını belirtir. İki cihaz arasındaki iletişimin başarılı olması.

UDP İletişimi

OpenThread tarafından sağlanan uygulama hizmetleri de UDP'yi içerir. Thread API'sini kullanarak Thread ağındaki düğümler arasında bilgi aktarabilir veya Sınır Yönlendiricisi aracılığıyla harici ağlara bilgi aktarabilirsiniz. OpenThread'in UDP API'sinin ayrıntılı tanıtımı OpenThread CLI - UDP Örneği bölümünde bulabilirsiniz. Bu codelab'de, OTBR ve FTD Birleştirici arasında bilgi aktarmak için bazı API'ler kullanılacaktır.

İlk olarak OTBR'nin ağ-yerel SIM kimliğini alın. Bu adres aynı zamanda Thread cihazının IPv6 adreslerinden biridir ve aynı Thread ağ bölümündeki Thread cihazlarına erişmek için kullanılabilir.

> ipaddr mleid
fd8c:60bc:a98:c7ba:5249:34ab:26d1:aff6
Done

OTBR UDP'yi etkinleştirmek ve cihazın 1022 bağlantı noktasını bağlamak için SSH terminaline aşağıdaki komutları girin.

> udp open
Done
> udp bind :: 1022
Done

Seri konsoluna aşağıdaki komutları girin ve FTD Joiner'ın UDP'sini etkinleştirin. Cihazın 1022 bağlantı noktasını bağlayın ve ardından OTBR'ye 5 baytlık hello mesajı gönderin.

> ot udp open 
Done
> ot udp bind :: 1022
Done
> ot udp send fd8c:60bc:a98:c7ba:5249:34ab:26d1:aff6 1022 hello
Done

SSH terminali aşağıdaki bilgileri verir. OTBR, FTD Joiner'dan hello mesajını alır. Bu, UDP iletişiminin başarılı olduğu anlamına gelir.

> 5 bytes from fd8c:60bc:a98:c7ba:9386:63cf:19d7:5a61 1022 hello

8. Tebrikler

Basit bir Thread ağı oluşturdunuz ve bu ağ içindeki iletişimi doğruladınız.

Artık şunları biliyorsunuz:

  • Telink Zephyr geliştirme ortamı nasıl oluşturulur ve kullanılır?
  • ot-cli-ftd ve ot-rcp ikili programları oluşturma ve bunları Telink B91 Geliştirme Kartlarına yükleme.
  • Raspberry Pi 3B+ veya daha yeni bir sürümü Docker kullanarak OpenThread Sınır Yönlendirici (OTBR) olarak ayarlama.
  • OTBR'de Thread ağı oluşturma.
  • Bant dışı komisyon aracılığıyla Thread ağına cihaz ekleme
  • Thread ağındaki düğümler arasındaki bağlantıyı doğrulama.

Diğer Okumalar

Aşağıdakiler de dahil olmak üzere çeşitli OpenThread kaynakları hakkında bilgi edinmek için openthread.io ve GitHub'a göz atın:

Referans belgeler: