Создайте сеть потоков с платами Silicon Labs EFR32 и OpenThread с помощью Simplicity Studio v5.

1. Введение

26b7f4f6b3ea0700.png

Google, OpenThread (OT) является реализация с открытым кодом Thread. Google выпустил OpenThread, чтобы сделать сетевые технологии, используемые в продуктах Google Nest, более доступными для разработчиков, чтобы ускорить разработку продуктов для подключенных к Интернету домов и коммерческих зданий. Благодаря узкому уровню абстракции платформы и небольшому объему памяти OpenThread очень портативен. Он поддерживает как систему на кристалле (SoC), так и сетевой сопроцессор (NCP).

Спецификация Thread определяет IPv6 на основе протокола беспроводной связи надежный, безопасный и маломощный устройство-устройство для домашних и коммерческих строительных применений.

Silicon Labs расширила OpenThread для работы с аппаратными средствами Silicon Labs. Этот исходный код доступен на GitHub, а также в виде пакета разработки программного обеспечения (SDK), установленного с Simplicity Studio 5 (SSv5). SDK включает полностью протестированный снимок исходного кода GitHub. Он поддерживает более широкий спектр оборудования, чем версия GitHub, и включает документацию и примеры приложений, недоступных на GitHub.

В этом руководстве описывается, как приступить к разработке приложений OpenThread с помощью Silicon Labs OpenThread SDK и Simplicity Studio 5. На изображении ниже показаны платы (BRD) и оборудование, настроенные с помощью пограничного маршрутизатора OT (OTBR) и двух потоковых устройств, используемых в codelab.

EFR32MG Настройка оборудования

Что ты узнаешь

  • Как создать проект OpenThread с помощью IDE Silicon Labs Simplicity Studio.
  • Как собрать и прошить двоичные файлы OpenThread CLI на радиоплаты Silicon Labs.
  • Как настроить Raspberry Pi 3B + или выше в качестве пограничного маршрутизатора OpenThread (OTBR) с помощью Docker.
  • Как создать сеть потоков на OTBR.
  • Внеполосный ввод устройств в сеть Thread.
  • Как проверить связь потоков между узлами с помощью команды ping.

2. Предпосылки

Аппаратное обеспечение:

  1. 3 радиоплаты EFR32MGxx - можно использовать любую комбинацию этих устройств. Эта кодовая лаборатория использует BRD4166A в качестве RCP и два BRD4168A в качестве полнопоточных устройств.
    • EFR32MG12 (BRD 4161A, 4166A BRD, BRD 4170A, BRD 4304 А)
    • EFR32MG13 (BRD 4168A)
    • EFR32MG21 (BRD 4180A, 4180B BRD)
    Если вы начинаете свежей, вы можете получить один из стартового комплекта EFR32 Thread , который имеет доски , перечисленные выше.
  2. BRD4001A: Основные платы беспроводного стартера (WSTK) для размещения радиоплат. За исключением BRD4166A, все радиоплаты нуждаются в каждой плате стартера. Кабели Mini USB для подключения и питания основных плат или кабель Micro USB для BRD4166A.

WSTK AEM

  1. Малина Pi 3B + или больше с Raspbian Stretch Lite OS изображение или Raspbian Stretch с рабочего стола , который подключен к сети Интернет через Ethernet. Мы настраиваем его как пограничный маршрутизатор OT.
  2. Хост-система Windows / Linux / Mac как минимум с 2 портами USB и подключением к Интернету. Проверьте оборудование и требования OS на SSv5 .
  3. По крайней мере, один кабель Ethernet для подключения Raspberry Pi к Интернету. WSTK также поддерживают отладку и прошивку по IP, поэтому при желании можно использовать дополнительные кабели Ethernet для подключения WSTK к вашей хост-системе через коммутатор Ethernet.

Программное обеспечение:

  • Simplicity Studio v5 установлен и обновлен в системе Windows / Linux / Mac Host с
    • Набор инструментов GNU ARM v7.2.1
    • Gecko SDK Suite 3.2.0 или новее и Silicon Labs OpenThread SDK.

Скачать Simplicity Studio 5

3. Настройка оборудования.

Эта Codelab была создана с использованием

  1. EFR32MG12 BRD4166A Thunderboard Чувство 2 , как показано на рисунке слева.
  2. Два EFR32MG13 BRD4168A , как показано на рисунке справа.
  3. Simplicity Studio v5, установленная на macOS Catalina 10.15.7 с
    1. Gecko SDK 3.2.0
    2. GNU ARM v7.2.1

BRD4168A

Подключите каждую материнскую плату беспроводного стартового комплекта к главному компьютеру через USB, как показано на рисунке ниже. Эти соединения позволят программировать и анализировать сеть RCP и оконечных устройств. Сначала мы воспользуемся главным компьютером, чтобы запрограммировать BRD4166A с прошивкой ot-rcp и в конечном итоге подключить его к Raspberry Pi. При желании конечные устройства могут быть подключены к главному компьютеру через общий коммутатор Ethernet. Стартовые комплекты также поддерживают программирование и сетевой анализ через IPv4.

Подключения

4. Настройка прошивки

Начать работу можно двумя способами. Оба варианта позволяют прошивать прошивки, необходимые для этой кодовой лаборатории.

  1. Проекты: (рекомендуется) создать, собрать и запустить образец приложения. Эта опция позволяет вам настроить приложение в проекте.
  2. Демонстрации: (Необязательно) Прошивка предварительно созданных демонстраций прямо на радиоплате для любого из примеров приложений. Пользователям предлагается попробовать установить прошивку Demos в качестве дополнительного упражнения. Пожалуйста, обратитесь к разделу «Установка дополнительной прошивки - Демоверсии» в конце этой таблицы кодов для получения подробной информации.

Мы будем использовать метод на основе проекта для этой кодовой таблицы.

Создавайте проекты на примерах

Создадим два проекта. ot-rcp проект BRD4166A и ot-cli-ftd проект для двух BRD4168A. Выполните следующие действия и выберите подходящий образец приложения для своей платы.

  1. Меню File Open Studio и выберите New> Silicon Labs Мастер проектов. Откроется диалоговое окно Target, SDK и Toolchain Selection. Не изменяйте стандартный набор инструментов Simplicity IDE / GNU, поддерживаемый OpenThread. Нажмите кнопку Далее.
    • Целевые платы: показывает выбранную радиоплату (BRD4168A) вместе с основной платой (BRD4001A).
    • Целевое устройство: в этом поле отображается микросхема микроконтроллера (MCU) на плате. BRD4168A имеет встроенный микроконтроллер EFR32MG13.
    • SDK: Здесь вы можете выбрать версию SDK OT, с которой вы работаете. Для этой кодовой лаборатории мы используем OpenThread 1.2.0.0.
    • IDE / Toolchain: набор инструментов, который будет использоваться для компиляции проекта OT. Мы используем GNU ARM 7.2.1.

Мастер создания нового проекта

  1. Откроется диалоговое окно "Выбор проекта". Вы увидите список примеров проектов. Используйте «тему» Технология Тип и фильтры по ключевым словам для поиска конкретного примера, в данном случае ot-cli-ftd . Выделите ее и нажмите NEXT.

Мастер создания нового проекта, шаг 2

  1. Откроется диалоговое окно "Конфигурация проекта". Здесь вы можете переименовать свой проект, изменить расположение файла проекта по умолчанию и определить, будете ли вы ссылаться на файлы проекта или копировать их. Связанные файлы проекта указывают на SDK, и любые изменения, которые вы вносите, в конечном итоге вносятся в SDK и используются в будущих проектах. Копирование источников проекта позволяет редактировать локальную копию проекта, чтобы файлы SDK оставались нетронутыми. «Link SDK и источники проекта копия» по умолчанию и рекомендуемый выбор. Нажмите кнопку ГОТОВО.

Мастер создания нового проекта, шаг 3

  1. Простота IDE перспектива открывается с открытым проектом конфигуратор на вкладке Обзор.

Обзор проекта

Проект настроен на вкладке Software Components путем установки и удаления компонентов, а также настройки установленных компонентов. Установленные компоненты проверяются. Нажмите Установленные компоненты , чтобы увидеть отфильтрованный список компонентов , установленных в примере приложения. Любые вносимые вами изменения автоматически сохраняются, а файлы проекта создаются автоматически. Прогресс отображается в правом нижнем углу перспективы Simplicity IDE.

Компоненты программного обеспечения

Для этой демонстрации мы собираемся использовать конфигурацию примеров приложений по умолчанию. Повторите описанные выше шаги для создания ot-rcp проекта для вашей другой платы.

Сборка и прошивка проектов

Сложение и вспышки как ot-rcp и ot-cli-ftd проектов.

  1. После того, как ваш проект настроен, щелкните элемент управления сборки (значок молота) в верхней панели инструментов. В качестве альтернативы вы можете щелкнуть проект правой кнопкой мыши и выбрать проект сборки.

Кнопка "Создать проект"

  1. Прогресс отображается в консоли и прогресс бар в нижнем правом углу . Любые ошибки или предупреждения, связанные с вашим проектом, также появятся в этом окне вывода.

Окно вывода сборки Porject

  1. Образы двоичных файлов создаются после успешной сборки проекта. Вы можете прошить бинарное изображение с точки зрения Project Explorer. Найдите файл .bin, .hex или .s37 в подкаталоге компилятора. Щелкните правой кнопкой мыши на файл и выберите Flash , чтобы устройство. Если у вас есть более одного устройства , подключенные затем выберите устройство в программу, нажмите кнопку OK. Flash Programmer открывается с указанным путем к файлу. Нажмите PROGRAM.

Вспышка

5. Сводка по настройке прошивки.

На этом этапе вы должны были создать, скомпилировать и установить соответствующую прошивку на радиоплаты. После того, как ot-rcp прошиваются BRD4166A, отключите его от хост - системы и подключить эту плату к Raspberry Pi.

После завершения этого раздела ваше сетевое оборудование Thread будет выглядеть следующим образом.

Настройка EFR32MG

6. Настройте последовательную консоль для устройств ot-cli-ftd.

Для запуска интерфейса консоли, в простоте IDE перспективном правой кнопкой мыши на устройстве J-Link в Devices View / Debug адаптеры окна. Выберите Запуск консоли. Для того, чтобы получить приглашение на консоли, выберите вкладку Последовательная 1 и нажмите Enter. Проверьте состояние узла FTD.

Вид консоли FTD Studio

Вы заметите , что у нас пока нет консоли для ot-rcp . На следующем шаге мы настроим Raspberry Pi как OT граничный маршрутизатор и настроить консоль для ot-rcp .

7. Настройте Raspberry Pi в качестве пограничного маршрутизатора.

Silicon Labs рекомендует развернуть контейнер Docker компании с OTBR. Запуск OTBR в контейнере позволяет создавать легко развертываемые артефакты и быстро создавать прототипы и тестировать.

Silicon Labs предоставляет следующие предварительно созданные контейнеры Docker (с тегами), размещенные на DockerHub:

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

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

Настройка Raspberry Pi

  1. На вашей SD - карте, убедитесь , что вы прошить изображение Raspbian Stretch Lite OS или Raspbian Stretch с рабочим столом .
  2. Вы можете подключиться к Raspberry Pi по SSH или напрямую работать с Raspbian Desktop. Откройте терминал.
  3. Убедитесь в том , чтобы обновить свои локальные репозитории и менеджер пакетов (обновление APT-GET и APT-получить обновление до установки Докер).

Установить образ докера

  1. Установите Docker на свой RPi с помощью следующей команды.
    curl -sSL https://get.docker.com | sh
    
  2. После завершения вы можете изменить пользовательские настройки Docker, чтобы не требовать sudo перед каждой командой. Требуется перезагрузка.
    sudo usermod -aG docker $USER
    
  3. Выполните следующие команды, чтобы установить контейнеры. Обратите внимание, что у вас может быть только один контейнер пограничного маршрутизатора, работающий одновременно с вашим RCP. Кроме того, не забудьте проверить версию RCP (версия потока 1.2), которую следует запускать для этого контейнера.
    docker pull siliconlabsinc/openthread-border-router:gsdk-3.2.0
    

Настроить и запустить докер

  1. Вам необходимо настроить порт TTY, который вы хотите использовать для OTBR для подключения вашего RCP при запуске. Найдите порт TTY вашего устройства RCP. Самый простой способ сделать это , чтобы искать /tty/dev ... запись после того , как RCP подключен. Он должен , как правило либо /dev/ttyUSB0 или /dev/ttyACM0 .
  2. Запустите установку Docker следующим образом. В примере используется контейнер пограничного маршрутизатора 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 гарантирует , что контейнер работает в режиме отдельного.
    • Вы можете увидеть запущенные журналы для контейнера в любое время с помощью docker logs команды.
    • --name является липким , пока контейнер не Докер правильно закрыт (или удален).
    • Порт 8080 указывает порт веб-сервера, на котором размещена веб-страница управления пограничным маршрутизатором.
    • ?uart-baudrate=460800 требуется в настройках радио URL - адрес , чтобы обойти фрагментацию / повторную сборкой проблему более UART, с дорогостоящими операциями , такими как DTLS с длинными пакетами IPv6.

Взаимодействовать с узлом RCP

После запуска докера вы можете общаться с узлом RCP через интерактивную оболочку с помощью этой команды. Проверьте состояние узла RCP.

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

Вы можете получить список идентификаторов запущенных контейнеров

$ docker ps -aq

Вы можете проверить окно, в котором запущен контейнер OTBR Docker, для вывода журнала пограничного маршрутизатора или проследить журнал контейнера следующим образом:

$ docker logs [container-id] -f

При желании вы можете остановить, удалить или убить свое изображение, если контейнер докера загружен правильно.

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

Необязательно: для выхода из оболочки используйте CNTL + C.

На данный момент у вас должно быть 3 консоли.

  1. Два ot-cli-ftd консоли в Simplicity Studio , которые устанавливаются в качестве устройств Full темы.
  2. Один ot-ctl интерактивной оболочки на Raspberry Pi , который устанавливается в качестве OT пограничного маршрутизатора.

Теперь мы готовы сформировать сеть потоков.

8. Создайте сеть потоков.

Настроить RCP

Для того, чтобы создать сеть, мы начинаем с ot-ctl оболочки на OTBR , который используется для связи с узлом RCP. Введите следующие команды в указанном ниже порядке:

Показатель

Командование

Описание команды

Ожидаемый ответ

1

dataset init new

Создайте новую конфигурацию сети.

Выполнено

2

dataset commit active

Зафиксируйте новый набор данных в активном рабочем наборе данных.

Выполнено

3

ifconfig up

Включите интерфейс потока.

Выполнено

4

thread start

Включите и подключите операцию протокола потока.

Выполнено

Подождите 10 секунд, пока не запустится интерфейс потока.

5

state

Проверить состояние устройства. Это должен быть лидер.
Другие возможные состояния: отключен, отключен, отключен,
ребенок, маршрутизатор или лидер

Лидер
Выполнено

6

dataset

Просмотрите конфигурацию сети.
Ваши значения будут отличаться от этой кодовой таблицы.
Запишите канал, сетевой ключ,
имя сети и идентификатор PAN.

Активная отметка времени: 1
Канал: 20
Маска канала: 0x07fff800
Внешний идентификатор PAN: 39ba71f7fc367160
Локальный префикс сетки: fd5c: c6b: 3a17: 40b9 :: / 64
Сетевой ключ: 81ae2c2c17368d585dee71eaa8cf1e90
Имя сети: OpenThread-008c
PAN ID: 0x008c
PSKc: c98f0193d4236025d22dd0ee614e641f
Политика безопасности: 0, onrcb
Выполнено

Мы будем использовать номер канала и сетевой ключ на ot-cli-ftd , чтобы соединить два УТД к этой теме сети.

Настроить и добавить FTD в нашу сеть потоков (внеполосный метод)

При использовании внеполосного метода мы знаем всю информацию о безопасности и добавляем узел вручную. В консолях Simplicity добавьте оба FTD в нашу сеть, используя следующие команды в указанном ниже порядке.

Показатель

Командование

Описание команды

Ожидаемый ответ

1

dataset channel 20

Установите канал, используемый OTBR.

Выполнено

2

dataset networkkey 81ae2c2c17368d585dee71eaa8cf1e90

Для подключения устройства к сети потоков требуется только сетевой ключ.

Выполнено

3

dataset commit active

Зафиксируйте новый набор данных в активном рабочем наборе данных.

Выполнено

4

ifconfig up

Включите интерфейс потока.

Выполнено

5

thread start

Включите и подключите операцию протокола потока.

Выполнено

Подождите 20 секунд, пока устройство подключится и настроится.

6

state

Просмотрите конфигурацию сети.

ребенок
Выполнено

Связь между устройствами Thread

Мы будем использовать ping команду , чтобы проверить устройства могут взаимодействовать друг с другом. Чтобы использовать команду ping, нам нужны IPv6-адреса устройств. Они могут быть получены с помощью 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)

От обоих FTD отправьте эхо-запрос на OTBR, используя адрес 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

Ответ указывает на полученную полезную нагрузку и успешное соединение. Повторите этот процесс для проверки связи FTD с OTBR.

9. Поздравления

Вы создали сеть потоков!

Теперь вы знаете:

  • Как создать проект OpenThread с помощью IDE Silicon Labs Simplicity Studio.
  • Как собрать и прошить двоичные файлы OpenThread CLI на радиоплаты Silicon Labs.
  • Как настроить Raspberry Pi 3B + или выше в качестве пограничного маршрутизатора OpenThread (OTBR) с помощью Docker.
  • Как создать сеть потоков на OTBR.
  • Внеполосный ввод устройств в сеть Thread.
  • Как проверить связь потоков между узлами с помощью команды ping.

дальнейшее чтение

Проверьте openthread.io и GitHub для различных OpenThread ресурсов, в том числе:

10. Установка дополнительной прошивки - Демо

Демоверсии - это готовые образы прошивки, готовые для загрузки на совместимое устройство. Самый быстрый способ узнать, доступна ли для вашей части демонстрация в Simplicity Studio, - это щелкнуть свою часть в представлении «Отладочные адаптеры», а затем перейти на вкладку «ПРИМЕРЫ ПРОЕКТОВ И ДЕМОНСТРАЦИЙ» в перспективе запуска. Отключите фильтр «Примеры проектов» и установите флажок «Поток» в разделе «Тип технологии».

Демоверсии студии

Предварительно скомпилированные образы демонстрационных приложений, поставляемые с OpenThread SDK, совместимы со следующими платами:

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

Этот список может быть обновлен в будущих выпусках SDK для включения большего количества радиоплат. Полный список поддерживаемых частей см. В примечаниях к выпуску Silicon Labs OpenThread SDK в разделе «Документация».

Прошейте следующие демонстрации на соответствующих платах. Чтобы выполнить прошивку, выберите свою плату в разделе «Адаптеры отладки» слева и нажмите «Выполнить» для соответствующих примеров приложений. Всплывающее окно покажет ход вспышки.

  1. BRD4166A: OT-RCP - Это устройство будет функционировать в качестве процессора Radio Co в OT пограничного маршрутизатора. Мы будем использовать это устройство для создания сети потоков и подключения двух других устройств в сети потоков. Будучи пограничным маршрутизатором, это устройство также действует как шлюз для устройств в сети Thread для связи через Интернет.
  2. Два BRD4168A: от-кли-FTD - Эти два устройства будут выступать в качестве устройства с полнофункциональной темой. Они присоединятся к сети потоков, созданной OTBR.