Ваша плата Arduino Nano Matter теперь поддерживает Zigbee

Источник: Arduino Blog•

Ваша плата Arduino Nano Matter теперь поддерживает Zigbee

Выберите Zigbee® в меню Arduino® IDE, загрузите пример, и ваша плата присоединится к сети умного дома, которую уже используют лампочки, датчики и выключатели. Плата Arduino® Nano™ Matter всегда была ориентирована на энергоэффективные решения для умного дома. До сих пор у ваших скетчей было два…

Выберите Zigbee® в меню Arduino® IDE, загрузите пример, и ваша плата присоединится к сети умного дома, которую уже используют лампы, датчики и выключатели.

Плата Arduino® Nano™ Matter всегда была ориентирована на энергоэффективные решения для умного дома. До сих пор у ваших скетчей было два пути в умный дом: Matter через Thread и беспроводная технология Bluetooth® LE, оба на базе модуля Silicon Labs MGM240S. 15 сентября появился третий: обновите ядро Arduino® для Silicon Labs до версии 5.0, и ваши скетчи смогут работать с Zigbee.

Он находится там же, где и два предыдущих протокола. Откройте «Инструменты» (Tools) › «Стек протоколов» (Protocol stack), выберите Zigbee, и загружаемый скетч будет скомпилирован со стеком Zigbee 3.0. Та же плата, та же IDE, другой стек.

Начните с проекта

Прежде чем переходить к техническим описаниям, посмотрите, как это выглядит на практике.

Zigbee Smart Clock — это настольные часы, созданные на базе Nano Matter, Arduino® Modulino™ Thermo, Modulino Light и светодиодной матрицы 32×8. Они были разработаны параллельно с новой библиотекой в качестве реального теста её возможностей. Как только часы присоединяются к вашей сети, Home Assistant получает данные о температуре, влажности и освещенности, а также может включать или выключать дисплей. Часы запрашивают текущее время у сети, поэтому вам не нужно настраивать их вручную, а яркость дисплея автоматически регулируется в зависимости от освещения в комнате.

Полная сборка (схема подключения, 3D-печатный корпус и код) доступна на Arduino Project Hub.

Ваше первое устройство Zigbee — на одном экране кода

Новая библиотека Zigbee оборачивает стек EmberZNet от Silicon Labs в классы в стиле Arduino. Датчик — это объект: дайте устройству имя, вызовите begin() и передавайте значения. Вот упрощенный пример zigbee_temp_sensor:

Переведите ваш Zigbee-координатор в режим сопряжения и загрузите код. Подключение может занять несколько минут в зависимости от вашей сети. Монитор порта (Serial Monitor) покажет, где зарегистрировалась плата:

Интеграция ZHA в Home Assistant распознает её как любое другое устройство Zigbee:

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

Что в комплекте

14 готовых к работе примеров охватывают 11 типов устройств. Освещение представлено лампами с функциями включения/выключения, диммирования и изменения цвета, а также подключаемым модулем включения/выключения. Один тип выключателя отправляет команды включения/выключения и диммирования. Датчики передают данные о температуре, влажности и уровне освещенности, а датчик открытия сообщает, открыта ли дверь, окно или ящик. Два вспомогательных элемента дополняют список: отчет об источнике питания и клиент времени, который запрашивает текущее время у сети.

Устройства присоединяются как маршрутизатор (по умолчанию, ретранслируя трафик для mesh-сети) или как конечное устройство.

Две функции заслуживают особого внимания:

  • Прямое управление с помощью привязок (bindings): как только выключатель привязан к лампе, он управляет ею напрямую, не дожидаясь автоматизации хаба. Для собственного выключателя библиотеки вы создаете привязку один раз в Home Assistant ZHA. Классы ламп и розеток также могут выступать в качестве цели для функции Find-and-Bind: вызовите start_find_and_bind() (например, при нажатии кнопки, как показано в документации к библиотеке), и пульты Zigbee, поддерживающие Find-and-Bind, смогут привязаться к ним без настройки через хаб.
  • Идентификация (Identify): когда ваш хаб отправляет запрос идентификации, библиотека сообщает об этом вашему скетчу, чтобы он мог мигать светодиодом; пример zigbee_lightbulb_identify делает именно это. Удобно, когда на столе лежат пять одинаковых плат.

Одно честное предостережение: «из коробки» примеры датчиков влажности и освещенности отправляют вымышленные значения, а пример температуры измеряет температуру самого чипа MG24, а не комнаты. Подключите реальный датчик (например, Modulino Thermo), и после изменения нескольких строк кода они станут настоящими.

Обе стороны сети

Сеть Zigbee строится вокруг координатора — радиомодуля, который формирует сеть и позволяет устройствам присоединяться. Коммерческие хабы выполняют эту работу, и в разделе Zigbee руководства пользователя Nano Matter перечислены некоторые из них, работающие с платой: модели Amazon Echo и SmartThings, Hubitat Elevation (C-8), хаб IKEA DIRIGERA и Home Assistant с Zigbee-радио.

Координатором также может быть другая плата Nano Matter. Ядро включает предварительно скомпилированную прошивку координатора Zigbee EZSP (начиная с версии 4.0), а Python-скрипт в ядре превращает плату в Zigbee-радио для интеграции ZHA в Home Assistant.

Откройте терминал в папке extra/firmware ядра (на macOS: ~/Library/Arduino15/packages/SiliconLabs/hardware/silabs/5.0.0/extra/firmware; на Windows: %LOCALAPPDATA%\Arduino15\packages\SiliconLabs\hardware\silabs\5.0.0\extra\firmware, где вместо python3 используется команда py; на Linux: ~/.arduino15/packages/SiliconLabs/hardware/silabs/5.0.0/extra/firmware) и выполните:

Требуется Python 3. Без аргументов скрипт выводит список поддерживаемых плат.

Подключите эту плату к машине, на которой работает Home Assistant (хорошо подходит Raspberry Pi), добавьте её в ZHA как Zigbee-радио и создавайте освещение, выключатели и датчики с помощью других ваших плат. Каждое радио в сети станет платой, программируемой на Arduino. Чтобы превратить координатор обратно в обычное устройство, выполните «Инструменты» › «Записать загрузчик» (Burn Bootloader), установив «Инструменты» › «Программатор» на OpenOCD (это сотрет прошивку координатора и его сеть), а затем загрузите скетч Zigbee.

Идеи для реализации на выходных

  • Оповещение об открытой двери: пример датчика открытия с герконом на свободном контакте и автоматизация в Home Assistant, которая отправляет вам уведомление.
  • Настоящий датчик микроклимата: пример температуры с Modulino Thermo, передающий данные в Home Assistant.
  • Настольная лампа и выключатель: две платы, работающие с примерами диммируемой лампы и выключателя, привязанные один раз в Home Assistant ZHA, чтобы кнопка на плате выключателя напрямую управляла лампой.
  • Часы, которые настраиваются сами: пример клиента времени — это основа для Smart Clock, описанных выше.

Плата, которая растет вместе с вами

Меню протоколов — это лишь один из способов развития Nano Matter. Zigbee теперь соседствует с Matter через Thread и Bluetooth LE. Один стек работает на один скетч, поэтому вы переключаетесь, выбирая другой и загружая его снова.

Когда проекту требуется больше, чем стандартные типы устройств (пользовательский кластер, необычное устройство, другая раскладка конечных точек), то же оборудование может работать с полным SDK Zigbee от Silicon Labs в Simplicity Studio. Для проектов на Bluetooth LE плата Nano Matter также может запускать нативный Zephyr.

Начало работы

1. Откройте «Менеджер плат» (Boards Manager) в Arduino IDE, найдите Silicon Labs и установите версию 5.0.0.

2. Выберите Nano Matter в качестве платы и установите «Инструменты» › «Стек протоколов» на Zigbee. Новая плата или переключение с Matter или BLE? Установите «Инструменты» › «Программатор» на OpenOCD и один раз выполните «Инструменты» › «Записать загрузчик». Это очистит плату, включая любую сохраненную сеть.

3. Откройте «Файл» › «Примеры» › «Zigbee», выберите пример и загрузите его.

4. Переведите ваш координатор в режим сопряжения и наблюдайте, как плата присоединяется к сети.

Раздел Zigbee в руководстве пользователя Nano Matter содержит пошаговые инструкции, а документация по библиотеке охватывает каждый класс. Ядро имеет открытый исходный код, а вопросы и пулл-реквесты приветствуются на GitHub.

Что вы создадите с его помощью? Поделитесь на Project Hub.

Arduino, Modulino и Nano являются торговыми марками или зарегистрированными торговыми марками Arduino S.r.l.

О чём эта статья

Ещё в разделе «Потребительские сервисы»

Все →

Ещё от Arduino