Введение


Сейчас о концепции IoT («интернета вещей») говорят везде. Появляется «умная» бытовая техника, которая может подключиться к сети (Bluetooth/Wi-Fi) по беспроводному интерфейсу и начать рассылать уведомления о том, что задача по стирке/готовке еды/кипячению воды завершена и неплохо бы что-то с этим сделать. Большинство таких «умных» устройств получает питание непосредственно из электросети. Но как быть, если хочется получать информацию от беспроводного термометра и при этом не менять батарейку каждую неделю? Или иметь беспроводной выключатель с небольшим аккумулятором для которого не понадобится штробить стены? И хорошо бы объединить такие устройства в единую распределенную сеть, которой можно управлять удаленно и которая сама, основываясь на показаниях датчиков/извещателей/счетчиков, могла бы принимать какие-то решения.

Специально для решения таких задач была создана беспроводная технология ZigBee, о которой мы и начнем разговор.




Сетевые технологии для беспроводной связи


Существует большое количество беспроводных технологий, каждая из которых имеет свои особенности. В таблице ниже рассмотрены беспроводные протоколы связи для частоты 2,4 ГГц.

Сравнительная таблица популярных беспроводных технологий





  1. Технология Wi-Fi
    Технология Wi-Fi создавалась в качестве замены проводного интерфейса Ethernet. Поэтому эта технология предлагает большие скорости передачи данных, но не позволяет разрабатывать узлы, работающие длительное время от источников питания малой емкости ввиду большого энергопотребления.
  2. Технология Bluetooth
    Технология Bluetooth с появлением стандарта 4.0 (Bluetooth Smart или Bluetooth Low Energy) стала гораздо привлекательней для разработчиков носимой электроники, так как энергопотребление по сравнению с предыдущими версиями сократилось в разы[1]. Но если стоит задача построения беспроводной малопотребляющей системы, которая будет охватывать несколько комнат или даже зданий, эта технология не подойдет, так как поддерживается только сетевая топология «звезда». Это же справедливо и для Wi-Fi.
  3. Технология ZigBee и Thread
    Технологии ZigBee и Thread изначально разрабатывались для создания надежных распределенных сетей датчиков и управляющих устройств с невысокими скоростями передачи данных. В этих технологиях реализована поддержка сетевой топологии «mesh», спящих и мобильных узлов, а также узлов, которые обеспечивают работу алгоритмов ретрансляции и самовосстановления. В таблице указана скорость 250 кбит/с — это максимальная пропускная способность сети. Полезная скорость будет порядка 30-40 кбит/с в пределах соседних узлов и 5-25 кбит/с при использовании ретрансляции. Основное отличие технологии Thread от ZigBee, что в ней добавлена поддержка IP-протокола, что упрощает интеграцию сетей Thread с сетевыми приложениями. Об особенностях технологии Thread мы поговорим в другой раз.



Сравнение сетевых топологий


Про поддерживаемые сетевые топологии в предыдущей главе было сказано, но не было сказано про особенности. Рассмотрим такой пример:
«Звезда» vs. «Mesh»



В сетях Bluetooth и Wi-Fi сетевое взаимодействие идет через центральный шлюз. И если он выйдет из строя, то обмен данными станет невозможным.
Кроме этого отдельные узлы могут остаться без связи, если неожиданно возникла преграда на пути следования радиосигнала.

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




Типовая структура сети ZigBee


Теперь остановимся на структуре самой сети ZigBee и типах устройств, которые в ней могут быть.
Типовая структура сети ZigBee



Координатор — это узел, организовавший сеть. Именно он выбирает политику безопасности сети, разрешает или запрещает подключение к сети новых устройств, а также при наличии помех в радиоэфире инициирует процесс перевода всех устройств в сети на другой частотный канал.
Роутер — это узел, который имеет стационарное питание и следовательно может постоянно участвовать в работе сети. Координатор также является роутером. На узлах этого типа лежит ответственность по маршрутизации сетевого трафика. Роутеры постоянно поддерживают специальные таблицы маршрутизации, которые используются для прокладки оптимального маршрута и поиска нового, если вдруг какое-либо устройство вышло из строя. Например, роутерами в сети ZigBee могут быть умные розетки, блоки управления осветительными приборами или любое другое устройство, которое имеет подключение к сети электропитания.
Конечное устройство — это устройство, которое подключается к сети через родительский узел – роутер или координатор – и не участвует в маршрутизации трафика. Все общение с сетью для них ограничивается передачей пакетов на «родительский» узел либо считыванием поступивших данных с него же. «Родителем» для таких устройств может быть любой роутер или координатор. Конечные устройства большую часть времени находятся в спящем режиме и отправляют управляющее или информационное сообщение обычно только по определенному событию (нажатие кнопки выключателя, открытие окна или двери). Это позволяет им долго сохранять энергию встроенного источника питания. Примером конечных устройств в сетях ZigBee могут быть беспроводные выключатели, управляющие работой светильников и работающие от батареек, датчики протечки воды, датчики открытия/закрытия дверей. Стоит сказать, что конечные устройства делятся на 3 категории, каждая из которых имеет свои особенности, но о них в следующей части.

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


Схема включения для измерения тока потребления

Питание для модуля подавалось через резистор R1 с номиналом 10 Ом. Два щупа осциллографа были подключены до и после резистора. После чего с помощью функции вычитания на осциллографе фиксировалось падения напряжения на резисторе. После этого, используя закон Ома , можно вычислить ток потребления. Кроме того, так как время в активном режиме фиксируется, можно найти заряд, а уж потом и затрачиваемую мощность в Джоулях.


Передача зашифрованного пакета длинной 27 байт

Цикл передачи занимает 7,5 мс, потребляемая энергия при напряжении питания 3.3 В — 444,2 мкДж.
Обычная алкалиновая батарейка имеет запас мощности ~10.8 кДж. Этой энергии хватит на отправку 24 миллионов таких запросов. Если спящий узел будет посылать такое сообщение раз в 10 секунд, то это будет 8640 запросов в сутки. То есть теоретически, если не учитывать старение батарейки, её энергии хватит на ~2700 дней = 7 лет.


Опрос родительского узла

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



Цикл передачи занимает 3,2 мс, потребляемая энергия при напряжении питания 3.3 В — 184 мкДж.
Обычная алкалиновая батарейка имеет запас мощности ~10.8 кДж. Этой энергии хватит на отправку 60 миллионов таких запросов. Если спящий узел будет посылать такой запрос раз в 10 секунд, то это будет 8640 запросов в сутки. То есть теоретически, если не учитывать старение батарейки, её энергии хватит на ~6940 дней = 19 лет.




Разработка стандартных ZigBee-устройств


«Отлично, – подумает читатель. – ещё один проприетарный протокол с поддержкой mesh-топологии. Этим уже никого не удивишь». Однако, альянсом ZigBee за все те годы, что существует технология ZigBee, была проведена большая работа по стандартизации не только сетевого уровня, но и уровня приложения разрабатываемых устройств[2]. Имеется большая библиотека кластеров ZigBee (ZCL), описывающая свыше 200 устройств, таких как выключатели, блоки управления освещением, интерфейс для подключения датчиков, счетчиков и многое другое[3]. И для некоторых типов систем (системы домашней автоматизации, системы сбора показаний со счетчиков и др.) разработаны специальные профили, в которые входит целый набор стандартных устройств. Они позволяют беспроводным узлам различных производителей понимать друг друга на уровне приложения. Стандартный профиль описывает стандартные команды и поведения конкретного устройства, например, блока управления системой климат-контроля или блока управления светильником.


За что отвечают различные уровни в сетевой модели OSI

Пример взаимодействия устройств со стандартным профилем

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


  • у лампочки есть набор хранимых атрибутов (состояние — включена/выключена; уровень яркости)
  • выключатель может отправлять команды для изменения доступных атрибутов лампочки
  • при получении команды, лампочка принимает указанное состояние

В библиотеке кластеров указывается, какие атрибуты и команды являются обязательными для тех или иных устройств, а какие опциональными. Это позволяет реализовать стандартный интерфейс взаимодействия между ZigBee-устройствами.




С чего начать?


Радиомодуль


Для быстрого старта, когда нет желания или возможности разбираться с программным стеком ZigBee, стоит обратить внимание на модули ETRX357. Все модули имеют встроенную прошивку от производителя, которая позволяет работать с аналоговой и цифровой периферией, а также с сетевыми функциями, с помощью набора AT-команд. Для начала работы с радиомодулем достаточно подключить линии питания и линии TxD и RxD последовательного интерфейса UART.


Пример AT-команд
Команда Описание
AT+PANSCAN Запуск сканирования на наличие ZigBee-сетей
AT+EN Создать сеть
AT+JN Присоединиться к сети
AT+DASSL Покинуть сеть
AT+DASSR Запрос удаленному узлу на выход из сети
ATSXX? Чтение содержимого регистра SXX

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


  • Переключение состояния порта ввода/вывода
  • Отправка информации на узел сбора данных о состоянии 16 цифровых выводов радиомодуля, оцифрованных данных от подключенных датчиков и информацию об уровене напряжения питания
  • Переход в активный режим или режим энергосбережения
  • Открытие «прозрачного канала» с другим устройством в сети

Пару слов о «прозрачном канале». При переходе в данный режим вся информация, поступающая по интерфейсу UART на радиомодуль транслируется на интерфейс UART другого радиомодуля. Данный канал является двунаправленным, а также наследует преимущества технологии ZigBee – при наличии роутеров в сети не будет происходить потери данных в таком канале связи так как все пакеты «прозрачного канала» будут в случае необходимости автоматически ретранслироваться. За счет этого можно организовать канал связи с предельной дальностью в несколько километров.


Программная реализация стека ZigBee



Если стандартных возможностей прошивки не хватает, то можно использовать реализацию программного стека ZigBee от компании Silicon Labs – Ember ZNet PRO. Так как модули выполнены на базе микросхемы EM357, то переход от стандартной прошивки к разработке собственного приложения потребует лишь приобретение программатора-отладчика ISA3 с помощью которого можно делать как внутрисхемную отладку устройства, так и отлаживать приложение на сетевом уровне.
Справа на рисунке показан пример того, как отображаются данные о пути следования пакета и его расшифровка.

Для упрощения процесса создания приложения предоставляется компоновщик приложений, который для выбранной конфигурации ZigBee-устройства генерирует каркас приложения и создает функции, в которых разработчик должен дописать требуемую логику приложения.
Все утилиты входят в программный пакет Simplicity Studio, куда также входит демонстрационная версия стека Ember ZNet PRO. Поэтому можно прямо сейчас скачать и посмотреть как это работает.


Инструкция для начала работы с генератором приложений

После того, как вы скачали и установили пакет Simplicity Studio, проверьте, установлено ли Wireless-расширение.




Нас интересует пакет Wireless Products




Выберите утилиту Application Builder




Далее выбираем фреймворк. Для ZigBee-приложений это будет ZCL Application Framework v2. Важно: необходимо установить галочку для отображения демонстрационных встроенных стеков.




Выбираем Internal Stack




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



Инструкция для начала работы с анализатором сетевого трафика

После того, как вы скачали и установили пакет Simplicity Studio, проверьте, установлено ли Wireless-расширение.




Нас интересует пакет Wireless Products




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





Результат





Заключение


Надеюсь, что эта статья помогла понять основные особенности беспроводной технологии ZigBee и вы сможете прикинуть в каких приложениях можно её использовать. Сама технология является полностью открытой и все её спецификации доступны для скачивания с сайта альянса ZigBee. А стандартная библиотека кластеров – это настоящий язык взаимодействия между устройствами, которые окружают нас каждый день: устройства домашней автоматизации, системы безопасности, сенсорное оборудование и многое другое.


P.S. Для тех, кто не смог осилить текст, есть возможность посмотреть вводные видео по технологии ZigBee.



Список используемой литературы
  1. Статья из Википедии – Bluetooth Low Energy
  2. Описание стандартизации уровня приложений на сайте альянса ZigBee
  3. ZigBee Cluster Library
  4. Техническое описание модуля ETRX357
  5. Список AT-команд модуля ETRX357
Что вы хотели бы увидеть в следующей статье?

Проголосовало 74 человека. Воздержалось 26 человек.

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

Комментарии (17)


  1. avan
    20.04.2016 11:27
    +2

    Спасибо за статью, познавательно.
    А подробности по Thread — позже?


    1. safari2012
      20.04.2016 15:00

      это вроде как zigbee + IP?


      1. vpetrigo
        20.04.2016 15:10

        Ага, у нас на сайте можно почитать общие слова об отличиях. По сути были объединены преимущества технологии ZigBee (поддержка mesh-топологии, ретрансляция пакетов, самовосстановление и др.) + 6LoWPAN (использование IPv6 на сетевом уровне и UDP на транспортном).


  1. Wadik
    20.04.2016 12:20
    +4

    Хотелось бы в следующей статье прочитать об особенностях технологии Thread.


  1. synka
    20.04.2016 12:22
    +4

    Жду про Thread.


  1. Radegast
    20.04.2016 14:04

    А почему z-wave нет в таблице?


    1. vpetrigo
      20.04.2016 14:22
      +2

      К сожалению, я не ставил для себя цели в данной статье сделать обзор на все беспроводные технологии связи. Z-Wave, на мой взгляд, не очень интересен в том плане, что устройства из различных территориальных зон несовместимы между собой ввиду того, что используются различные разрешенные частоты (для России это 869 МГц, для Европы 868,4, 869,85 и т.д.). Но тут как говориться на вкус и цвет… Плюс это полностью закрытый протокол, права на который принадлежат компании Sigma Design. Соответственно чипы и реализацию программного стека можно достать только у них.


  1. AlienJust
    20.04.2016 14:11
    +1

    Из применений.
    Мы, например, показания счётчиков электроэнергии по zigbee читаем (плюс управление контакторами). Модули также от Телегезиса.


  1. golf2109
    20.04.2016 19:00

    а почему Texas Instrument не упомянут?
    В чем преимущества и недостатки решений Silabs перед TI?


  1. levap
    21.04.2016 10:12

    Для стека Zigbee, на мой взгляд слишком высок порог вхождения. С одной стороны вроде и неплохо иметь стандартизованные профили для разного типа устройств, но использование всего этого добра превращается в нетривиальную задачу, по крайней мере нахрапом мне не удалось понять как оно работает, если отступить за рамки примеров (я баловался с Z-Stack от TI). Когда проводил исследование технологий построения mesh сетей как-то с пол-пинка завелся только 6lowpan в лице Contiki OS, использование его интуитивно понятно, т.к. это привычный всем IP.


    1. vpetrigo
      21.04.2016 10:54
      +2

      Silabs старается максимально упростить задачу разработчикам, которые используют их ZigBee-микросхемы. Они сделали Application Builder, с помощью которого можно выбрать необходимые стандартные профили и callback-функции, которые будут вызываться при возникновении различных событий, например:


      • необходимо задать начальное состояние лампочки/установить значение счетчика? Включите callback-функцию, которая будет вызвана при инициализации. Application Builder создаст пустую функцию, где вы сможете описать необходимую логику работы.
      • что делать, если пришла команда на изменение яркости? Если нужно обрабатывать такую команду, то выбираете соответствующий callback и в нем уменьшаете скважность ШИМ или управляете электронным реостатом.

      В статье про работу со стеком ZigBee от Silabs (Ember ZNet PRO) я разберу эти вопросы.


  1. alsakharov
    21.04.2016 19:12
    -1

    WiFi сети далеко не всегда так «линейны», как об этом написано. Технологию mesh для WiFi, по сути повторяющую идеологию ZigBee, никто не отменял.


  1. kireevco
    21.04.2016 19:53

    Спасибо большое за статью! Скажите, есть ли смысл сравнивать китайские чипы nrlf с zigbee по критериям требований мелкой промышленности, либо nrlf совсем не годно для реального мира? Для тех же удаленных датчиков?


    1. vpetrigo
      22.04.2016 01:53

      А можно вас попросить ссылку на данные чипы? Не нашел ничего про них.


      1. kireevco
        22.04.2016 01:57

        Приношу прощения, неверно указал название. NRF24L01. Конечно, понятно, что zigbee предоставляет гораздо более продвинутую инфрастуктуру… Интересно, есть ли у NRF шансы с точки зрения реального производства-продажи-поддержки ...


        1. vpetrigo
          22.04.2016 02:02

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


  1. kireevco
    21.04.2016 23:07

    А еще интересно, кто-нибудь делал хотя бы поверхносное сравнение модулей telegesis и xbee?