Радиомодемы Xbee для сетей ZigBee — что это такое?: как сделать самому

ZigBee-модули XBee Series 2 с поддержкой Mesh-топологии

MaxStream

О. Пушкарев
Новости Электроники 16, 2007

В октябре 2007 года компания MaxStream представила своим клиентам новые ZigBee-модули XBee Series 2. Они предназначены для построения полноценных ZigBee-сетей с топологией Mesh. В статье даны краткие технические характеристики новых модулей, отличия от предыдущей линейки и особенности их применения. Рассмотрена работа с отладочным комплектом и приведены практические примеры организации ZigBee-сети на основе новых модулей.

Компания MaxStream хорошо известна российским разработчикам своими радиочастотными модулями XBee/XBeePro [1] и корпусированными радиомодемами с диапазоном 2,4 ГГц. Радиомодули MaxStream используют как технологию ZigBee, так и собственный формат передачи данных, построенный на основе протокола с «прыгающими частотами». Продукты MaxStream завоевали широкую популярность благодаря отличным техническим характеристикам и упрощенному набору команд управления, что позволяет работать с серьезной системой беспроводной передачи данных даже неискушенному в этой области инженеру. Компания MaxStream уже несколько лет выпускает модули XBee/XBee-Pro, которые востребованы на рынке и не планируются к снятию с производства. Зачем же компании потребовалось осваивать новую линейку XBee Series 2? Для того чтобы правильно ответить на этот вопрос, нужно вспомнить эволюцию ZigBee-стандарта и историю поглощений компаний на этом рынке:

1. Начало выпуска XBee/XBeePro-модулей приходится на 2005 год, когда только-только появилась первая спецификация ZigBee-стандарта (далее ZigBee-2004). В момент выпуска модули поддерживали передачу данных по стандарту 802.15.4, который является нижним уровнем для построения ZigBee-сетей.

2. Компания MaxStream начинает разработку ZigBee-версии Firmware. Выпущена бета-версия ZigBee-прошивки, которая позволяет работать с Mesh-топологией ограниченной структуры (согласно спецификации ZigBee-2004). Прошивка построена на базе ПО от Freescale, которая в свою очередь сотрудничает с компанией Figure 8 Wireless. Независимая на тот момент компания Figure 8 Wireless поставляет свой стек ряду производителей ZigBee-трансиверов, в том числе имеет стек протоколов ZigBee для микропроцессора Freescale MC9S08GT60, являющегося основой модулей XBee/XBeePro [2].

3. В 2005 году компания Figure 8 Wireless поглощается компанией Chipcon и становится процессорно-зависимой компанией. Далее, в этом же году, компания Texas Instruments приобретает Chipcon. Как следствие, сворачивается поддержка версии собственного стека, ориентированная на продукцию теперь уже конкурирующих брендов.

4. В 2006 году ZigBee-альянс принимает новую спецификацию стандарта ZigBee (ZigBee-2006), который несовместим с предыдущей версией ZigBee-2004. Нужно отметить, что в связи с несовершенством ZigBee-2004 реальных продуктов на его основе было выпущено ничтожно мало. В 2008 году ожидается обнародование новой спецификации ZigBee PRO*, доступной сегодня только членам ZigBee-альянса.

Итак, что же компания MaxStream имеет на сегодняшний день? ZigBee-версия прошивки для модулей XBee/XBeePro существует, доступна для загрузки, но все еще находится в статусе «бета». Данная прошивка позволяет модулям работать в Mesh-сети, но имеет ряд ограничений:

  • не поддерживает конечные устройства (End-device);
  • соответствует уже устаревшему стандарту ZigBee-2004.

Согласно последней информации с сайта производителя, в связи с изменениями в аппаратной части доступные ранее бета-версии ZigBee-прошивок (8 х 13, 8 х 14 и 8 х 17) более не поддерживаются компанией MaxStream. Модули XBee/XBeePro c прошивкой (Firmware) 802.15.4 прекрасно подходят для построения сетей типа Точка-точка или Звезда, т.е. сетей без ретрансляции сообщений. Для увеличения дальности в такие сети можно добавлять «прозрачные» репитеры, которые представляют собой модуль XBee/XBeePro с замкнутыми выводами «Вход» и «Выход» UART. Модули XBee/XBeePro были и остаются эффективной платформой для построения сетей стандарта 802.15.4 и не планируются к снятию с производства.

Модули XBee Series 2. Общая информация

Новая серия модулей XBee Series 2 выступает в качестве аппаратно-программной платформы, полностью соответствующей спецификации ZigBee-2006 и, в дальнейшем, версии ZigBee PRO. Модули XBee Series 2 (рис. 1) совместимы по габаритам и выводам с модулями XBee, однако построены на однокристальном ZigBee-чипе EM250 компании Ember. Выбор данного решения был не случаен. Компания Ember имеет в своем арсенале как аппаратные (микросхемы EM2420, EM250, EM260), так и программные (ПО EmberZStack) решения. Компания входит в пятерку производителей-лидеров в области ZigBee, является промоутером ZigBee-альянса и активно участвует в разработке спецификации XBee Pro. На момент написания данной статьи потребителям доступны только маломощные (2 мВт) модули новой серии. Коммерческий выпуск модулей с повышенной мощностью ожидается в январе 2008 года. Технические параметры модулей XBee Series 2 приведены в таблице 1. Для сравнения приведены параметры модулей XBee и XBee Pro. Благодаря более высокой выходной мощности и чувствительному приемнику, модули новой серии обеспечивают большую дальность связи. Энергопотребление модулей в спящем режиме снижено с 10 до 1 мкА, что очень важно для устройств с батарейным питанием. Модули выпускаются в четырех вариантах подключения антенны. Для заказа нужного модуля на сайте MaxStream есть генератор обозначений http://www.maxstream.net/products/part-number-generator/xbee-module.php.

Рис. 1. Модули XBee Series 2

В качестве программного обеспечения для модулей XBee Series 2 выступает ZigBee-стек от компании Ember EmberZstack 2.5. Этот стек включает в себя отдельные элементы спецификации ZigBee Pro, например:

  • Метод распределения адресов на основе случайных чисел. В отличие от предшествующего метода CSKIP (распределение адресов по дереву), новый алгоритм позволяет исключить вероятность нехватки адресов в одной ветви сети, при избытке в другом сегменте.
  • В качестве единственного метода маршрутизации используется алгоритм оптимальной прокладки маршрута по запросу (п. 3.7.3 [3], см. также алгоритм AODV [4]).
  • Нет жестких ограничений на число узлов (max_children, max_routers). Максимальная глубина ретрансляций (max_hops) ограничена только разумным временем ожиданием ответа.

Ключевое отличие модулей XBee Series 2 от модулей XBee лежит в области программного обеспечения. Модули XBee Series 2 предназначены для построения полноценных ZigBee-сетей с топологией Mesh (каждый с каждым). Однако модули XBee Series 2 не являются заменой старых модулей XBee. В зависимости от сложности проектируемой сети, в более выигрышном положении может оказаться любой из модулей. Использование модулей XBee предпочтительнее, когда необходимо строить простые сети типа «Звезда» (802.15.4). В последнем случае разработчик получает более полный контроль над сетью. Несмотря на единую скорость в радиоканале (250 кБит/сек), в сети ZigBee наблюдаются большие задержки, и реальная пропускная способность ниже, чем у сети 802.15.4.

Модули XBee Series 2. Структура ПО

Модули XBee Series 2 предназначены для построения сетей ZigBee с Mesh-топологией. Все необходимое ПО для формирования и поддержания работоспособности ZigBee-сети (ZigBee-стек) загружается при производстве модуля. В зависимости от сетевой функции узла

(Координатор/Роутер/Конечное устройство), модуль XBee Series 2 должен содержать соответствующую прошивку:

  • Координатор;
  • Роутер/Конечное устройство.

В связи тем, что для роутера/конечного устройства используется одна прошивка, выбор сетевой роли модуля определяется AT-командой «SM». Прошивки модулей также различаются по типу управления модулем:

  • Прозрачный режим. Управление с помощью AT-команд;
  • Пакетный режим. Управление с помощью API-фреймов.

Таблица 1. Технические параметры модулей XBee Series 2

ПараметрыXBee Series 2XbeeXBee-PRO
Топология сетиZigBee MeshТочка-точка,
Звезда, 802.15.4
Точка-точка,
Звезда, 802.15.4
Рабочая частота, ГГц2,4. 2,4835
Радиус действия в помещении, м4030100
Радиус действия в свободном пространстве, м1201001200
Максимальная выходная мощность, мВт21100
Скорость передачи данных по радиоканалу, бит/с250000
Скорость передачи данных по интерфейсу, бит/с1200. 2304001200. 1152001200. 115200
Чувствительность, дБм-98 (1% PER)-92 (1% PER)-100 (1% PER)
Напряжение питания, В2,1. 3,62,8. 3,42,8. 3,4
Ток потребления в режиме передачи, мА3845270
Ток потребления в режиме приема, мА355055
Ток потребления в режиме энергосбережения, мкА0): статус режима API «Координатор стартовал» отсылается из UART.

3. Параметр AI (Association Indication) будет установлен 0, что означает успешный запуск.

4. Параметр MY (16-битный адрес источника) равен 0 (16-битный сетевой адрес ZigBee Координатора).

5. После запуска, Координатор позволит присоединение к сети в течении времени NJ (Node Join Time).

6. Рекомендуется настроить в Координаторе строковый идентификатор NI (NI-строку). Эта NI-строка должна быть сохранена в постоянной памяти с помощью команды WR (Write).

Состав комплекта XB24-BPDKКоличество, шт
XBee Series 2 Модуль Координатора с проводной антенной1
XBee Series 2 Модуль Роутера/Конечного устройства с проводной антенной1
Series 2 Модуль Роутера/Конечного устройства с чип-антенной1
XBee Series 2 Модуль Роутера/Конечного устройства с разъемом UFL1
XBee Series 2 Модуль Роутера/Конечного устройства с разъемом RPSMA1
RS-232 переходная плата3
USB переходная плата2
RS-232-кабель3
USB-кабель2
Полуволновой диполь с RPSMA-разъемом2
Кабель с разъемом для подключения батареи 9 В3
Заглушка последовательного порта1
Адаптер нуль-модема (male-to-male)1
Адаптер нуль-модема (female-to-female)1
Инструкция пользователя1
Компакт-диск с документацией, программой конфигурации и тестирования1
Переходной кабель для подключения антенны (RPSMA – U.FL)1

Добавление дочернего устройства (Роутера)

Рис. 3. Отладочный комплект

1. Определите список рабочих каналов (SC) и желаемый PAN ID для присоединения к сети (ID) (0xFFFF – для любой сети). По умолчанию, значение параметра SD (Scan Duration) должно быть достаточно. Если эти значения изменяются со значений по умолчанию, их необходимо сохранить в постоянной памяти с помощью команды WR (Write).

2. После включения Роутер попробует найти родительское устройство для присоединения на основе его параметров SC и ID.

3. Как только Роутер присоединился к родительскому устройству, Ассоциированный LED (если активирован (D5)), начнет мигать 2 раза в секунду. Параметры ID и CH будут содержать рабочий PAN ID и текущий канал. Параметр MY будет содержать 16-битный сетевой адрес Роутера. Команда MP возвратит 16-битный сетевой адрес родительского устройства Роутера (узла, к которому он присоединился). Если активирован API (параметр AP > 0): статус режима API «Присоединен» отсылается из UART.

4. Если Роутер не присоединился надлежащим образом, параметр AI (Association Indication) может быть считан для определения причины ошибки. Для устранения ошибки необходимо проверить, что PAN содержит Координатор или Роутер с соответствующим каналом (SC, CH) и PAN ID (ID) и разрешает узлам присоединяться к сети (параметр NJ).

5. Как только Роутер присоединился к PAN, Роутер позволит присоединение другим устройствам на основе параметра NJ.

6. Рекомендуется настрить в Роутере NI-строку. Эта NI-строка должна быть сохранена в постоянной памяти с помощью команды WR (Write).

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

1. Установите на ПК USB драйвер и программу X-CTU с приложенного CD-диска или с сайта MaxStream (http://www.maxstream.net/support/downloads.php)

2. Установите модули на переходные платы, подключите антенны

3. Подключите одну USB-переходную плату к ПК. Запустите программу X-CTU и, при необходимости, обновите FW модулей, что бы у вас был 1 координатор и 4 роутера с управлением AT-командами.

4. С помощью закладки Modem Configuration присвойте простой строковый идентификатор (NI) каждому модулю, например 1, 2, 3, 4, 5. Сохраните измененные параметры кнопкой «Write» в энергонезависимую память каждого модуля.

5. Перейдите в режим Terminal, нажмите на клавиатуре три раза «+» (без паузы). После того, как модуль ответит «OK», введите с клавиатуры ATNR0 и нажмите «Enter». Эта команда сбрасывает сетевые настройки модуля. Это необязательный пункт, но он может понадобиться, если в роутерах сохранены старые сетевые настройки.

6. Подключите координатор к ПК. Запустите программу X-CTU. На плате координатора начнет мигать светодиод с периодом один раз в секунду. Такая индикация означает успешный старт Координатора.

7. Поставьте красную заглушку на одну из переходных плат RS-232, например на которую установлен роутер с NI = «2».

8. Последовательно подайте питание на все роутеры (4 шт.). При возможности, подключите вторую USB-переходную плату с одним из установленных роутеров ко второму ПК (лучше, если это будет ноутбук). При успешном присоединении к сети на каждой плате роутеров будет 2 раза в секунду мигать светодиод.

9. Подайте команду (закладка Terminal) ATND на любой из плат, подключенных к ПК. Координатор будет опрашивать вашу сеть и через 6 секунд вы увидите список узлов с их 64-битными адресами и строковыми идентификаторами.

10. По образцу п. 5 подайте команду ATDN2. Тем самым будет проложен маршрут к роутеру «2». Перейдите на закладку Range Test, нажмите кнопку Advanced и увеличьте параметр Data Receive Timeout до 5000. Это может оказаться полезным, в случае если сеть сама будет перепрокладывать маршрут.

11. Запустите Range Test кнопкой Start. Если все сделано правильно, вы увидите возвращенные от роутера «2» пакеты. Естественно, для проведения теста не обязательно, что бы между координатором и нашим роутером «2», была прямая радиовидимость, информация может ретранслироваться другими узлами.

ZigBee-модули XBee: вопросы практического применения

Применение модулей XBee без внешнего микроконроллера

В данной статье речь пойдет исключительно о модулях XBee Series 2 (рис. 1), то есть полноценных ZigBee-модулях, поддерживающих спецификацию ZigBee-2007 и позволяющих построить mesh-сеть, включающую спящие и мобильные устройства. Основной режим работы модулей XBee — это работа под управлением внешнего микроконтроллера, управляющего модулем с помощью простых AT-команд или упорядоченных структур данных (режим API) [1].

Компания Digi разработала свой собственный фирменный (proprietary) ZigBee-профиль, позволяющий организовать прозрачную передачу данных между любыми узлами ZigBee-сети и предоставляющий доступ к цифровым и аналоговым портам ввода/вывода на удаленных узлах, работающих без хост-процессора.

Какие задачи способен выполнять XBee-модуль при использовании его без внешнего микроконтроллера? Это, прежде всего, работа с внешними датчиками, которые выдают значения параметров в виде аналогового напряжения или имеют выходы с двумя состояниями — «включено/выключено». Модуль XBee имеет мультиплексированные аналоговые (4) и цифровые (12) порты. Для управления внешними устройствами, кроме цифровых выходов, можно использовать 2 вывода ШИМ (10 бит). Также XBee-модуль напрямую сопрягается с любыми устройствами, имеющими UART-интерфейс. При самостоятельной работе XBee-модуль может передавать данные по заданному расписанию, отправляя их через определенные промежутки времени, или по изменению состояния сигнала на цифровом порту. Эти варианты применения наиболее просты и требуют лишь общего понимания логики работы ZigBee-сети.

Рассмотрим потенциальные варианты применения модуля XBee без использования внешнего процессора:

  1. «Тревожная кнопка», или датчик проникновения с автономным питанием. XBee-модуль настраивается как конечное спящее устройство с пробуждением один раз в 10 (20, 30…) секунд для отправки сообщения о состоянии батареи. Это же сообщение является индикацией работоспособности устройства и нахождения его в зоне действия сети. При нажатии на кнопку, подключенную к выводу 20, модуль отправляет идентификационный пакет, который принимают координатор и все роутеры в сети, они, в свою очередь, должны работать в режиме API. Выбор именно этого типа индикации повышает вероятность успешной доставки сообщения.
  2. Активная радиочастотная метка с батарейным питанием для медленно перемещающихся объектов. XBee-модуль работает как конечное спящее устройство и программируется на периодическую выдачу сообщения, отправляемого координатору. Для определения местоположения необходимо разместить по площади требуемое количество роутеров, которые будут выступать в качестве опорных точек. Местонахождение объекта определяется по адресу родительского узла, через который модуль отправляет очередное сообщение. При работе в режиме API 16-битный адрес родительского узла включен в отправляемый пакет. Метод обеспечивает грубую точность позиционирования, определяемую радиусом действия каждого роутера, который составляет десятки-сотни метров для маломощной версии.
  3. Удаленное включение до 8 независимых нагрузок и ШИМ-управление по 2 каналам. Для снижения задержек модуль XBee работает как роутер в режиме API, задействуются цифровые порты. Отдавать команды на управление нагрузками можно с любого модуля, подключенного к данной ZigBee-сети.
  4. Удаленное измерение температуры, влажности, освещенности или выдача любых других параметров, предоставляемых измерительным датчиком в виде напряжения. Оцифрованные данные (10 бит) могут отправляться периодически, либо по командезапросу с любого узла сети.
  5. Управление любыми объектами с UART-интерфейсом. Модуль XBee работает в прозрачном режиме (управление AT-командами). Данный способ не требует внесения каких-либо изменений в программное обеспечение существующего оборудования.

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

Например, для построения беспроводного счетчика потребления воды будет достаточно 8-битного маловыводного микроконтроллера стоимостью 20–30 рублей. При этом разработчик может выбрать хорошо известный ему процессор и использовать свои предшествующие программные наработки. Для управления модулем XBее с помощью внешнего микроконтроллера рекомендуется включить режим API, так как именно он обеспечивает доступ ко всем ресурсам модуля. При работе модуля в режиме API можно создавать сетевые узлы ZigBee, работающие с публичными профилями, утвержденными ZigBee-альянсом. В последнем случае XBee-модуль будет совместимым с ZigBee-решениями других производителей. Для использования модуля XBее на 100% разработчику необходимо изучить техническое описание модуля и набор всех управляющих команд, которое занимает 140 страниц документации [2]. Доступный русскоязычный перевод [3], хоть и относится к уже устаревшей версии (ZNet 2.5), все же может оказаться полезным, так как большое количество описанных команд работает без изменений и в более новых версиях firmware.

Внешний процессор или загрузка приложения?

В качестве альтернативы радиомодулям с предустановленным ПО, можно построить ZigBee-узел на основе однокристального решения (микроконтроллер+трансивер). Это предполагает загрузку и запуск конечного приложения на том же процессоре, где «крутится» ZigBee-стек. Выгоды такого решения очевидны — это, как правило, меньшая стоимость и меньшая занимаемая площадь печатной платы. Однако у такого похода есть и недостатки — это сложность программирования и длительное время разработки. Возьмем, для примера, используемый в модулях XBee ZB стек EmberZNet 3.x ZigBee-PRO. Описание его API-функций изложено в 922-страничном англоязычном документе [4]. Не исключено, что для понимания каких-то нюансов вам придется заглянуть в оригинальную спецификацию ZigBee [5, 6], а это еще 604+119 страниц технического текста. Если добавить к этому время на изучение архитектуры используемого в SoC процессора, то становится ясно, что разработка затянется на долгие месяцы, если вообще будет доведена до конца. Наверное, поэтому ведущие производители ZigBee-микросхем включили в свою линейку так называемые ZigBee-сопроцессоры, то есть кристаллы, включающие в себя ZigBee-стек и предназначенные для работы под управлением внешнего микроконтроллера.

По идеологии применения радиомодуль XBee в чем-то похож на ZigBee-сопроцессоры EM260 компании Ember. Оба этих решения обеспечивают доступ к ZigBee-сети с помощью предоставляемого набора управляющих команд. При этом приложение пользователя избавлено от всех задач, связанных с работой ZigBee-сети. Микросхема EM260 стоит меньше, чем радиомодуль XBee, и предоставляет доступ к ZigBee-функциям нижнего уровня. Однако применение этой микросхемы требует определенных знаний в области СВЧ и наличие дорогостоящего измерительного оборудования для проверки радиочастотных параметров конечного изделия, куда запаивается этот трансивер. Кроме этого, модули ZigBee предлагают разработчику существенно более простой интерфейс управления. Подробную информацию о различиях между API для модулей XBee и API для EM260 можно найти в документе [7].

Компания Digi предоставляет возможность загрузки в XBee своего приложения вместо встроенного firmware. Это можно осуществить двумя способами — с помощью специального программатора через контактные площадки на верхней стороне модуля (рис. 2) либо через UART. При использовании своего ПО нужно следить за тем, чтобы случайно не уничтожить содержащийся в модуле оригинальный загрузчик Digi. В противном случае восстановить прошивку Digi будет нельзя. В документации [2] приводится таблица соединений микросхемы EM250 и рекомендации по инициализации аппаратных ресурсов модуля.

Мифы и реальность

Несмотря на то, что с момента появления ZigBee прошло уже 5 лет, технология все еще находится на начальном этапе своего развития. С одной стороны, данную технологию поддерживают ведущие производители полупроводников, за прошедшие годы спецификация ZigBee была существенно переработана, появились публичные профили для решения достаточно важных и востребованных задач, среди которых домашняя автоматизация, управление потреблением энергии, автоматизация производства. С другой — на полках магазинов не видно ZigBee-устройств. Говорить о коммерческом успехе технологии пока рано. Число промышленных производителей конечных ZigBee-продуктов исчисляется десятками, мало и количество крупных инсталляций ZigBee-систем. Причин несколько — относительная дороговизна решения, высокая трудоемкость процесса разработки и, отчасти, существующие мифы и завышенные ожидания разработчиков и потребителей. Часто встречается заблуждение, что на базе ZigBee можно строить сети масштаба города, передавать звук (и даже видео!), создавать сети из десятков тысяч устройств и т. п. Для каждого постулата такого рода есть некое фактическое основание, тем не менее это ошибочные представления о возможностях технологии на данном этапе.

Можно ли построить ZigBee-сеть из десятков тысяч устройств?

В теории — да. Для сетевого адреса отводится 2 байта, что обеспечивает адресную емкость для 65 535 устройств. Но спецификация ZigBee определяет ряд других параметров (косвенно связанных с максимальным числом устройств в сети) таким образом, что реально можно говорить не более чем о нескольких сотнях устройств в одной сети. При числе устройств более 300 существенно возрастает служебный трафик и, соответственно, падает пропускная способность. Главные ограничивающие факторы для большого количества узлов — это затраты на разрешение возникающих конфликтов при случайном распределении адресов, снижение пропускной способности из-за растущей служебной активности, большие задержки при обнаружении устройств и прокладке маршрутов, ограничения ОЗУ для хранения больших таблиц маршрутизации.

Передача звука и видео

Скорость передачи данных в радиоканале в ZigBee составляет 250 кбит/с, но, несмотря на это, реальная скорость передачи полезных данных может быть меньше на порядок. Главная же проблема, возникающая при попытке передачи звука через ZigBee-сеть с ретрансляцией сообщений, — это возникающие задержки, которые неизбежны и непредсказуемы. Величина этих задержек достигает нескольких секунд, что делает передачу «живого» звука абсолютно нереальной, если мы говорим о mesh-сети. Только на нижнем уровне (802.15.4.) достижимы реальные скорости (до 115 кбит/с) [8], позволяющие передавать звуковой поток в цифровом виде.

Построение сетей масштаба города

Максимально разумное число ретрансляций пакета в сети ZigBee не должно превышать 10–30 хопов. С учетом того, что вне помещений максимальная разрешенная мощность составляет 10 мВт [9], одной ZigBee-сетью можно покрыть площадь только одного небольшого района.

Использование ZigBee для построения сети быстродвижущихся объектов (автомобили, самолеты)

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

Таблица. Данные для различной конфигурации сети

Число ретрансляцийШифрованиеНаправление передачиСкорость, кбит/c
1НетРоутер — роутер35
1ДаРоутер — роутер19
1НетРоутер — конечное устройство25
1ДаРоутер — конечное устройство16
1НетКонечное устройство — роутер21
1ДаКонечное устройство — роутер16
4НетРоутер — роутер10
4ДаРоутер — роутер5

Пропускная способность сети и задержки

При разработке mesh-сети нужно правильно задавать ключевые параметры стека, которые будут влиять на пропускную способность сети и возникающие в ней задержки. Довольно сложно ответить на вопрос о конкретных цифрах задержек и максимальной скорости передачи данных, так как подобные значения лучше всего проверять на практике — в процессе тестовых проверок в условиях, близких к реальным. Пропускная способность ZigBee-сети зависит от топологии сети, направления передачи информации, уровня сигнала и даже соотношения числа роутеров и конечных устройств. Для XBee-модулей ZB максимальная пропускная способность примерно равна 35 кбит/с. В таблице 1 приведены примерные цифры для различной конфигурации сети, полученные экспериментальным путем. При измерении пропускной способности пересылалось 100 000 байт при высоком уровне сигнала. Случаев потерь пакетов и перепрокладки маршрута отмечено не было.

Несмотря на относительно невысокие скорости передачи, это не является критичным параметром для большинства тех применений, для которых, собственно, и разрабатывался этот стандарт. В системах сбора информации с беспроводных датчиков объем полезных данных составляет десятки байт: такой объем не предъявляет высоких требований к средней скорости передачи данных. Однако, кроме скорости передачи, в сетях с mesh-топологией данные будут доходить до узла сбора информации с переменной задержкой, которую необходимо учитывать при принятии решения о недоставке сообщения и, соответственно, повторных попытках передачи. Простая отдача команды на пересылку пакета приводит в действие сложный алгоритм работы стека ZigBee (рис. 3). В модулях XBee ZB (согласно спецификации ZigBee) широко используются задержки случайной величины — как в алгоритме доступа к среде (CSMA-CA), так и при формировании ответа каждого узла на команду обнаружения узлов. Рассмотрим основные параметры временных задержек для различных типов сообщений.

При подаче команды на обнаружение всех узлов в сети (ND) в передаваемом пакете присутствует максимальная временная задержка, которую могут использовать узлы сети при отправке ответа. Эта задержка необходима для того, чтобы все узлы сети успели отправить ответные сообщения и эти сообщения не мешали друг другу. Данная задержка устанавливается командой NT и по умолчанию равна 6 секундам. При подаче запроса ND не следует предпринимать никаких действий, пока не пройдет время NT. Чем меньше узлов в сети, тем меньше может быть значение NT. Минимально допустимое время NT — 3,2 с. Не рекомендуется рассылать широковещательные сообщения чаще, чем 1 раз в 8 секунд.

При отправке сообщения на удаленный узел используется параметр NH (максимальное число ретрансляций) для установки максимального времени ожидания ответа. По умолчанию значение NH = 0_1E, что эквивалентно 1,6 секунды на одну попытку отправки. С учетом того, что время передачи пакета между 2 соседними узлами составляет 50 мс и еще 100 мс необходимо на обработку данных, установленное по умолчанию значение NH определяет максимальную дальность в 8 ретрансляций (9 модулей в ряд). Если модуль отправляет сообщение и не получает ответа от удаленного узла за 1,6 секунды, то он автоматически делает еще 2 попытки. Таким образом, общее время, отводимое стеком на доставку (с подтверждением) одного сообщения, будет 4,8 секунды для сети глубиной в 8 ретрансляций. Если же сообщение отправляется на спящий конечный узел, то ко времени доставки еще необходимо добавить время сна (параметр SP), длительность которого может достигать десятков секунд.

Последние обновления

Недавно компания Digi сообщила о новой версии внутреннего программного обеспечения (firmware) для модулей XBee ZB. Firmware v.2.x.6.x предоставляет разработчику больше возможностей по созданию недорогих и надежных беспроводных приложений. ПО построено на базе стека EmberZNet 3.3.1 ZigBee-PRO и содержит ряд новых опций:

  • Доступ к портам ввода/вывода на всех типах устройств (команды IS, IR, IC).
  • Обновление данных об уровне сигнала (RSSI) при получении подтверждения о доставке на уровне приложения (APS acknowledgment).
  • Сетевой сторожевой таймер (до 17 дней) позволяет «перезапустить» роутер при проблемах с передачей данных в сети.
  • Передача фрагментированных сообщений — автоматическая обработка длинных сообщений, которые превышают стандартный пакет данных.
  • Роутеры могут выступать в качестве конечных спящих устройств.
  • Поддержка маршрутизации «многие к одному» (many-to-one route).
  • Возврат кода ошибки при невозможности отправки удаленной API-команды.
  • Оптимизация запросов от конечных устройств для повышения пропускной способности.
  • Гибкая настройка параметров UART (четность, число стоп-битов).

Заключение

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

ZigBee

Что такое ZigBee протокол в системе “умный дом” Xiaomi?

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

ZigBee – протокол передачи данных

Наверное все представляют что такое Wi-Fi сеть, которая есть почти в каждой квартире. Есть устройство передатчик (роутер) и приемники (телефон, ноутбук и другие устройства), их связывает единая сеть, которая создается на роутере. Схематично это выглядит так:

Такой тип сети называется “Звезда”, из-за визуального сходства (Центральное устройство и лучи отходящее от него). Тут все кажется довольно просто.

Как вы можете заметить, на схеме присутствуют устройства из системы “Умный дом” от Xiaomi. Получается, что на протоколе Wi-Fi можно построить свою систему автоматизации? Ответ – да, можно.

А зачем тогда что-то придумывать?

Если вы обратите внимание на схему, то заметите, что все устройства либо подключаются к розетке, либо требуют частой зарядки. Тут во всей красе предстает главный минус Wi-Fi сети в системе умного дома, а именно высокое энергопотребление. И если для устройств питающихся от розетки это не страшно, то для устройств и датчиков работающих от батарейки – это смертельно. Согласитесь, зачем нужен датчик, в котором нужно каждый день заряжать аккумулятор?

Но ведь есть протокол передачи данных, с низким энергопотреблением, который нам давно известен и до сих пор активно используется. Вспомните фразу: “включи блютуз, я тебе перекину фотки.”. Да, именно Bluetooth, который раньше использовался для передачи данных, а сейчас занял нишу подключения беспроводных аудио-устройств и гаджетов, так же применяется в системе “Умный дом”. Чаще конечно идет в пару с Wi-Fi, но есть и устройства только с bluetooth, например чайник Mi Smart Kettle.

Но и тут все не так гладко, как хотелось бы. Как и Wi-Fi, Bluetooth использует топологию “Звезда”. А что в этом страшного? Ответ прост, малая дальность действия и низкая отказоустойчивость. Основное устройство необходимо размещать максимально по центру помещения, чтобы обеспечить связь со всеми устройствами. И если для квартиры это не так критично, то в частном доме просто не получится обеспечить постоянную связь между устройствами, находящимися на заметном удалении друг от друга. Для решения этой проблемы были внедрены Bluetooth шлюзы.

ZigBee

Логично, что нужен был протокол передачи данных с низким энергопотреблением и надежностью соединения. Поэтому еще в 2003 году была ратифицирована спецификация ZigBee. Основное отличие от Bluetooth – это топология “Mesh”.

В ней подразумевается наличие 3 типов устройств:

  1. Координатор – головное устройство, которое создает сеть. В умном доме сяоми эту роль выполняет один из шлюзов.
  2. Роутер – устройство, которое имеет постоянное питание. Эту роль берут на себя выключатели и розетки.
  3. Конечные устройства – датчики и гаджеты работающие от батарейки.

На схеме умного дома Xiaomi протокол будет выглядеть так:

Ничего не понятно? Давайте попробуем разобраться.

У нас на схеме есть шлюз Gateway 2, он выполняет роль координатора. К нему, в приложении MiHome мы подключаем все остальные устройства. Как и в Wi-Fi и Bluetooth, только стрелочек тут заметно больше. Все это потому, что розетки и выключатели выполняют роль “Роутера”, они принимают сигнал от головного устройства и транслируют его дальше по сети до конечных датчиков. Это позволяет масштабировать сети до уровня дома или даже большого производственного здания. А выход из строя одного из устройств-роутеров не скажется на работоспособности всей сети.

Сравнительная таблица характеристик этих протоколов связи:

ТехнологияWi-FiBluetoothZigBee
Стандарт связиIEEE 802.11IEEE 802.15.4IEEE 802.15.4
Скорость передачи данных300+ Мбит/сдо 3 Мбит/с250 Кбит/с
ЭнергопотреблениеВысокоеНизкоеНизкое
Частотный диапазон2.4 Ггц2.4 Ггц2.4 Ггц
Поддержка IP+
Топология“звезда”“звезда”“mesh”

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

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

Значимость ZigBee в системе умного дома Xiaomi

На конец 2017 года, в системе Xiaomi 22 устройства, которые используют ZigBee протокол. Wi-Fi используют около 80, а блютуз около 25.

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

Если у вас появились вопросы, смело задавайте в комментариях.

Радиомодемы Xbee для сетей ZigBee — что это такое?

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

ZigBee и другие сети

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

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

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

Из чего состоит ZigBee сеть

ZigBee сеть состоит из различных комбинаций следующих элементов:

  • маршрутизаторов;
  • координаторов;
  • конечных устройств.

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

Радиомодемы, подключенные к соответствующему адаптеру, могут выполнять функции как маршрутизаторов, так и координаторов. Кроме того, ZigBee устройства могут использоваться не в составе организованной сети, а по принципу «каждый с каждым». Такое подключение снижает быстродействие сети, но повышает надежность.

Адаптер ZigBee сети с установленным радиомодемом

Еще одно назначение подобных сетей ­– максимальное энергосбережение. По сравнению с Wi-Fi, в рабочем режиме радиомодемы сетей ZigBee потребляют в десятки раз меньше электроэнергии, что очень важно для автономных устройств. Подключение к датчику движения Wi-Fi модема приведет к необходимости замены или зарядки аккумулятора один раз в 2–3 дня.

Подключение этого датчика к сети ZigBee позволит увеличить срок работы до замены аккумулятора до 5–10 дней. Такая разница в энергопотреблении возникает из-за различных скоростей передачи информации (до 250 кбит/c). Ведь чем выше скорость передачи, тем больше энергопотребление и ниже надежность. Кроме того, переход от спящего к рабочему состоянию для ZigBee устройств составляет десятки миллисекунд. В Bluetooth и Wi-Fi сетях время на такой переход исчисляется сотнями миллисекунд, а иногда и секундами.

Радиомодемы XBee

Изначально радиомодемы под маркой XBee производила компания Maxstream (первое поколение), затем их производством занялась фирма Digi International. В 2015­–2015 году их производством занялось еще несколько компаний. Продукция разных поколений несовместима между собой, потому что выпускалась под стандарты ZigBee, существующие на тот момент. Стандарты каждые 2–3 года менялись, поэтому производители также меняли и свои устройства. Однако эти изменения не касались технических характеристик, таких как мощность сигнала, энергопотребление и так далее.

Подключение радиомодема к адаптору

Вот технические характеристики радиомодемов XBee и XBee pro:

Технические характеристикиXBeeXBee pro
Ток, потребляемый в спящем режимеВидео — Arduino и Xbee

Передача данных в ZigBee-сети с помощью модулей XBee ZNet 2.5

Модули ZigBee XBee ZNet 2.5 (Series 2) (рис. 1) являются законченными узлами, способными самостоятельно подключаться к сети с MESH-топологией и передавать данные, поступающие от внешнего хост-процессора.

Рис. 1. Модули XBee ZNet 2.5 (Series 2)

Благодаря встроенному ZigBee-стеку все операции по формированию сети, присоединению новых устройств, прокладке оптимальных маршрутов сообщений осуществляются автоматически, без участия внешнего микроконтроллера. Для передачи данных существует ограниченный набор простых управляющих команд, которые могут выполняться даже на самом недорогом 8-разрядном внешнем микроконтроллере. Модули XBee ZNet 2.5 могут выступать и как абсолютно самостоятельные узлы. В этом случае источником или приемником информации выступают имеющиеся на модуле периферийные узлы — порты ввода-вывода, АЦП и ЦАП. При использовании модуля без внешнего микроконтроллера прием или передача данных будет происходить под управлением команд, поступающих по эфиру от координатора или любого другого узла сети.

Работа в API-режиме

Подача команды ATND в режиме API и ответ от конечного устройства

Модули XBee могут работать в режиме управления с помощью AT-команд или в API-режиме [2,3]. Для управления с помощью внешнего микроконтроллера режим API гораздо более удобен, так как позволяет передавать и данные, и команды управления в общем потоке. Кроме того, некоторые возможности в режиме AT-команд просто недоступны. Например, послать по ZigBee-сети AT-команду удаленному модулю можно только в API-режиме. Работа с API-пакетами требует вычисления контрольных сумм, что не очень удобно при ручном формировании пакета в окне программы X-CTU (рис. 2а, б), однако не представляет большой сложности при управлении XBee-модулем с помощью внешнего микроконтроллера. Для практических экспериментов с API-фреймами оказалось более удобным использовать программу-терминал «Terminal v1.9b» [4], которая позволяет заранее составить набор отсылаемых API-фреймов в виде макросов и отсылать их нажатием одной кнопки.

Рис. 2а. Подача команды ATIS в режиме API и ответ от конечного
устройства

Рис. 2б. Примеры работы в API-режиме в программе X-CTU

Например, чтобы обнаружить все узлы сети, нужно составить фрейм AT-команды «ND» и отослать его с любого модуля сети. Ниже приведены API-фреймы, полученные на выходе UART модуля XBee ZNet 2.5, с которого был отправлен запрос на обнаружение всех узлов сети. Всего было получено 4 ответа, Как видно из приведенных ответов, в сети было обнаружено 2 роутера и 2 конечных узла.

Таблица 1. API-фреймы, полученные на выходе UART модуля XBee ZNet 2.5

Расшифровка структуры фрейма (для первой строки Табл. 1)

Ниже, в таблице 2, приведены дополнительные примеры API-фреймов, полученные от различных узлов в ZigBee-сети в различных реальных ситуациях.

Таблица 2. Примеры API-фреймов

Различные блоки фрейма выделены цветом и типом шрифта. Приведенные примеры могут быть полезными при изучении раздела, посвященному разделу по работе с API-фреймами в оригинальном описании производителя [5] (русскоязычный перевод данного документа доступен по запросу на wireless@compel.ru).

Практическая часть — делаем беспроводной датчик температуры

Мы воспользуемся возможностью отсылки API-команды для удаленного измерения температуры c помощью ZigBee-модуля. Схема измерительного модуля очень проста (рис. 3).

Рис. 3. Принципиальная схема температурного датчика

Измерение температуры производится с помощью аналогового датчика LM19, преобразующего температуру в диапазоне от -55 до 130°С в выходное напряжение, измеряемое с помощью АЦП модуля XBee ZNet 2.5 (Series 2). В связи с тем, что диапазон выходного напряжения LM19 (0,303…2,485 В) превышает максимальное измеряемое напряжение АЦП модуля (1,2 В), в схеме применен делитель напряжения на резисторах, понижающий выходное напряжение LM19 в 2 раза. Ток потребления LM19 составляет менее 10 мкА, поэтому датчик позволяет существенно экономить энергию батарей при работе ZigBee-модуля в спящем режиме. Измерительный модуль работает от 2 батарей типа “AA”. Светодиод «HL1» отображает режим работы модуля: если он светится постоянно — модуль не присоединился к ZigBee-сети, если мигает 2 раза в секунду — произошло присоединение модуля к ZigBee-сети, редкие короткие вспышки — модуль находится в спящем режиме и периодически просыпается для запроса данных от родительского узла. В этом простом проекте применение встроенного АЦП и возможность удаленной отсылки команд позволило отказаться от применения внешнего микроконтроллера.

Для проверки работоспособности беспроводного датчика температуры развернем простейшую ZigBee-сеть на базе набора XB24-BPDK PBF. Во все XBee-модули, используемые в данном эксперименте (1 координатор и 1 роутер), должна быть загружена прошивка для работы в API-режиме. В качестве координатора и промежуточных роутеров могут использоваться модули, установленные на переходные платы, входящие в отладочный набор. Единственным нестандартным узлом будет наш датчик температуры, собранный на отдельной печатной плате (рис. 4).

Рис. 4. Температурный датчик на базе модуля XBee

Конечно, можно припаять термодатчик и 2 резистора делителя непосредственно к переходной плате из отладочного набора XB24-BPDK PBF. Однако это не рекомендуется делать по нескольким причинам. Во-первых, «лишние» элементы на переходной плате (драйвер RS-232, стабилизатор и пр.) не позволяют существенно снизить ток потребления от батареи в спящем режиме. Во-вторых, диапазон рабочих температур переходной платы производителем не нормируется и поэтому неясно, будет ли она нормально работать при температуре -40°С (предельная рабочая температура для модулей XBee ZNet 2.5).

До начала эксперимента необходимо сделать следующие настройки для XBee-модуля, который будет работать с нашим температурным датчиком:

1. Задать текстовое имя нашему удаленному модулю, например 12345 (команда NI).

2. Разрешить работу АЦП на выводе AD1 (команда D1=2).

Эти настройки удобно сделать с помощью закладки установок параметров в программе X-CTU.

В нашем тестовом проекте мы с помощью координатора, подключенного к ПК, будем отправлять запросы и получать пакеты, содержащие информацию о температуре удаленного узла. Для простейшего эксперимента лучше ограничиться сетью из 2 узлов — только координатора и нашего температурного датчика (работающего постоянно, т.е. не в спящем режиме). Удаленный модуль должен включаться после того, как координатор успешно стартовал (красный светодиод мигает один раз в секунду). При включении наш модуль с температурным датчиком самостоятельно подключится к координатору, на UART-выходе которого мы получим API-фрейм идентификации подключенного узла (рис. 5).

Рис. 5. API-фрейм с параметрами присоединенного узла сети

Данный фрейм мы также будем получать на выходе координатора при нажатии кнопки «Идентификация» на нашем температурном датчике.

Для отправки запроса на удаленное считывание значения АЦП (температуры), нам необходимо знать 64-разрядный уникальный и 16-разрядный сетевой адрес нашего удаленного узла. Эти значения можно взять из полученного сообщения о присоединении (00 13 A2 00 40 0A 0F 47 и 22 62 соответственно). Теперь мы можем сформировать API-пакет на удаленное считывание АЦП. Контрольную сумму для отправляемых пакетов в данном случае мы рассчитываем вручную. После отправки пакета мы получим ответный API-фрейм, содержащий значение напряжения АЦП, которое можно пересчитать в температуру (рис. 6).

Рис. 6. Ответный API-фрейм

Для преобразования аналого-цифровых данных в милливольты, используйте следующий алгоритм:

AD (мВ) = (значение ADIO/0x3FF)*1200 мВ [5]

Из полученного пакета мы видим, что значение АЦП = 02 8F (предпоследние 2 байта в API-фрейме), что в абсолютном исчислении составляет 0,768 В. С учетом делителя, напряжение на выходе LM19 было 0,891 х 2 = 1,536 В, что соответствует температуре 24,5°C. Формулы для пересчета выходного напряжения в значения температуры можно найти в документации на LM19.

По мере освоения API-команд можно добавлять в сеть новые узлы и тестировать передачу данных с ретрансляцией пакетов. Для минимизации энергопотребления модуль можно перевести в спящий режим (SM=4) с периодическим пробуждением по встроенному таймеру, например каждые 3 секунды (SP=0x12С, ST=0x1F4). В этом случае модуль будет периодически просыпаться, отсылая запрос «родительскому» узлу на проверку наличия информации для себя. При этом рекомендуется задать с некоторым запасом время хранения сообщений на родительском узле, например SP=0x2BC (7 секунд).

Пропускная способность и задержки

Разработка конечного устройства, которое будет использовать MESH-сеть для передачи данных, требует повышенного внимания разработчика на этапе определения параметров будущей сети. Например, одно из частых заблуждений относительно свойств ZigBee-сети — это завышенные представления о скорости передачи данных между узлами сети. Несмотря на относительно высокую фиксированную скорость передачи данных в радиоканале, равную 250 кБит/сек, реальная скорость может быть меньше на порядок! Для объяснения этого факта необходимо понимать логику сетевого взаимодействия узлов сети и не забывать про задержки на подтверждение пакетов. Кроме того, обработка данных на нижних уровнях стека также занимает определенное время. Производители с неохотой отвечают (если вообще отвечают) на вопросы о реальной скорости передачи данных в ZigBee-сети и возникающие задержки (latency). Обычный ответ сводится к туманной фразе что «эти параметры зависят от топологии сети и могут существенно варьироваться в зависимости от текущего уровня помех и напряженности трафика». Как бы нам нравился или не нравился подобный ответ, он отражает реальное положение дел — можно только грубо оценивать реальные параметры скорости передачи данных и возникающие задержки.

Исходя из практического опыта работы с модулями Digi (MaxStream) (рис. 1), можно говорить о средней скорости передачи данных порядка 4-5 кБайт/сек на уровне 802.15.4 (связь точка-точка, модули XBee 802.15.4 (Series 1), передача файла »100 кБайт, скорость UART 115200).

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

1. Допустим, что расстояние от координатора-отправителя до удаленного узла — 8 хопов (ретрансляций).

2. Время передачи пакета между двумя узлами (одна попытка) »30 мcек (точное значение зависит от конкретной программной реализации ZigBee-стека, MAC-уровня и микросхемы трансивера).

3. Число ретрансляций на уровне 802.15.4 — 3 (типовая фиксированная величина).

Таким образом, максимальное время передачи сообщения от одного узла к другому составляет »90 мc (30 мc х 3 попытки), столько же потребуется для передачи подтверждения (уровня приложения). В маршруте с 8 ретрансляциями максимальная задержка составит 8 x 90 x 2 = 1,44 секунд на одну попытку отправки сообщения. Разумеется, если мы отправили данные и не получили ответ, то можно попытаться повторить отправку, скажем 3 раза. Тогда наше приложение будет делать вывод о недоступности узла получателя (нет связи) только через примерно 5 секунд. Сама по себе эта цифра не большая и не малая — все зависит от того приложения, которое использует MESH-сеть для передачи данных. Для системы АСКУЭ, где пакеты данных передаются один раз в час, задержка в 5 секунд не является критической. В то же время, такая задержка будет совершенно неприемлемой, если нужно синхронно управлять комплексом светофоров на крупной транспортной развязке. Именно задержки при ретрансляции пакета являются главным ограничителем при построении «вытянутых» ZigBee-сетей. При количестве ретрансляций равном 100 максимальное время ожидания реакции удаленного узла будет достигать одной минуты! По-видимому, именно из этих соображений даже в самой последней спецификации ZigBee-Pro максимальная глубина ZigBee-сети ограничена 30 ретрансляциями. В модулях XBee ZNet 2.5 максимальное время ожидания ответов для команд ND (поиск узлов) и DN (прокладка маршрута) не может превышать 25 секунд (параметр NT). При использовании модулей XBee ZNet 2.5 глубина сети (число хопов) формально не ограничена, однако число ретрансляций при рассылке широковещательных сообщений не может быть более 15. Это означает, что конкретный узел просто не сможет обнаружить другие узлы, расположенные на расстоянии более 15 хопов от него.

Заключение

Практическое построение беспроводной сети на базе модулей XBee ZNet 2.5 не требует глубоких знаний ZigBee-спецификации и может быть выполнено в сжатые сроки разработчиком средней квалификации. Однако при разработке ZigBee-сетей с MESH-топологией необходимо понимать процедуры сетевого взаимодействия и учитывать реальную скорость передачи данных и возникающие задержки.

Список литературы

  1. О. Пушкарев. Системы беспроводной передачи данных компании MaxStream, Новости Электроники, №2, 2006
  2. О. Пушкарев. ZigBee-модули Maxstream — новые возможности, Новости Электроники, №2, 2007
  3. О. Пушкарев. ZigBee-модули XBee Series 2 с поддержкой Mesh-топологии, Новости Электроники, №16, 2007
  4. http://www.mikrocontroller.net/attachment/24594/term20041226.zip
  5. Product Manual v1.x.2x — ZigBee Protocol

Беспроводные сети ZigBee. Часть 1 [Вводная]

Введение

Сейчас о концепции 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 Ом. Два щупа осциллографа были подключены до и после резистора. После чего с помощью функции вычитания на осциллографе фиксировалось падения напряжения на резисторе. После этого, используя закон Ома , можно вычислить ток потребления. Кроме того, так как время в активном режиме фиксируется, можно найти заряд, а уж потом и затрачиваемую мощность в Джоулях.

Цикл передачи занимает 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]. И для некоторых типов систем (системы домашней автоматизации, системы сбора показаний со счетчиков и др.) разработаны специальные профили, в которые входит целый набор стандартных устройств. Они позволяют беспроводным узлам различных производителей понимать друг друга на уровне приложения. Стандартный профиль описывает стандартные команды и поведения конкретного устройства, например, блока управления системой климат-контроля или блока управления светильником.

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

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

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

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

Радиомодуль

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

КомандаОписание
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

Список статей

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

Читайте также:  Как выбрать аккумуляторный шуруповерт выбираем качественный инструмент
Ссылка на основную публикацию