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

1. Giriş

26b7f4f6b3ea0700.png

OpenThread, Nesnelerin İnterneti (IoT) cihazları için tasarlanmış sağlam ve güvenli bir kablosuz bağlantılı ağ protokolü olan Thread® ağ protokolünün açık kaynaklı bir uygulamasıdır. Google'ın Nest ekibi tarafından geliştirilen OpenThread, açık kaynak projesi olarak geliştirici topluluğunun erişimine açıktır.

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

Telink, OpenThread uygulamasını Zephyr RTOS'ye entegre ederek Telink donanımıyla sorunsuz uyumluluk sağladı. Bu entegrasyonun kaynak koduna GitHub'dan kolayca erişebilirsiniz. Ayrıca, yazılım geliştirme kiti (SDK) olarak da sunulmaktadır.

Bu codelab'de, OpenThread'i gerçek donanımda 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 Kenar 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 için.
  • OpenThread CLI örneklerini (ot-cli-ftd ve ot-rcp) oluşturmak ve bunları Telink B91 Development Boards'a yüklemek için.
  • RAPberry Pi 3B+ veya sonraki sürümlerde Docker kullanarak OpenThread Sınır Yönlendirici (OTBR) ayarlamak için:
  • OTBR'de Thread ağı oluşturmak için.
  • Bant dışı hata ayıklama özelliğini kullanarak cihazları Thread ağına eklemek için.
  • CLI kullanarak Thread ağındaki düğümler arasındaki bağlantıyı doğrulamak için.

Gerekenler

Donanım:

  • İki B91 Geliştirme Kartı.
  • Rspibian OS Image ile One Rasberry Pi 3B+ veya daha fazlası.
  • En az iki USB bağlantı noktası olan bir Linux makine.
  • İnternete bağlı bir anahtar (veya Yönlendirici) ve birkaç Ethernet kablosu.

Yazılım:

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

2. Ön koşullar

Thread Concepts ve OpenThread CLI

Bu codelab'den önce temel İş Parçacığı kavramlarına ve OpenThread CLI'ye aşina olmak için OpenThread Simulation codelab'e göz atmak yararlı olabilir.

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ı yüklemek için derleme makinesi görevi görür. Linux makinesinin bu görevleri yerine getirebilmesi için iki USB bağlantı noktası ve internet bağlantısı olması 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 Joiner ve Raspberry Pi'yi kontrol etmek için PuTTY terminal aracı kullanılır. Kullanımına genel bir bakış sunar ancak başka terminal yazılımları da kullanılabilir.

Bu codelab'de iki B91 Geliştirme Kiti seti gereklidir. Aşağıdaki fotoğrafta, tek bir kümedeki minimum gerekli bileşenler gösterilmektedir.

overview.png

Bu setlerden biri RCP (Radyo Ortak İşlemci) olarak kullanılırken diğeri FTD (Tam İş Parçacıklı Cihaz) olarak kullanılacaktır. Bu sete henüz sahip değilseniz daha fazla bilgiyi Telink resmi web sitesinden edinebilirsiniz. Kullanılacak bazı bileşenler aşağıda belirtilmiştir:

Dizin

Ad

1

Telink B91 Geliştirme Kurulu

2

Telink Yakma Tahtası

3

2,4 Ghz Anten

4

USB Kablosu (USB A'dan mini USB'ye)

Rasberry Pi 3B+ veya Rspibian OS Image ile daha yeni

Bu codelab'de, Rasbian Bullseye Lite OS görüntüsü ya da Masaüstü ile Rspibian Bullseye içeren bir RASPbian Pi 3B+ veya daha yeni bir sürüm gereklidir. Ethernet üzerinden internete bağlıdı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. Bu API'ler, Rasberry Pi'yi Linux makinesine bağlamak için kullanılır. Bu sayede, ana makine üzerinden Rasberry Pi'nin yapılandırılmasını kolaylaştırır.

LinuxBDT

Tüm Telink Chip serileri için geçerli olan Telink Burning and Hata Ayıklama Aracı (BDT), OpenThread donanım yazılımını Telink B91 Development Board'lara silmenize ve yüklemenize olanak tanır. X86 tabanlı linuxBDT linux sürümünü Linux makinenize yükleyin.

Diğer emojiler

  • Telink Zephyr Geliştirme Ortamı'nı kurmak için Git!
  • West, Zephyr projesini yönetmek ve OpenThread ikili programları derlemek için.

3. Donanım Yazılımını Ayarla

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

Bunu yaptı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 temel bağımlılıkların minimum sürümlerini gerektirmektedir.
    $ 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 veya bu bağımlılıkları manuel olarak güncelleyin.
  2. Batıya yükleyin.
    $ pip3 install --user -U west
    $ echo 'export PATH=~/.local/bin:"$PATH"' >> ~/.bashrc
    $ source ~/.bashrc
    
    $PATH ortam değişkeninizde ~/.local/bin bulunduğundan emin olun.
  3. Zephyr Project'in 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 kartı yüklemenize olanak tanımak 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'yı 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]
    
    [-x.y.z], herhangi bir metin olabilen isteğe bağlı bir metindir (ör. -0.16.1). 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şturun. Öncelikle Hello World örneğini kullanarak resmi Zephyr proje yapılandırmasının doğru olduğunu onaylayın, ardından özel projenizi oluşturma işlemine devam edin.
    $ cd ~/zephyrproject/zephyr
    $ west build -p auto -b tlsr9518adk80d samples/hello_world
    
    hello_world örneğini, Zephyr deposunun kök dizininden derlemek için Batı 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 kaynağına 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 geliştirme dalı olarak yerel olarak indirip 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'nu inceleyebilirsiniz.

Telink LinuxBDT aracını indirin ve Linux makinenizdeki ~ ana dizini gibi yerel bir dizine çıkararak donanım yazılımını B91 Geliştirme Kurulu'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 

Burning Board'u, USB arayüzü aracılığıyla Linux makinesine bağlayın ve 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 v3.6" mesajını görmeniz, BDT programcısının Linux makinesine başarılı bir şekilde bağlandığını gösterir.

Donanım Yazılımı Derlemesi

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

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

Derleme yöntemleri şunlardır:

  1. Radyo Ortak İşlemci(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ı Flash'ı

Aşağıdaki şekilde gösterildiği gibi, USB kablosu kullanarak bir B91 Geliştirme Kartını Yanma Tahtasına bağlayın.

connection_overview.png

Donanım yazılımına 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 uygulananla temelde 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, uygun şekilde işaretleyerek iki B91 Geliştirme Kartını ayırt edin. ot-cli-ftd ile yanıp sönen panoyu "FTD Joiner" ve ot-rcp ile yanıp sönen panoyu "RCP" olarak etiketleyin.

4. FTD Birleştirici Cihazı için Seri Konsolu Yapılandırma

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

usb_connection.png

FTD Joiner 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ı şuradadır: OpenThread CLI Reference. Tüm komutların önüne ot gönderdiğinizden emin olun.

Örnekler:

> ot state
disabled
Done
> ot channel
11
Done
>

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

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

  • Raffberry Pi, Sınır Yönlendirici (BR) olarak çalışmak için gereken tüm hizmetleri ve donanım yazılımını içerir.
  • RCP, iş parçacığı iletişiminden sorumludur.

Radyo Ortak İşlemci(RCP)

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

OTBR_overview.png

Ahududu Pi

  1. Rasbian Bullseye Lite OS görüntüsü veya Rasbian Bullseye with Masaüstü dosyasının SD karta düzgün şekilde yazıldığından emin olun.
  2. SSH'yi Rasberry Pi'ye bağlama veya doğrudan Rspibian Masaüstü ile çalışma seçeneğiniz vardır. Bu codelab'de SSH kullanılacak.
  3. Bir sonraki adımda OTBR Docker'ı yüklemeye devam etmeden önce yerel depoyu ve paket yöneticisini güncellediğinizden emin olun.
    $ sudo apt-get update
    $ sudp apt-get upgrade
    

Docker'ı yükle

Önceki adımda yalnızca yerel depoyu ve paket yöneticisi APT'yi güncellediyseniz Rhume Pi'yi yeniden başlatıp bir SSH terminal penceresi açın.

  1. Docker'ı yükle:
    $ curl -sSL https://get.docker.com | sh
    
  2. Her komutun önüne sudo öğesinin eklenmesine gerek kalmaması için mevcut hesabı bir Docker grubuna yerleştirerek izni verin.
    $ sudo usermod -aG docker $USER
    
    Bu değişikliğin etkili olması için RASPberry Pi'yi yeniden başlatmanız gerekir.
  3. Docker başlamadıysa başlatın:
    $ sudo dockerd
    
  4. OTBR güvenlik duvarı komut dosyaları, Docker kapsayıcısının içinde kurallar oluşturur. Bundan önce, iptables çekirdek modülünü yüklemek için modprobe komutunu çalıştırı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ğrulanmıştır.

  1. En son resmi çekin:
    $ docker pull openthread/otbr:latest
    
  2. Docker kapsayıcısındaki görüntü listesini kontrol edin:
    $ docker images
    REPOSITORY        TAG       IMAGE ID       CREATED      SIZE
    openthread/otbr   latest    db081f4de15f   6 days ago   766MB
    
  3. RCP cihazının seri bağlantı noktası adını belirlemek için /dev onay kutusunu işaretleyin. ttyACM0, RCP'nin doğru şekilde bağlandığını gösterir.
    $ ls /dev/tty*
    ...
    /dev/ttyACM0
    ... 
    
  4. OTBR Docker'ı ilk kez çalıştırın ve RCP'nin seri bağlantı noktasını (ttyACM0) belirtin. 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 ve 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'ı durdur:
    $ docker stop otbr
    
  • OTBR Docker'ı kaldırın:
    $ docker rm otbr
    
  • OTBR Docker'ı yeniden yükle:
    $ docker restart otbr
    

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

6. Thread Ağı Oluşturma

RCP'de Thread Ağı oluşturma

İş parçacığı ağı oluşturmak için OTBR'de ot-ctl kabuğunu kullanırız. Son bölümde kabuktan çıktıysanız SSH terminalinde tekrar başlatmak için aşağıdaki komutu girin:

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

Ardından, komutları tabloda belirtilen sırada girin ve sonraki adıma geçmeden önce her bir 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

Yeni veri kümesini, geçici olmayan bir depolama alanındaki Etkin Operasyonel Veri Kümesine 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, öncü hale gelip bir sonraki adıma geçene kadar birden çok kez çağrılabilir.

lider
Bitti

6

dataset active

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

Active Timestamp: 1
Kanal: 13
Kanal Maskesi: 0x07fff800
Ext PAN Kimliği: b07476e168eda4fc
Mesh Yerel Öneki: fd8c:60bc:a98:c7ba::/64
Ağ Anahtarı: c31248518748




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

Bant dışı devreye alma aracılığıyla Thread'e FTD Joiner'ı ekleyin

Bant dışı devreye alma, ağ kimlik bilgilerinin kablosuz olmayan yöntemlerle (örneğin, OpenThread CLI'ye manuel olarak girme) ağa katılmayı bekleyen cihazlara aktarılması anlamına gelir. Aşağıdaki komutları seri konsolda FTD Joiner'a 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

Yeni veri kümesini, geçici olmayan bir depolama alanındaki Etkin Operasyonel Veri Kümesine 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 bağlanıp kendini yapılandırırken 20 saniye bekleyin.

5

ot state

Cihaz durumunu kontrol edin.

alt/yönlendirici
Bitti

Topoloji

Aşağıdaki kod snippet'leri gibi 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 için RLOC16 0xb000 ve FTD Joiner'ın RLOC16 başlangıçta 0xb001 olur. Daha sonra FTD Joiner'ın RLOC16 değeri, Yönlendirici Kimliği alındıktan sonra 0x8400 olur. FTD Joiner'ın alt yayıncıdan yönlendiriciye yükseltildiği anlaşılıyor.

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

topology.png

7. Thread Cihazlar Arası İletişim

ICMPv6 İletişimi

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 Joiner'ın 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ı gösterir. İki cihaz arasındaki iletişim başarılı.

UDP İletişimi

OpenThread tarafından sağlanan uygulama hizmetleri ayrıca UDP'yi de içerir. UDP API'sini kullanarak iş parçacığı ağındaki düğümler arasında bilgi aktarabilir veya Sınır Yönlendirici üzerinden harici ağlara bilgi aktarabilirsiniz. OpenThread'in UDP API'si ile ilgili ayrıntılı bilgiyi OpenThread CLI - UDP Örneği bölümünde bulabilirsiniz. Bu codelab'de, OTBR ile FTD Joiner arasında bilgi aktarmak için bazı API'ler kullanılacaktır.

Öncelikle OTBR'nin Mesh-Local EID'sini 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 konsola aşağıdaki komutları girin ve FTD Joiner'ın UDP'sini etkinleştirin. Cihazın 1022 bağlantı noktasını bağlayın, ardından OTBR'ye 5 baytlık bir 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ını derleme ve kullanma.
  • ot-cli-ftd ve ot-rcp ikili programları oluşturma ve bunları Telink B91 Geliştirme Kartları'na yükleme.
  • Docker kullanarak RAPberry Pi 3B+ veya üzeri sürümleri OpenThread Sınır Yönlendirici (OTBR) olarak ayarlama.
  • OTBR'de mesaj dizisi ağı oluşturma.
  • Bant dışı devreye alma yoluyla Thread ağına cihaz ekleme.
  • Thread ağındaki düğümler arasındaki bağlantıyı doğrulama.

Ek 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: