Тестируем новые возможности модулей MBee c ПО SerialStar
Новости в области маломощных беспроводных сетей
14.04.2017
Тестируем новые возможности модулей MBee c ПО SerialStarВ 3-м номере журнала "Новости Электроники" вышла новая статья о модулях MBee-868: "Тестируем новые возможности модулей MBee c ПО SerialStar".Денис Бушунов (СМК), Николай Неудобнов (СМК) Радиомодули MBee производства российской компании «Системы, Модули и Компоненты» (СМК), работающие в диапазонах 868 МГц и 2,4 ГГц, позволяют организовать беспроводную передачу данных топологии «точка-точка» на расстояние до нескольких километров либо, например, построить сеть, сбора данных со счетчиков энергии в многоквартирном доме. Новое бесплатное программное обеспечение SerialStar существенно расширяет возможности радиомодулей по созданию беспроводных систем с топологиями «точка-точка» и «звезда». Новое программное обеспечение SerialStar (далее – прошивка, firmware) предназначено для простого управления модулем MBee (рисунок 1) с помощью AT-команд, API-фреймов либо для автономной работы модуля без использования внешнего управляющего микроконтроллера. В прошивке реализованы сетевые топологии «точка-точка» и «звезда». При этом как для центрального узла, так и для конечных точек используется один и тот же файл Firmware. Модули MBee с прошивкой SerialStar готовы к работе прямо «из коробки» – после подачи питания все данные, поступающие на UART одного модуля, будут отправляться по эфиру на выход UART другого модуля в прозрачном режиме без какой-либо дополнительной настройки. Полное управление процессом приема и отправки пакетов производится с помощью простых текстовых AT-команд. Для продвинутых разработчиков рекомендуется пакетный режим управления модулем с помощью API-фреймов, который позволяет изменять параметры в процессе работы и иметь больше информации при приеме эфирных пакетов. В этом смысле новая прошивка похожа на встроенное ПО радиомодулей XBee производства компании Digi – теперь модулем MBee управлять так же просто, как и популярными XBee-модулями. Модули MBee работают в диапазоне 868 МГц, что позволяет обеспечить дальность связи до нескольких десятков километров.
Рис. 1. Модули MBee-868-2.0 При первом включении модули MBee с прошивкой SerialStar полностью готовы к работе в режиме прозрачного удлинителя UART, однако возможности модуля намного шире. Благодаря гибкой настройке параметров можно организовать уникальную адресацию каждого модуля, установить любой частотный канал, управлять выходной мощностью, скоростью передачи данных в радиоканале и параметрами UART. Разработчик имеет доступ ко всем линиям модуля, кроме GPIO. Возможно также использовать АЦП и ШИМ. Доступ к портам ввода-вывода можно осуществлять и по эфиру, отправляя команды на удаленный модуль по его индивидуальному адресу. Более того, благодаря специальному режиму «Отображение портов» можно организовать автономную (без внешнего микроконтроллера) работу двух или более модулей, когда, например, состояние линии входа на модуле-источнике («0» или «1») автоматически повторяется на цифровом выходе модуля-приемника. Связать между собой можно не только порты входа-выхода, но и линии АЦП и ШИМ. Введенные один раз на этапе настройки параметры сохраняются в энергонезависимой памяти и далее автоматически применяются при последующих включениях модуля. В отличие от прошивок Serial Extender RS-485 и Sensor Network [5], новое ПО SerialStar не делит модули на роли «ведущий» и «ведомый» (Master и Slave), поэтому каждый модуль прошивается одним и тем же бинарным файлом Firmware. Технические параметры модулей MBee-868-x.x c ПО SerialStarОсновные технические параметры модулей MBee-868-x.x остаются неизменными вне зависимости от загружаемой прошивки, поэтому подробно с ними можно ознакомиться в технической документации на модуль [6] или статье [7]. В таблице 1 приведены лишь те технические характеристики, которые связанны именно с диапазоном настроек параметров в прошивке SerialStar [8]. Таблица 1. Технические параметры модулей MBee-868-x.x c ПО SerialStar
Типовая схема включения модуля приведена на рисунке 2. Прошивка SerialStar позволяет задействовать практически все выводы модуля. Причем имеется возможность гибкой конфигурации выводов. Любой интерфейс, – GPIO, UART, ADC, PWM, – может быть перенаправлен на тот или иной физический вывод модуля. Режим работы того или иного вывода задается с помощью соответствующей AT-команды. Например, разработчик может назначить на физический вывод 29 функцию «Цифровой выход в состоянии 1»,, или «Вход АЦП», или «Выход PWM», или какой-либо другой из таблицы 2. По умолчанию большинство интерфейсных пинов модуля находится в состоянии «отключено» (таблица 3).
Рис. 2. Типовая схема включения модуля Таблица 2. Диапазон настроек функций для пинов модуля
Таблица 3. Настройка выводов модуля по умолчанию
Диапазон рабочих напряжений модуля составляет 2,4…3,6 В. Режимы работы модулей MBee-868-x.x c ПО SerialStarМодуль может находиться в одном из нескольких режимов:
Адресация модулей и формат API-фреймовДля того чтобы два модуля, работающих в режиме «точка-точка», не реагировали на сторонние пакеты, а также для объединения модулей в сеть, в прошивке SerialStar реализована мощная система адресации модулей. Каждый модуль имеет три типа адреса: ID сети (1 байт), ID системы (2 байта) и ID модема (2 байта), что в сумме дает практически бесконечную адресную емкость. Параметр ID сети позволяет логически развести несколько радиосетей, работающих на одном и том же частотном канале. Сигналы соседствующих сетей, разумеется, будут мешать друг другу, однако модули будут отфильтровывать чужие пакеты по параметру «ID сети» уже на уровне радиоядра. Адрес ID системы позволяет организовать несколько подсетей в пределах одной географической зоны. Оба адреса – ID сети и ID системы – задаются одной AT-командой ATID с параметром длиной 3 байта. Индивидуальная адресация модуля в пределах подсети осуществляется с помощью адреса ID модема. Специальное значение ID модема, равное 0xFFFF, используется для широковещательной (одновременной) рассылки всем модулям в пределах одной сети и подсети. Индивидуальный адрес модуля задается с помощью AT-команды ATMY. Все три типа адреса выбираются произвольно разработчиком системы. Для отправки данных на другой модуль в модуле-источнике требуется установить адрес модуля-получателя с помощью команды AT TX. При управлении модулем с помощью API-фреймов можно не задавать адрес получателя отдельной AT-командой, а включать этот адрес вместе с отправляемыми данными в единый структурированный набор байтов, отправляемых по UART. В этом случае можно отправлять пакеты разным получателям без необходимости использования отдельных АТ-команд о смене адресов. По умолчанию адресация установлена таким образом, что все модули с заводскими настройками будут пересылать данные друг другу без какой-либо дополнительной настройки. Наиболее гибкое управление радиомодулем производится при использовании API-фреймов. API-фрейм – это определенный формат посылаемых по UART данных. Предусмотрено несколько типов API-фреймов, позволяющих выполнять AT-команды на локальном модуле и отправлять данные или AT-команды на удаленный модуль по эфиру. Все типы API-фреймов приведены в таблице 4. В зависимости от фактической версии прошивки в модуле могут не работать некоторые типы API-фреймов. Также по мере совершенствования прошивки SerialStar могут добавляться новые фреймы, реализующие тот или иной полезный функционал. Таблица 4. Типы API-фреймов
Структура API-фрейма «Прием эфирных данных для UART» типа 0x81 представлена в таблице 5. С помощью данного фрейма модуль выводит принятый по эфиру стандартный пакет данных для UART. Модули могут обмениваться радиопакетами вне зависимости от текущего режима работы – прозрачного режима или режима API-фреймов. Если модуль-приемник на момент приема находился бы в прозрачном режиме, то на выходе UART мы бы увидели только данные «Data», которые расположены в синем поле API-фрейма (таблица 5). При этом информация об адресе модуля-отправителя была бы недоступна. Преимущество API-режима в данном случае заключается в наличии дополнительной информации «здесь и сейчас». Таблица 5. Структура API-фрейма 0x90 «Прием эфирных данных для UART»
Следует учитывать, что не все возможности модулей в режиме API-фреймов можно реализовать с помощью AT-команд в прозрачном режиме. В таблице 6 приведен формат API-фрейма 0x17, с помощью которого происходит отправка AT-команды на удаленный модуль (по эфиру). Таблица 6. Структура API-фрейма 0x17 «Отправка AT-команды удаленному модулю»
При написании программы обработки API-фреймов на стороне управляющего микроконтроллера программист должен предусмотреть обработку ситуации, когда в потоке данных от модуля присутствуют фреймы с неизвестным значением в поле «Тип фрейма». В этом случае необходимо просто пропустить количество байт, указанное в поле «Длина API-фрейма». В принципе, можно даже проверить контрольную сумму принятых данных, чтобы убедиться, что был принят именно фрейм неизвестного типа, а не произошла, например, ошибка при передаче данных по UART. Подробное описание всех структуры всех возможных API-фреймов можно найти на сайте производителя в документации на программное обеспечение SerialStar. Формат и описание AT-командАТ-команды служат для управления настройками модуля при работе как в прозрачном режиме, так и в режиме API-фреймов. AT-команды состоят из двух текстовых символов ASCII. Для отправки AT-команд сначала необходимо перевести модуль из прозрачного режима в командный. Это можно сделать с помощью однократного нажатия системной кнопки или передачи в UART стандартной последовательности трех символов «+++». Системная кнопка позволяет перейти в командный режим даже когда модуль находится в состоянии сна, и работа UART приостановлена. AT-команды могут отправляться в UART как управляющим микроконтроллером, так и оператором в любой программе-терминале (с клавиатуры ПК). Изменения, вносимые с помощью AT-команд, применяются не сразу после отправки команды, а только после специальной команды AC («Применить изменения»). Это позволяет передать несколько взаимосвязанных команд, а затем одновременно применить все внесенные изменения. Для сохранения внесенных изменений во Flash существует отдельная команда. Если не сохранить внесенные изменения в энергонезависимой памяти – после отключения и повторного включения питания модуль будет работать с предыдущими установками. Если в процессе работы необходимо быстро вернуться к значениям параметров модуля по умолчанию, то для этого достаточно нажать системную кнопку четыре раза в течение 2 секунд. Этот способ является хорошим выходом из непонятных ситуаций при знакомстве с работой модуля, когда после введения различных настроек он перестает работать ожидаемым образом. В зависимости от выполняемых действий все AT-команды можно разделить на несколько групп (таблица 7). Таблица 7. Основные группы AT-команд
Практический пример работы с модулемДля знакомства с работой прошивки SerialStar выполним несколько простых действий с модулем MBee-868-2.0. Для управления модулем со стороны ПК используем переходную плату MB-USBridge (рисунок 3) и программу Bray’s Terminal v1.9b. Для автономной работы модуля удобно пользоваться платой MB-Tag (рисунок 3). Предварительно подготовим AT-команды в виде макросов, чтобы легко отправлять их нажатием одной кнопки. Для повторения экспериментов вы можете загрузить в используемый файл макросов MBee.tmf (рисунок 4) и саму программу-терминал в виде архива mbeetest.zip.
Рис. 3. Интерфейсные платы MB-Tag и MB-USBridge
Рис. 4. Файл макросов для отправки AT -команд одной кнопкой При испытании работы модулей была использована бета-версия прошивки SerialStar, поэтому при повторении аналогичных действий возможны некоторые отличия в работе по сравнению с приведенными здесь скриншотами и ответами модуля. На рисунке 5 приведено рабочее окно программы SysMC Bootloader – показан результат процесса загрузки прошивки SerialStar в модуль MBee-868-2.0. Для работы с модулем запускаем программу-терминал, устанавливаем значение скорости 9600 и подключаемся к модулю MBee, установленному на переходной плате MB-USBridge-1.2-micro. Переключаем модуль в командный режим нажатием кнопки (“Button”). При переходе в командный режим модуль выводит следующее сообщение: Command mode. > Ниже представлены ответы модуля на различные AT-команды. Отправляемые в модуль команды показаны зеленым цветом, ответы модуля – синим. Команда ATVR позволяет увидеть текущую версию программного обеспечения модуля: ATVR Manufacturer: «Systems, modules and components», Moscow, Russia, www.sysmc.ru. Target module: MBee-868-2.0. Project: SerialStar-868. Build type: Modem. Build time: 2.2.2017 21:2:30. OK. > Команда ATHW показывает аппаратную конфигурацию модуля: ATHV Target module: MBee-868-2.0. Non configurable pins: RF TX indication. Pin #25. RF RX indication. Pin #26. System button. Pin #36. Reconfigurable pins: L0 = 6. UART TX output. Pin #2. L1 = 7. UART RX input. Pin #3. L2 = 0. Disabled. Pin #4. L3 = 0. Disabled. Pin #6. L4 = 0. Disabled. Pin #7. L5 = 4. Digital output with default LOW state. Pin #9. L6 = 0. Disabled. Pin #11. L7 = 0. Disabled. Pin #12. L8 = 0. Disabled. Pin #13. B0 = 0. Disabled. Pin #14. B1 = 1. Not available. Pin #15. B2 = 0. Disabled. Pin #16. B3 = 0. Disabled. Pin #17. B4 = 0. Disabled. Pin #18. B5 = 0. Disabled. Pin #19. R0 = 10. System LED output. Pin #35. R1 = 0. Disabled. Pin #34. R2 = 4. Digital output with default LOW state. Pin #33. R3 = 9. UART RTS output. Pin #32. R4 = 4. Digital output with default LOW state. Pin #31. R5 = 0. Disabled. Pin #30. R6 = 4. Digital output with default LOW state. Pin #29. R7 = 8. UART CTS input. Pin #28. R8 = 4. Digital output with default LOW state. Pin #27. R9 = 0. Disabled. Pin #24. Команда чтения собственного адреса модуля: ATMY >1 > Команда чтения адреса сети в десятичном и HEX-виде: ATID 65537 > ATID0x >0x10001 > Команда чтения адреса получателя, которому будут отправляться данные по эфиру: ATTX0x >0xFFFF > Здесь мы видим, что адрес получателя установлен в 0xFFFF, что означает рассылку широковещательного сообщения, которое будет приниматься всеми модулями, имеющими единый сетевой адрес (ATID). Чтение рабочей частоты модуля: ATCF 868749756 > Рабочая частота модуля равна 868,750 МГц (точное значение – 868,749756 МГц). Настроим модуль, работающий в прозрачном режиме, на формирование ШИМ-сигналов на выводах 27 (R8) и 31 (R4) c разными значениями скважности: АTR8 16 < назначаем порт R8 в качестве выхода ШИМ-модуля 1 (PWM1) > ATM1 3000 < назначаем скважность для ШИМ-модуля 1 равной 3000 (макс. 13000) > АTR4 17 < назначаем порт R4 в качестве выхода ШИМ-модуля 2 (PWM2) > ATM2 10000 < назначаем скважность для ШИМ-модуля 1 равной 10000 (макс. 13000) > ATAC < применяем установленные значения > Результат операции приведен на рисунке 6. При изменении значений скважности командами ATM1 1000, ATM2 6500 и ATAC, соответственно, меняется и картинка на осциллографе (рисунок 7).
Установку значений ШИМ можно производить не только локально, по UART, но и c другого модуля по эфиру, используя API-фрейм типа 0x17. Возможность удаленного доступа ко всем портам модуля (UART, GPIO, ADC, PWM) позволяет дистанционно управлять светильниками, считывать значения с аналоговых датчиков и управлять оборудованием по последовательным протоколам. ЗаключениеРазвитый и дружественный командный интерфейс программного обеспечения SerialStar позволяет простым образом реализовать беспроводную систему архитектуры «точка-точка» или «звезда». В этих обеих топологиях все устройства равнозначны, что заметно упрощает ввод сети в эксплуатацию и ее последующее обслуживание. Расширенные возможности командного API-интерфейса, автономный режим отправки состояния линий входа-выхода и поддержка батарейных спящих узлов предоставляют разработчику полную техническую свободу при создании беспроводной системы связи различной сложности. Литература
|