Как разрабатывать Z-Wave устройства
Z-Wave — это международный стандарт беспроводной связи для «умных домов». Он основан на спецификации ITU G.9959 и определяет все аспекты взаимодействия устройств, поддерживающих этот протокол, а также обеспечивает их совместимость. Данная статья описывает процесс разработки аппаратной части, прошивки для SoC, взаимодействие между узлами сети и сертификацию, и дает представление о том, как начать разработку устройств для экосистемы Z-Wave.
1. Что такое Z-Wave?
Z-Wave стал новой звездой на горизонте рынка технологий домашней автоматизации с более чем 700 совместимыми устройствами. Он открывает недавно пришедшим на рынок компаниям возможность привнести новые идеи в существующую экосистему совместимых устройств и увеличить уже имеющейся набор устройств для инсталляции.
Данная статья описывает процесс разработки и инструменты, доступные для создания и тестирования Z-Wave совместимых устройств. Технически, Z-Wave — это спецификация для низкоскоростного протокола передачи данных, который позволяет различным устройствам в здании взаимодействовать друг с другом без проводов. Номенклатура этих устройств включает в себя стационарные оборудование, такое как выключатели света, регуляторы отопления, мобильные устройства: пульты дистанционного управления, а также контроллеры для Интернет-сервисов для мобильных телефонов или глобальной сети. Спецификация описывает все аспекты взаимодействия устройств, от уровня радиообмена до деталей поведения устройства, генерируемых событий и выполняемых действий. Только устройства, отвечающие на всех уровнях всем требованиям протокола взаимодействия, называются Z-Wave совместимыми или просто Z-Wave сертифицированными.
2. Аппаратная часть.
Для работы Z-Wave на уровне радиоканала требуется специальный Z-Wave приёмопередатчик. Основной поставщик этих трансиверов — американская компания Sigma Designs. Второй поставщик — Mitsumi Corporation предлагает совместимый по выводам чип [Mitsumi2012]. Текущее поколение чипов от Sigma Designs называется 400-я серия с микроконтроллером ZM4101 в качестве стандартного комплектующего. Sigma и Mitsumi не продают приёмопередатчики отдельно, а только в составе однокристальной системы (SoC). Приёмопередатчик доступен в виде микросхемы только на больших объёмах, где он может быть внедрён в дизайн плат, но большинство компаний используют SoC решение, которое включает вычислительные функции, а также радио интерфейс (для 300 и 400 серий через дробь):
- ЦПУ совместимый с Intel 8051 ядром
- приёмопередатчик
- 2 КБайта / 16 КБайта внутренняя память SRAM
- 32 КБайта / 64 КБайта память для программного кода и данных ROM
- Периферия
400 cерия снабжена однократно программируемой памятью, что делает ее подходящей для нихкозатратного производства устройств, где не требуется перепрограммирование. Однако подавляющее большинство приложений использует чип 300 серии с её флеш-памятью. Перепрограммируемая флеш-память больше подходит для разработки устройств и приложений, которые время от времени требуют обновления.
Sigma Designs анонсировала выход нового поколения чипов под общим названием 500 серия в 2013 году (данные микросхемы уже доступны на момент перевода). Данная серия микросхем будет совместима с 400 серией по функциям и выводам, но однократно программируемую память в ней заменена флеш-памятью.
На изображении приведён наиболее часто используемый модуль ZW3102 производства Sigma Designs, который сочетает в себе чип 300 серии ZW0301 с несколькими конденсаторами, кварцем и антенным фильтром.
Антенный фильтр нужен для того, чтобы обеспечить соответствие нормам, регулирующим использование нелицензируемых частотных полос, используемых в Z-Wave. Эти фильтры специфичны для каждой частоты, например для 868.4 МГц (Европа, Африка и часть Азии), или для 908.4 МГц (Северная Америка), и делают модуль адаптированным к определенному региону. Как результат, для разных частотных полос существуют разные аппаратные платформы, и производителям требуется делать отдельные устройства для, например, европейского и американского рынков. Модули можно заказать либо напрямую у производителя, либо в компании DigiKey, мирового дистрибьютора Sigma Designs. Цена зависит от объема, но обычная оценка — это $5–6 для низкообъёмного производства нескольких тысяч модулей.
Все контакты ввода/вывода SoC разведены на модуле. Эти вводы/выводы являются многофункциональными и могут быть программно переключены в выход, вход с или без подтяжки вверх. Некоторые выводы имеют специальные функции для поддержки часто используемых схем подключения, таких, как диммеры или устройства управления моторами.
Вводы/выводы для 300 серии:
- 10 ножек общего назначения
- Два входа для сигналов прерываний
- UART
- SPI
- Triac контроллер, позволяет напрямую подключать сигнал перехода через ноль (Zero Crossing) к схеме цепи диммера, для того, чтобы создать диммер с минимальным количеством внешних компонент
- PWM (ШИМ) выход
- 4 мультиплексированных 12/8-битных АЦП входа
В целом, концепция многофункциональных вводов/выводов и модульный подход позволяют создавать устройства с минимальными дополнительными затратами. Например, проект простого бинарного датчика, работающего от батареек, можно спроектировать всего с 10 дополнительными компонентами, включая внешнюю антенну.
Модули имеют SPI интерфейс, который нужен для программирования флэш-памяти, а также может быть использован для подключения внешней памяти EEPROM. Внешняя память EEPROM может быть использована для хранения дополнительных данных для приложений. Внешнюю EEPROM память невозможно использовать для хранения бинарного кода программы. Более подробная информации о характеристиках Z-Wave модулей 300 серии можно найти в спецификации микроконтроллера [Sigma300]. Внутренняя ROM память 8051 совместимого микроконтроллера обычно содержит бинарный код программы устройства. Более сложные и функциональные устройства такие, как пульты удаленного управления, могут использовать чип Z-Wave как дополнительный чип только для связи, но объем памяти и вычислительная мощность обычно позволяют реализовывать все необходимые функции прямо на чипе приёмопередатчика, снижая стоимость и размер печатных плат.
2.1 Прошивка
Для разработки программного обеспечения (прошивок) необходим комплект разработчика (Software Development Kit, SDK). Различные версии этого комплекта предлагают компании Sigma Designs, Mitsumi и DigiKey, по цене $1500–$3500. Они отличаются входящим в комплект набором аппаратных частей. Более дорогие версии SDK имеют не только программатор, но и различные компоненты для тестирования датчиков, актуаторов для различных частот. Все SDK имеют пакет программного обеспечения и документацию. Для получения доступа к документации, программным кодам и инструментам необходимо заключить соглашение о конфиденциальности (NDA) с компанией Sigma Designs. Подписывая данное соглашение, производитель обязуется хранить всю предоставляемую ему информацию, в том числе SDK, в условиях конфиденциальности.
Как показано на рисунке, коммуникационный стек Z-Wave состоит из четырёх частей. Физический (PHY) и канальный (MAC) уровни определяются в соответствии с рекомендациями ITU-T G.9959 [ITU2012]. Сетевой уровень реализуется собственным кодом компании Sigma Designs, который защищён несколькими патентами. Уровень приложения определяется производителем устройства, однако должен соответствовать протоколу для обеспечения совместимости с другими устройствами и прохождения сертификации продукта.
SDK содержит всю необходимую документацию и код для создания прошивки, которая покрывает все три части коммуникационного стека. Сетевой, физический и канальный уровни предопределены и не должны меняться разработчиками. По этой причине они не доступны в виде исходного кода, а лишь в виде прекомпилированных библиотек. Эти библиотеки дополнены большим количеством примеров, иллюстрирующих использование библиотек и документирующих процесс создания Z-Wave устройства.
Закрытый код библиотек имеет свои «за» и «против»:
- Против: В случае обнаружения ошибок в библиотеках, время их устранения намного дольше, а процесс отладки сложней для разработчика.
- За: Никто не может поменять нижний уровень протокола. Это дает гарантию, что, по крайней мере, в этой части Z-Wave продукты будут взаимодействовать без проблем, поскольку они все базируются на одном и том же хорошо поддерживаемом коде.
Для того, чтобы скомпилировать прошивку для Z-Wave модуля, используя SDK от компании Sigma Designs, требуется C компилятор Keil [KEIL]. Хотя Keil и является хорошим и профессиональным инструментом, разработчики скорее всего предпочли бы использовать средства разработки от GNU. Однако прекомпилированные библиотеки для физического и сетевого уровней, вынуждают использовать определенные версий компилятора Keil и его окружение. SDK содержит следующие компоненты: прекомпилированные библиотеки для приложений, примеры исходного кода, исходный код для некоторых утилит и полную документацию протокола Z-Wave.
Z-Wave определяет несколько видов сетевых функций, обозначаемых контроллерами и дочерними. Эти разные роли предполагают использование разных функций протокола Z-Wave. Как результат, SDK предлагает различные версии библиотек для различных типов сетевых ролей в сети. Главная причина такого разделения — это размер памяти, так как реализация всех функций в одной библиотеке потребовало бы больше памяти, чем доступно ROM памяти для хранения прошивки. Большинство функций в библиотеке, в особенности те, которые относятся к организации сети, запуску чипа, управлению входящей и исходящей очередей приёмопередатчика, спрятаны от разработчика. Основные функции, используемые разработчиком:
- отправка и получения команд уровня приложения
- включение/исключение устройств
- некоторые функции управления сетью
- доступ к периферии, например, сторожевые схемы (WatchDog), TRIAC и т.д.
SDK также содержит наброски программ для упрощения разработки новых приложений. Имеющиеся различные примеры программ для различных функций Z-Wave также упрощают использование набросков кода и помогают в разработке приложений. К сожалению, в распоряжении разработчиков почти нет средств отладки для написания прошивок Z-Wave. Также нет ни отладочного JTAG интерфейса, ни эмуляторов или симуляторов для микроконтроллера. Ограниченность память модуля 300 серии добавляет разработчику ещё один уровень сложности и может сделать разработку прошивок удручающим занятием. Однако в сообществе Z-Wave есть компании, которые оказывают профессиональные услуги по разработке прошивок. [Z-Wave.Me] [Seluxit]
3. Разработка совместимых устройств
Код прошивки, отвечающий за взаимодействие с другими устройствами, должен соответствовать требованиям Z-Wave спецификации. Спецификация Z-Wave определяет различные роли устройств, и разработчик должен выбрать одну из ролей.
- Роль в сети: контроллеры могут строить свои собственные сети, дополнительно различаются портативные котроллеры (например, пульты управления) и статические контроллеры (например, шлюзы).
- Вид источника питания: питание от батареек с периодическим переходом в активный режим, питание от сети, питание от батареек с пробуждением от специального радио сигнала.
- Функция устройства: выключатель, диммер, устройство контроля моторов, термостат и др.
Модель поведения Z-Wave устройств описана так называемыми Классами Устройств (Device Classes). Производителю необходимо выбрать один класс устройств, к которому будет принадлежать его устройство. Последний уже определяет некоторые функции и сервисы, которые должно поддерживать устройство. Беспроводные функции устройства уровня приложения описаны так называемыми Классами Команд (Command Classes). Классы Команд — это группы беспроводных команд, которые используются для контроля определённых функций или частей устройства или доставки данных с привязкой к этим функциям или частям.
Классы Команд называются, например, Бинарный Выключатель (Binary Switch), Батарейка (Battery), Устройство управления мотором (Motor Control) и содержат в себе все функции, относящиеся, соответственно, к двухпозиционному (вкл/выкл) выключателю, отчетам о заряде батареек и управлению мотором. Классы Команд, необходимые для определённого Класса Устройства, называются обязательными Классами Команд (для данного Класса Устройства). Стандарт Z-Wave описывает более чем 20 Классов Устройств и 100 Классов Команд.
Производитель может, и обычно делает это, добавить дополнительные необязательные Классы Команд. Отсутствуют какие либо ограничения на реализацию дополнительных Классов Команд в устройства, однако для корректной поддержки этих Классов Команд необходимо:
- упомянуть его в процессе включения в сеть в так называемом Информационном пакете устройства (Node Information Frame)
- полностью реализовать его в соответствии со спецификацией Классов Команд Z-Wave.
Поэтому, описание API библиотек, определения Классов Устройств и Классов Команд являются ключевыми документами, которые необходимо использовать разработчику Z-Wave устройств.
4. Интерфейс для ПК.
Тот же самый модуль, что используется для разработки таких устройств, как диммеры и выключатели, используется и для взаимодействия с компьютерами. Основной используемый интерфейс — последовательный порт.
Модули 400 серии и ожидаемые скоро модули 500 серии (уже доступны на момент написания перевода) имеют прямую поддержку USB. Модули 300 серии могут предоставлять последовательный порт USB, используя любой из распространённых Serial-2-USB чипов (FTDI, Prolific, и т.д.). Они поддерживаются большинством операционных систем и не требуют дополнительных усилий для установки драйверов устройств. При подключении USB устройства операционной системой создаётся новое виртуальное последовательное устройство, которое используют Z-Wave программы (например, COMx в Windows или /dev/tty.usbserial для USB портов, использующих USB-2-Serial чип Prolific).
Производители устройств с USB или последовательным портом могут создать свой собственный протокол взаимодействия с интерфейсом. Однако, поскольку взаимодействие с компьютером — довольно частая задача, SDK уже включает спецификацию протокола, который отображает некоторые функции Z-Wave библиотеки на протокол последовательного интерфейса, а также определяет, как происходит обмен данными через последовательный интерфейс.
SDK также содержит несколько прекомпилированных прошивок, которые реализуют этот протокол последовательного интерфейса, называемый Sigma Designs Serial API. Благодаря этому большинство интерфейсных устройств, таких как USB стики, просто используют уже готовые и проверенные прошивки, реализующие Sigma Designs Serial API. Однако, некоторые производители улучшают и оптимизируют прошивки последовательных интерфейсов с компьютерами [ZSTICK].
Со стороны компьютера также необходимо ПО, которое должно управлять потоком пакетов на последовательном интерфейсе, предоставленном виртуальным последовательным устройством. Поскольку последовательный интерфейс, как рекомендует Sigma Designs, просто соответствует набору библиотечных функции, этот интерфейсный протокол довольно сложный и неочевидный. Программа контроллера на компьютере должна иметь дело с управлением сетью, временными задержками и очередью сообщений от и к Z-Wave приёмопередатчику.
Sigma и здесь предлагает пример исходного кода, но тут у разработчиков выбор больше. В Интернете есть несколько проектов с открытым кодом, использующих Sigma Designs Serial API, например [OpenZWave]. В этом проекте протокол Serial API, предоставляемый после подписания соглашения о конфиденциальности как часть SDK, был частично восстановлен методом реверс-инжиниринга. Однако, официальной поддержки этих проектов компанией Sigma Designs нет. Эти реализации c открытым кодом не могут по этой причине полностью соответствовать спецификации или использовать последние функциональные возможности Z-Wave правильным образом.
Существует несколько коммерческие реализации Z-Wave стека для компьютера доступные на рынке, в том числе такие, которые предоставляют профессиональную поддержку для проектов, в которых не планируется написание с нуля имплементации протокола Z-Wave Serial API [Z-Wave.Me].
5. Сертификация
Логотип Z-Wave гарантирует совместимость устройств.
Финальный шаг в процессе разработки Z-Wave устройств — это Z-Wave сертификации. Все устройства, использующие стандарт Z-Wave, должны быть сертифицированы, чтобы иметь право использовать логотип Z-Wave, показанный на рисунке. Данная сертификация удостоверяет, что протестированное устройство соответствует всем требованиям выбранного Класса Устройства, и что все реализованные в нем Классы Команд соответствуют спецификации Z-Wave. Дополнительно, тестируется качество беспроводного соединения с целью убедиться в том, что устройство работает без ошибок на расстоянии не менее 25 метров. Также проверяются руководство по эксплуатации и вся документация, чтобы убедиться, что все ключевые характеристики и понятия Z-Wave корректно представлены:
- двусторонняя связь
- mesh-сеть
- включение, исключение, ассоциации
- совместимость с устройствами других производителей
Процесс сертификации исключительно прозрачен. Все тестовые испытания тщательно описаны, а тестовые инструменты, используемые лабораторией тестирования, доступны производителям для поведения предварительных тестов. Сертификационные тесты выполняются двумя независимыми лабораториями: Pepper One [PepperOne] в Германии и Bulogics [Bulogics] в США. Результаты тестов лаборатории предоставляются менеджеру по сертификации, который принимает окончательное решение по каждому устройству и присваивает сертификационный номер. Стоимость этой услуги — $2000 вне зависимости от сложности устройства, включая плату за рецензирование документации.
6. Z-Wave Alliance
Z-Wave Alliance — это альянс всех компаний, использующих или поддерживающих стандарт Z-Wave протокола. Помимо определенных маркетинговых и рекламных мероприятий Альянс также различными способами помогает разработчикам.
- Альянс организует так называемые UnPlug Fest встречи. Во время этих встреч разработчики могут протестировать свои продукты: как законченные, так и находящиеся в разработке, совместно с продуктами других производителей экосистемы и получить помощь от инженеров технической поддержки компании Sigma Designs.
- Однодневные или двухдневные тренинги помогают ознакомиться с технологией Z-Wave и процессом разработки.
- Альянс имеет Лабораторию совместимости в Нью-Джерси (США), которую разработчики могут использовать для расширенных тестов продуктов.
- Альянс поддерживает и предлагает набор инструментов для тестирования совместимости (Z-Wave Compliance Test Tool, CTT) для проверки своих собственных продуктов на предмет соответствия спецификации Z-Wave.
- Разработчики также могут присоединяться к рабочим группам Альянса, которые занимаются разработкой новых Классов Команд и Классов устройств. Это особенно удобно в случае, когда разрабатываемые устройства реализуют принципиально новые возможности еще не определенные в Z-Wave. Сотрудничество, направленное на дальнейшее развитие Z-Wave не только допускается, но и приветствуется.
Дополнительная информация о деятельности Альянса можно найти на веб-сайте Альянса www.z-wavealliance.org.
7. Выводы
Внедрение аппаратной части Z-Wave в разрабатываемые вами продукты — весьма несложная задача, и требует лишь небольшого количества дополнительных компонентов. В большинстве случаев модуль однокристальной системы Z-Wave может быть использован также и для исполнения приложения. Для разработки прошивки Z-Wave необходимы документации, пример кода и библиотеки, доступные в комплекте SDK после заключения соглашения о конфиденциальности. Отсутствие отладочных инструментов создает определенные трудности, но они компенсируются большим количеством примеров кода и хорошим документированием всех особенностей. Z-Wave сертификация устройств гарантирует совместимость благодаря тестированию реализации Классов Команд (уровень приложения) и некоторых других особенностей. Sigma Designs предлагает целостный подход к процессу разработки, который позволяет эффективно разрабатывать Z-Wave-совместимые устройства. Z-Wave Alliance предоставляет инструмент тестирования совместимости (CTT) — «золотой стандарт», используемый лабораториями сертификации, и поддерживает лабораторию тестирования совместимости (Interoperability Test Lab).
Ссылки:
- [Mitsumi2012] Mitsumi Electric Co, Ltd Press Release: Mitsumi concluded Z-Wave Module Supply Agreement with Sigma Designs, Inc. in USA, May23rd, 2011, http://www.mitsumi.co.jp/pdf/20110523_e.pdf
- [Sigma300] Sigma Designs, Ltd ZM3102 Z-Wave Module, Data Sheet, October, 2007
- [ITU2012] ITU-T G.9959: Short range narrowband digital radio communication transceivers - PHY & MAC layer specification, International Telecommunication Union, 02/2012
- [Z-Wave.Me] Homepage: www.z-wave.me
- [ZME_Seluxit] Homepage: www.seluxit.com
- [ZSTICK] http://www.zwaveeurope.com/PC-Adapters.23.0.html
- [OpenZWave] Open Source Z-Wave Implementation in C
- [PepperOne] Papper One
- [Bulogics] Bulogics
- [KEIL] Keil compiler
Об авторе:
Christian Pätz — уважаемый профессор в области надежности систем в Техническом Университете города Хемниц и представитель Z-Wave Alliance в Европе.
Источник: EETimes
Перевод Полторака С.Г.