Xbee модуль что это
Настройка пары модулей XBee Series 2 для коммуникации друг с другом
Большая часть материалов в сети о коммуникации между модулями XBee относится к их первому поколению: «Series 1» или просто «S1». Но они всё сильнее вытесняются новой, более совершенной линейкой второго поколения «Series 2» или просто «S2».
При попытке сконфигурировать S2 точно так же, как и S1, ошибка возникает при попытке установить параметр MY. Так например, команда ATMY=1111 вернёт ошибку. В модулях второго поколения этот параметр стал доступным только для чтения.
Разные поколения можно отличить по маркировке. Компания-производитель XBee была переименована из MaxStream в Digi. Если на модуле используется название MaxStream — это XBee Series 1. Если же используется название Digi, на модуле сразу указано поколение:
Также определить поколение можно по серийному номеру на обратной стороне. Если первая буква после XB24- (или XB24P- для мощной pro-версии) — это «A», вы держите в руках XBee Series 1, в противном случае — XBee Series 2.
В этой статье описывается процесс настройки двух модулей XBee S2 для коммуникации друг с другом. Один будет установлен на Arduino Uno и периодически отправлять время, прошедшее с момента старта платформы; другой будет установлен на XBee-USB адаптер соединённый с компьютером и принимать значения.
Подключение модуля XBee к Arduino Uno
В данной статье мы рассмотрим подключение модуля XBee к плате Arduino Uno. Модуль XBee, подключенный к плате Arduino, будет работать в качестве приемника и будет взаимодействовать с другим модулем XBee, подключенным к компьютеру с помощью USB адаптера XBee (Explorer Board).
Что такое XBee
XBee – это радиомодемы для сетей ZigBee, предназначенных для максимально защищенной передачи данных, с минимальным уровнем электропотребления и невысокой скоростью. Эти устройства применяют в различных системах автоматики и также весьма востребованы в технологиях «умного дома», поскольку позволяют не только управлять удаленными устройствами, но и организовывать целые сети, регулирующие работу множества устройств.
В отличие от Wi-Fi, Bluetooth и проводных сетей, предназначенных для передачи больших объемов информации и полностью отсутствующим шифрованием, сети ZigBee обеспечивают в десятки раз большую надежность.
В сетях ZigBee поддерживается достаточно мощное шифрование и они могут работать по технологии так называемых Mesh-сетей, в частности, прокладывать резервные маршруты передачи информации при выходе из строя действующего маршрута, что обеспечивает этим сетям высочайший уровень надежности.
ZigBee сеть может состоять из различных комбинаций следующих элементов: маршрутизаторов, координаторов, оконечных устройств.
Координатор выполняет функции управляющего центра, определяет настройки работы и безопасности, подключает и отсоединяет оконечные устройства. Маршрутизатор определяет порядок связи между устройствами (маршрут), устраняет повреждения сети, создавая новые направления, управляет работой оконечных устройств.
В качестве оконечных устройств могут использоваться компьютеры, отдельные датчики или исполнительные механизмы, а также целые автоматизированные системы. Радиомодемы, подключенные к соответствующему адаптеру, могут выполнять функции как маршрутизаторов, так и координаторов.
Изначально радиомодемы под маркой XBee производила компания Maxstream (первое поколение), затем их производством занялась фирма Digi International. В 2015-2015 годах их производством занялось еще несколько компаний. Продукция разных поколений несовместима между собой, потому что выпускалась под стандарты ZigBee, существующие на тот момент. Стандарты каждые 2-3 года менялись, поэтому производители также меняли и свои устройства. Однако эти изменения не касались технических характеристик, таких как мощность сигнала, энергопотребление и т. д.
Необходимые компоненты
Внешний вид используемых компонентов для нашего проекта представлен на следующем рисунке.
Конфигурирование модулей XBee с помощью программного обеспечения XCTU
Поскольку модули XBee могут работать в качестве маршрутизаторов, координаторов и оконечных устройств, то перед началом работы с ними нам необходимо настроить режим их работы. Сделать это можно с помощью программного обеспечения XCTU.
Для подключения XBee модулей к компьютеру можно использовать различные типы USB адаптеров XBee (в англоязычных источниках их называют Xbee explorer board).
Если у вас нет под рукой USB адаптера XBee, то в качестве “переходного устройства” между компьютером и модулем XBee может быть использована плата Arduino. Просто загрузите приведенный далее скетч в плату Arduino и после этого вы сможете использовать ее в качестве USB адаптера (конвертера) XBee.
Схема подключения модуля XBee (ZigBee) к плате Arduino для передающей части нашего проекта показана на следующем рисунке.
В схеме необходимо сделать следующие соединения:
В этой статье мы будем использовать Explorer board (USB адаптер XBee) для конфигурирования модулей XBee.
Вначале скачайте программное обеспечение XCTU и установите его на свой компьютер. После этого запустите его и удостоверьтесь в том, что модуль XBee корректно подключен. Проверьте COM порт платы Arduino в диспетчере устройств.
Затем выполните следующую последовательность шагов.
Шаг 1. В программном обеспечении XCTU нажмите на кнопку поиска (search button). В результате вы увидите все радиочастотные устройства, подключенные к вашему компьютеру. В нашем случае мы увидим только один модуль XBee.
Шаг 2. Выберите последовательный порт Explorer board/платы Arduino и нажмите на Next (следующий).
Шаг 3. В следующем открывшемся окне установите параметры последовательного USB порта как показано на рисунке ниже и нажмите на Finish (закончить).
Шаг 4. Выберите найденное радиочастотное устройство (подключенное к вашему компьютеру) и нажмите на Add selected device (добавить выбранное устройство). При этом модуль XBee будет добавлен на приборную доску XCTU.
Шаг 5. После этого вы сможете конфигурировать ваш модуль XBee. Для этого можно использовать AT команды или вводить данные вручную. На представленном ниже рисунке вы можете видеть на картинке модуля XBee пиктограмму с символом “R” – это обозначает, что модуль XBee будет работать в режиме маршрутизатора (router mode). Для передающей части нашей схемы нам переходимо перевести его в режим координатора.
После этого необходимо обновить прошивку модуля при помощи нажатия на кнопку Update.
Шаг 6. Выберите имя продукта вашего модуля XBee, которое указано на его обратной стороне. Выберите function set (набор функций) и firmware version (версию прошивки) как показано на следующем рисунке и нажмите Update.
Шаг 7. После этого вам необходимо указать данные ID, MY и DL чтобы получить возможность установления с другими модулями XBee. ID будет одинаковый для обоих используемых нами модулей. Необходимо будет только изменить данные MY и DL. MY для приемного модуля XBee будет DL для передающего модуля XBee (координатора), а DL приемного модуля будет MY для передающего модуля. Для передающего модуля выберите в настройке CE функцию Coordinator и после этого нажмите кнопку Write (записать).
ATDL | ATMY | ATID | |
XBee 1 coordinator (координатор) | 1234 | 5678 | 2244 |
XBee 2 end device (оконечное устройство) | 5678 | 1234 | 2244 |
Шаг 8. После записи этих данных в передающий модуль отключите его и подключите к USB адаптеру приемный модуль XBee. Запишите в него соответствующие данные DL, MY и CE (в выпадающем меню для CE не забудьте выбрать End device – оконечное устрйоство).
Шаг 9. Теперь наши модули XBee готовы к подключению к плате Arduino. Мы будем подключать передающий модуль XBee к компьютеру, а приемный модуль XBee – к плате Arduino. После этого с компьютера можно будет передавать команды на приемную часть.
Схема подключения модуля XBee (ZigBee) к плате Arduino для приемной части нашего проекта показана на следующем рисунке.
В схеме необходимо сделать следующие соединения:
Если для передающей части проекта вы используете плату Arduino (вместо USB адаптера Xbee) для подключения модуля Xbee к компьютеру, то соединения будут такие же как и для программирования модуля Xbee.
Программирование платы Arduino для работы с модулем Xbee
Мы напишем программу для приемной части нашего проекта (с платой Arduino), которая будет включать светодиод при получении символа ‘a’. При получении символа ‘b’ программа будет включать мигание светодиода, при приеме других символов светодиод будет находиться в выключенном состоянии.
Код программы достаточно простой. В нем мы будем проверять поступающие символы с помощью функции Serial.available() и сохранять их значение в переменной с помощью функции Serial.read(). Далее значение этих символов будет сравниваться с символами ‘a’ и ‘b’. Если результат сравнения будет успешным будет выполняться соответствующая команда. Этот код программы для приемной части нашего проекта приведен ниже в статье. Загрузите его в плату Arduino. Перед загрузкой программы в плату Arduino отключите ее контакты Tx и Rx от модуля XBee.
После того как аппаратная часть проекта будет готова, а программа будет загружена в плату Arduino, вы можете приступать к тестированию работы проекта. Для передачи команд с помощью передающей части мы будем использовать консоль команд программного обеспечения XCTU. Для этого нажмите на Console icon (иконку консоли) в программе, которая находится рядом с настройками. Затем нажмите кнопку Open (открыть) чтобы подключить модуль XBee к компьютеру.
Введите ‘a’ в консоли команд – после этого вы увидите как светодиод зажгется на 2 секунды. Если вы введете ‘b’ в консоли команд, то светодиод мигнет 5 раз. Более подробно эти процессы вы можете посмотреть в видео, приведенном в конце статьи.
Вы также можете использовать плату Arduino и в передающей части проекта – для этого будет необходимо немного изменить код приведенной программы (она для приемной части проекта): вместо функции Serial.read() используйте функцию Serial.println() для передачи символов.
На основе платы Arduino и модулей Xbee можно создать множество полезных приложений, например, системы автоматизации дома, комнаты для чата и т.п.
Радиомодемы Xbee для сетей ZigBee — что это такое?
XBee – это радиомодемы для сетей ZigBee, предназначенных для максимально защищенной передачи данных, с минимальным уровнем электропотребления и невысокой скоростью. Эти устройства применяют в различных системах автоматики, что очень востребовано в «умном доме», ведь позволяет не только управлять удаленными устройствами, но и организовывать целые сети, регулирующие работу множества устройств.
ZigBee и другие сети
В отличие от Wi-Fi, Bluetooth и проводных сетей, предназначенных для передачи больших объемов информации и полностью отсутствующим шифрованием, сети ZigBee обеспечивают в десятки раз большую надежность.
Если, по каким-то причинам, будет нарушена связь между исполнительным устройством и блоком управления, то сеть обеспечит двухстороннюю передачу сигналов через другие устройства. Благодаря такой архитектуре, сети 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:
Технические характеристики | XBee | XBee pro |
Ток, потребляемый в спящем режиме | Видео — Arduino и XbeeZigBee-модули XBee: новые возможностиСетевой протокол DigiMeshСетевой протокол DigiMesh был выпущен компанией Digi осенью 2008 года в виде прошивок (firmware) для модулей XBee 802.15.4, построенных на базе радиочастотной микросхемы Freescale MC13213. Уникальной особенностью протокола DigiMesh является возможность построения сети со спящими ретрансляторами (роутерами). В сети DigiMesh нет координатора с выделенной ролью — каждый из узлов сети может взять его функции на себя. Прокладка и восстановление маршрутов в данной сети осуществляется автоматически. Подобное построение гарантирует прохождение информации при выходе из строя любого узла, так как в сети DigiMesh нет «слабого звена», отказ которого мог бы привести к полной неработоспособности системы. Структурная схема сети DigiMesh приведена на рис. 2. Преимущества сети DigiMesh по сравнению с ZigBee заключаются в наличии спящих роутеров (в ZigBee спящий режим возможен только для конечных устройств), более простом процессе запуска и большей гибкости при расширении сети. Кроме того, реализация протокола DigiMesh требует меньших ресурсов памяти микроконтроллера. Возможность перевода роутеров в режим сна обусловлена реализованным механизмом временной синхронизации всех узлов сети. В качестве маяка выступает координатор — один из узлов сети, назначенный разработчиком. Если он выходит из строя, его функции начинает выполнять любой другой узел сети. Протоколом предусмотрены специальные механизмы «Номинирования» (Nomination) и «Выборов» (Election), которые позволяют разрешать коллизии, если сразу несколько узлов сети пытаются взять на себя функции координатора. С помощью команд конфигурирования можно определить узлы, которые будут иметь преимущества при «выборах» координатора. Подключение новых узлов к сети выполняется следующим образом — необходимо включить новый узел и поместить его в зоне действия сети. После первого включения новый узел будет постоянно включен на прием, ожидая синхронизирующего пакета координатора. В полученном широковещательном пакете синхронизации содержится информация о временных параметрах сети — временах сна и бодрствования, что позволяет новому узлу перейти в режим сна до следующего сеанса синхронного обмена информацией с другими узлами сети. Стек протоколов ZigBee-ProКомпания Digi выпустила новое программное обеспечение на базе стека протоколов EmberZNet PRO 3.1. Новое программное обеспечение позволяет строить беспроводные сети, отвечающие требованиям спецификации ZigBee-2007 (ZigBee-Pro). Новое ПО (ZB firmware) можно скачать с сайта Digi и загрузить с помощью бесплатной программы X-CTU в модули XBee ZNet 2.5 (XBee Series 2). В зависимости от функционального назначения узла и типа управления необходимо выбирать соответствующую версию прошивки (таблица). Особенности ПО ZB версии 2×20: Тем, кто разрабатывает приложения на базе стека протоколов ZNet 2.5, нет необходимости в обязательном порядке обновлять программное обеспечение. Компания Digi продолжает выпуск модулей XBee ZNet 2.5, основанных на ПО EmberZNet 2.5. Следует учитывать, что модули XBee с новой прошивкой (ZB) будут не совместимыми с модулями XBee ZNet 2.5. Новая прошивка позволяет создавать ZigBee-устройства, которые могут взаимодействовать с ZigBee-узлами любых других производителей, если последние отвечают версии спецификации ZigBee-Pro. Управление модулем в режиме APIДля управления модулем XBee и передачи данных предусмотрено два режима взаимодействия: с помощью AT-команд (прозрачный режим) или с помощью структурированных пакетов (API-режим). В некоторых случаях XBee-модули могут работать как абсолютно самостоятельные узлы, без применения внешнего управляющего устройства. Например, модуль может самостоятельно, в автоматическом режиме передавать по радиоканалу состояние входных цифровых портов и отсчеты встроенного АЦП. Управлять модулем, который работает без внешнего микроконтроллера, можно с помощью команд, передаваемых по эфиру любым другим узлом сети. Режим AT-команд очень прост для понимания и оптимален при передаче непрерывных потоков данных в сетях с простой топологией. Недостатком AT-команд является медленный переход из прозрачного режима передачи данных в режим приема модулем команд управления. Режим API гораздо более гибок, особенно при управлении с помощью внешнего микроконтроллера, так как позволяет передавать и данные, и команды управления в общем потоке. Кроме того, некоторые возможности в режиме AT-команд просто недоступны. Например, послать по ZigBee-сети AT-команду удаленному модулю можно только в API-режиме. Работа с API-пакетами требует вычисления контрольных сумм, что не очень удобно при ручном формировании пакета в окне программы X-CTU (рис. 3), однако не представляет большой сложности при управлении XBee-модулем с помощью внешнего микроконтроллера. В качестве практического примера рассмотрим подачу обычной AT-команды ND в API-режиме. Эта команда позволяет обнаружить все узлы в сети. Команду ND можно подавать не только с координатора, но и с любого другого узла сети. При подаче этой команды узел отсылает широковещательное сообщение, которое транслируется другими узлами сети. В теории, данное широковещательное сообщение должно достигнуть всех узлов сети. При получении сообщения узел отправляет информацию о себе — свой сетевой и 64-битный адрес, тип устройства (координатор, роутер или конечное устройство), имя устройства в виде текстовой строки (если задано) и некоторые другие свои параметры. Для того чтобы ответные сообщения не мешали друг другу, каждый обнаруженный узел делает случайную задержку перед отсылкой ответа. Поэтому при каждой отсылке команды ND ответы от обнаруженных узлов будут поступать в разном порядке. Максимальное время задержки на ответ узла по умолчанию составляет 6 с. Ниже приведены API-фреймы, полученные на выходе UART модуля XBee ZNet 2.5, с которого был отправлен запрос на обнаружение всех узлов в сети. Всего было получено четыре ответа. Как видно из приведенных ответов, в сети было обнаружено два роутера и два конечных узла. Разберем подробнее отсылаемую АТ-команду ND и полученные ответы от узлов сети: 1.Отсылаемый API-фрейм «AT-команда ND» (данная последовательность байт подается через UART на XBee-модуль): Расшифровка структуры подаваемого API-фрейма: 2.Полученные ответы (данная последовательность байт выдается на выход UART XBee-модуля) *Расшифровка структуры фрейма ответа (для первой строки) Беспроводной датчик температурыВ качестве примера работы модуля XBee без использования встроенного микроконтроллера рассмотрим вариант построения беспроводного датчика температуры. Для удаленного измерения температуры воспользуемся возможностью удаленной отсылки API-команды по эфиру. Схема измерительного модуля довольно проста и приведена на рис. 4. В качестве измерителя температуры использован аналоговый интегральный датчик LM19. Микросхема LM19 преобразует температуру в диапазоне от –55 до +130 °С в выходное напряжение, которое можно измерить с помощью встроенного в модуль XBee АЦП. В связи с тем, что диапазон выходного напряжения LM19 (0,303–2,485 В) превышает максимальное измеряемое напряжение АЦП модуля (1,2 В), в схеме применен делитель напряжения на резисторах, понижающий выходное напряжение LM19 в 2 раза. Рассматриваемый беспроводной датчик (рис. 5) температуры работает от двух батарей типа «AA». Светодиод HL1 индицирует режим работы модуля: светится постоянно — модуль не присоединился к ZigBee-сети, мигает два раза в секунду — произошло присоединение модуля к ZigBee-сети. Для проверки работоспособности беспроводного датчика температуры развернем простейшую ZigBee-сеть из двух узлов — координатора и беспроводного датчика. В качестве координатора будем использовать XBee-модуль, установленный на переходную плату из комплекта отладочного набора XB24-BPDK и подключенный к ПК с помощью кабеля USB или RS-232. До начала эксперимента необходимо сделать следующие настройки для XBee-модулей с помощью закладки установок параметров в программе X-CTU: В тестовом проекте будем с помощью координатора, подключенного к ПК, отправлять запросы и получать пакеты, содержащие информацию о температуре удаленного узла. Для простейшего эксперимента сначала ограничимся простейшей сетью из 2 узлов — только координатор и температурный датчик. Датчик температуры будет работать постоянно, то есть без использования спящего режима. После включения XBee-модулей произойдет автоматическое подключение температурного датчика к координатору. При этом на выходе UART координатора через закладку Terminal программы XCTU можно наблюдать API-фрейм идентификации с информацией о параметрах подсоединенного узла (рис. 7). Данный фрейм мы также будем получать на выходе координатора при нажатии кнопки «Идентификация» на температурном датчике. Для отправки запроса на удаленное считывание значения АЦП (температуры) необходимо знать 64-разрядный уникальный и 16-разрядный сетевой адрес удаленного узла. Эти значения можно взять из полученного сообщения о присоединении (00 13 A2 00 40 0A 0F 47 и 22 62 соответственно). Теперь можно сформировать API-фрейм на удаленное считывание АЦП. Контрольную сумму для отправляемых пакетов в данном случае рассчитываем вручную. После отправки пакета мы получим ответный API-фрейм (рис. 6), содержащий значение напряжения АЦП, которое можно пересчитать в температуру. Для преобразования аналого-цифровых данных в милливольты используйте следующий алгоритм: Из полученного пакета видим, что значение АЦП = 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 с). ЗаключениеПредлагаемые компанией Digi различные сетевые протоколы позволяют строить беспроводные сети, оптимизированные под конкретные требования пользовательского приложения. Благодаря упрощенному интерфейсу управления, практическое построение беспроводной сети на базе модулей XBee не требует глубоких знаний ZigBee-спецификации и может быть выполнено в сжатые сроки разработчиком средней квалификации.
|