№3 / 2017 / статья 8

Тестируем новые возможности модулей 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

Рис. 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

Параметр Значение
Настройки радиоканала по умолчанию Центральная частота 868,75 МГц; модуляция 2GFSK; девиация 19 кГц; битовая скорость 38,3835 кбит/с
Выходная мощность передатчика по умолчанию 10 дБм для модулей MBee-868-3.0; 14 дБм для модулей MBee-868-2.0
Диапазон программной регулировки выходной мощности
передатчика
-30…10 дБм для модулей MBee-868-3.0; -32…27 дБм для модулей MBee-868-2.0
Дальность связи для модуля MBee-868-2.0 при заданной эфирной скорости, выходной мощности 14 дБм и антеннах с усилением 2 дБм 21 км при 1200 бит/с; 15 км при 4800 бит/с;13 км при 9600 бит/с; 10 км при 38400 бит/с; 6 км при 57600 бит/с; 4 км при 115200 бит/с; 1 км при 500000 бит/с
Дальность связи для модуля MBee-868-3.0 при заданной эфирной скорости, выходной мощности 10 дБм и антеннах с усилением 2 дБм 3,8 км при 1200 бит/с; 2,7 км при 4800 бит/с; 2,4 км при 9600 бит/с;
1,7 км при 38400 бит/с; 1 км при 57600 бит/с; 0,7 км при 115200 бит/с; 0,2 км при 500000 бит/с
Фиксированные радиоканалы, находящиеся в полосе, разрешенной Приложением 11 крешению ГКРЧ от 07.05.2007 г.
№ 07-20-03-001 для систем без ограничения рабочего цикла
868,75 МГц (1 канал); 868,85 МГц (2 канал); 868,95 МГц (3 канал);
869,05 МГц (4 канал); 869,15 МГц (5 канал)
Программная перестройка частоты В диапазоне 779…928 МГц (точность установки — около 400 Гц)
Настройки UART по умолчанию Скорость 9600 кбит/с; число стоповых бит – 1; уетности нет; аппаратное управление потоком – CTS/RTS; размер приемного буфера – 400 байт; размер буфера на передачу – 400 байт
Потребление тока в режиме сна 2…4 мкА
Число GPIO-цифровых линий ввода-вывода 25
Число линий АЦП 10 бит 5
Число линий ШИМ (> 13 бит; диапазон десятичных значений 0…13000) 4
Число счетных входов 2
Число независимых UART-интерфейсов 1 (TX, RX; CTS и RTS – опционально)
Выводы контроля и управления Системный светодиод; индикация режима сна; сигнал управления режимом сна; служебная кнопка (вход в режим конфигурирования); сигнал пробуждения; аппаратный сброс модуля

Типовая схема включения модуля приведена на рисунке 2. Прошивка SerialStar позволяет задействовать практически все выводы модуля. Причем имеется возможность гибкой конфигурации выводов. Любой интерфейс, – GPIO, UART, ADC, PWM, – может быть перенаправлен на тот или иной физический вывод модуля. Режим работы того или иного вывода задается с помощью соответствующей AT-команды. Например, разработчик может назначить на физический вывод 29 функцию «Цифровой выход в состоянии 1»,, или «Вход АЦП», или «Выход PWM», или какой-либо другой из таблицы 2. По умолчанию большинство интерфейсных пинов модуля находится в состоянии «отключено» (таблица 3).

Рис. 2. Типовая схема включения модуля

Рис. 2. Типовая схема включения модуля

Таблица 2. Диапазон настроек функций для пинов модуля

Режим работы Обозначение Параметр в теле AT-команды Выводы модуля, на которые можно назначить данный режим работы
Отключен DISABLED 0 2…4, 6, 7, 9, 11…19, 24, 27…35
Вход АЦП ADC 2 29, 30, 33…35
Цифровой вход DIGITAL INPUT 3 2…4, 6, 7, 9, 11…19, 24, 27…35
Цифровой выход в состоянии «0» DIGITAL OUTPUT, LOW 4 2…4, 6, 7, 9, 11…19, 24, 27…35
Цифровой выход в состоянии «1» DIGITAL OUTPUT, HI 5 2…4, 6, 7, 9, 11…19, 24, 27…35
Выход данных UART UART TX 6 2…4, 6, 7, 9, 11…15, 24, 27…35
Вход данных UART UART RX 7 2…4, 6, 7, 9, 11…15, 24, 27…35
Управление UART UART CTS 8 2…4, 6, 7, 9, 11…19, 24, 27…35
Управление UART UART RTS 9 2…4, 6, 7, 9, 11…19, 24, 27…35
Светодиод состояния SYSTEM LED 10 2…4, 6, 7, 9, 11…19, 24, 27…35
Ручное управление режимом сна SLEEP REQUEST 11 2…4, 6, 7, 9, 27…35
Индикация состояния режима сна SLEEP STATUS 12 2…4, 6, 7, 9, 11…19, 24, 27…35
Счетный вход 1 COUNTER INPUT1 13 2…4, 6, 7, 9, 27…35
Счетный вход 2 COUNTER INPUT2 14 2…4, 6, 7, 9, 27…35
Сигнал на пробуждение модуля WAKEUP INPUT 15 2…4, 6, 7, 9, 27…35
Выход ШИМ 1 PWM1 16 2…4, 6, 7, 9, 11…15, 24, 27…35
Выход ШИМ 2 PWM2 17 2…4, 6, 7, 9, 11…15, 24, 27…35
Выход ШИМ 3 PWM3 18 2…4, 6, 7, 9, 11…15, 24, 27…35
Выход ШИМ 4 PWM4 19 2…4, 6, 7, 9, 11…15, 24, 27…35

Таблица 3. Настройка выводов модуля по умолчанию

Вывод модуля Параметр/значение Комментарий
1 VDD Напряжение питания модуля 2,4…3,6 В
2 L0 = 6 Выход TX UART
3 L1 = 7 Вход RX UART
4 L2 = 0 Отключен
5 RESET Вход аппаратного сброса модуля
6 L3 = 0 Отключен
7 L4 = 0 Отключен
8 Служебный
9 L5 = 11 Вход модуля. Управление режимом сна (Sleep Request)
10 GND Земля
11 L6 = 0 Отключен
12 L7 = 0 Отключен
13 L8 = 0 Отключен
14 B0 = 0 Отключен
15 B1 = 0 (MBee-868-3.0); B1 = 1 (MBee-868-2.0) Отключен (только для MBee-868-3.0); не используется (только для MBee-868-2.0)
16 B2 = 0 Отключен
17 B3 = 0 Отключен
18 B4 = 0 Отключен
19 B5 = 0 Отключен
20 Служебный
21 RESET Вход аппаратного сброса модуля
22 VDD Напряжение питания модуля 2,4…3,6 В
23 GND Земля
24 R9 = 0 Отключен
25 Выход RF TX Светодиод индикации включения передатчика
26 Выход RF RX Светодиод индикации включения приемника
27 R8 = 0 Отключен
28 R7 = 8 Вход CTS UART (при SM1 или SM5 линия работает как Sleep Request)
29 R6 = 12 Выход модуля. Индикация режима «сон»
30 R5 = 0 Отключен
31 R4 = 0 Отключен
32 R3 = 9 Выход RTS UART
33 R2 = 0 Отключен
34 R1 = 0 Отключен
35 R0 = 10 Выход модуля. Системный светодиод
36 Вход BUTTON Служебная кнопка (переход в командный режим или в режим Bootloader для обновления firmware)

Диапазон рабочих напряжений модуля составляет 2,4…3,6 В.

Режимы работы модулей MBee-868-x.x c ПО SerialStar

Модуль может находиться в одном из нескольких режимов:

  • Режим обновления прошивки. Это специальный режим для загрузки Firmware c помощью Windows-программы SysmcBootloader. Переход в данный режим происходит, если при подаче питания или при нажатии кнопки Reset удерживать нажатой кнопку Button. Режим индицируется миганием LED-светодиода, подключенномго к выводу 35.
  • Прозрачный режим передачи данных. Модуль принимает данные по UART-интерфейсу и отправляет их в эфир. Данные отправляются конкретному модулю или всем модулям, имеющим общий идентификатор сети (см. раздел «Адресация модулей и формат API-фреймов»). Все поступающие данные накапливаются в буфере размером 400 байт. Отправка радиопакета происходит, если в потоке поступающих данных возникает пауза длительностью более 2 символов или при приближении к верхней границе буфера. При отправке данных из программы-терминала в одном радиопакете будет уходить только один символ из-за пауз между нажатиями клавиш.
  • Командный режим. В данный режим модуль переводится из режима прозрачной передачи данных для того, чтобы с помощью AT-команд изменить настройки модуля, установить адрес получателя, перезагрузить модуль и так далее. Переход в командный режим осуществляется отправкой последовательности символов из трех «+» в течение 2 секунд с паузой между символами не менее двух символов. Выход осуществляется также тремя «+» либо кнопками “Button” или “Reset”. Можно принудительно перевести модуль в командный режим нажатием кнопки “Button” (на пине 36), при этом настройки UART-интерфейса будут приведены к значениям 9600 8N1. Кнопка “Button” будет служить своеобразной «палочкой-выручалочкой», если в процессе работы модуля его параметры были изменены случайным образом, и он перестал реагировать на команды по UART.
  • Пакетный режим передачи данных. Модуль получает по UART структурированный набор данных («API-фрейм») и, в зависимости от его наполнения, выполняет различные действия:
    • отправляет данные по эфиру;
    • исполняет полученную АТ-команду для изменения (отображения) собственных настроек; управляет режимами сна и процессом автоматической отправки пакетов с данными о состоянии портов ввода-вывода;
    • отправляет AT-команду по эфиру для ее применения на удаленном модуле;
    • выводит принятые из эфира данные с дополнительной информацией – адресом отправителя и уровнем сигнала RSSI.
  •  Режим пониженного энергопотребления (режим сна) – отключение на определенный промежуток времени ядра модуля, неиспользуемой периферии и приемопередатчика. Управление режимом сна может происходить по внешнему выводу либо по внутреннему настраиваемому таймеру самого модуля. При нахождении модуля в режиме сна невозможно отправлять или принимать данные по эфиру либо вести обмен по UART. Вся активность модуля происходит только во время его пробуждения. С помощью специальных AT-команд можно гибко настраивать время нахождения модуля в режиме сна (10 мс…8 дней) и в режиме пробуждения (1 мс…2 с). При каждом пробуждении модуль отправляет специальный пакет по адресу, указанному в поле TX. В этот пакет включено 2 байта данных – температура чипа и напряжение питания батареи. Если на модуле активированы один или несколько портов ввода, – GPIO input, ADC, – то при пробуждении модуля значения с этих портов добавляются в этот специальный пакет. Механизм автоматической отправки данных (после пробуждения) о состоянии портов ввода позволяет модулю работать автономно, без применения внешнего управляющего микроконтроллера.Этот режим по умолчанию отключен. Для его включения используется команда SM с параметром от 0…5. Можно установить следующие варианты сна:
    • SM 0 (значение по умолчанию) – режим сна отключен, модуль постоянно находится в режиме приема данных по эфиру, UART активен;
    • SM 1 – режим управления сном с помощью пина 11 (Sleep Request) модуля. Перевод в сон осуществляется низким уровнем на линии. Высокий уровень пробуждает модуль.
    • SM 4 – циклический режим сна. Сон и пробуждение происходят по внутреннему таймеру модуля. Период сна задается командой ST, продолжительность бодрствования – командой SP;
    • SM 5 – комбинированный режим сна. Сон по таймеру и выводу 11. Объединение режимов SM1 и SM4.

Адресация модулей и формат 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-фреймов

Код фрейма Тип фрейма Направление по UART Описание
0x01 либо* 0x10 Transmit request От хоста к модулю Передача данных другому модулю. Кроме собственно данных во фрейме указывается ID модема получателя. Отправляемые данные будут выведены через UART модуля-получателя
0x0F Transmit request no option От хоста к модулю Аналогично фрейму 0x01, с увеличенной емкостью под полезные данные (не используется байт опций)
0x90 Receive packet От модуля к хосту Принятые данные от другого модуля. Фрейм содержит также информацию об адресе модуля-отправителя и силу сигнала RSSI
0x07 Local AT command Immediate Apply От хоста к модулю Отправка AT-команды для исполнения на локальном модуле. AT-команда применяется без сохранения во Flash-памяти
0x08 Local AT command От хоста к модулю Отправка AT-команды для исполнения на локальном модуле. Запись обновленных параметров во Flash-памяти с их незамедлительным применением
0x09 Local AT command Queue От хоста к модулю Отправка AT-команды в виде очереди для последующего исполнения на локальном модуле. Запись параметра в теневой регистр для последующего применения с помощью команд AC или CN
0x88 Local AT command Response От модуля к хосту Результат выполнения команды на локальном модуле. Данный фрейм приходит как ответ на переданный ранее фрейм 0x07, 0x08 или 0x09. Если был отправлен фрейм AT-команды для установки порта ввода-вывода без параметра, то в ответе будет присутствовать текущее значения параметра порта
0x17 Remote AT command От хоста к модулю Отправка AT-команды для исполнения на удаленном модуле. Указывается адрес модуля-получателя команды по эфиру и способ актуализации — запись параметра в теневой регистр, без применения; применение сделанных изменений без записи во Flash-память или применение сделанных изменений с записью во Flash-память обновленных параметров
0x97 Remote AT command Response От модуля к хосту Результат выполнения команды на удаленном модуле. Данный фрейм приходит как ответ на переданный ранее фрейм 0x17
0x8A Modem Status От модуля к хосту Модуль посылает хосту информацию о некотором системном событии, например, перезагрузке или о срабатывании сторожевого таймера
0x92 IO Data Sample От модуля к хосту Модуль принял специальный пакет, который содержит данные о состоянии портов ввода-вывода на удаленном модуле. При соответствующей настройке портов и режимах сна данный пакет автоматически отправляется удаленным модулем при каждом пробуждении. Во фрейме содержится адрес модуля-отправителя, состояние цифровых портов ввода и отсчеты АЦП
* – Два разных типа для одного и того же фрейма введены для совместимости с API-фреймами модулей XBee разных серий.

Структура API-фрейма «Прием эфирных данных для UART» типа 0x81 представлена в таблице 5. С помощью данного фрейма модуль выводит принятый по эфиру стандартный пакет данных для UART. Модули могут обмениваться радиопакетами вне зависимости от текущего режима работы – прозрачного режима или режима API-фреймов. Если модуль-приемник на момент приема находился бы в прозрачном режиме, то на выходе UART мы бы увидели только данные «Data», которые расположены в синем поле API-фрейма (таблица 5). При этом информация об адресе модуля-отправителя была бы недоступна. Преимущество API-режима в данном случае заключается в наличии дополнительной информации «здесь и сейчас».

Таблица 5. Структура API-фрейма 0x90 «Прием эфирных данных для UART»

Стартовый
байт
Длина API-фрейма Данные Контрольная сумма
Тип фрейма Адрес отправителя 7 8 9 10 m m + 1
1 2 3 4 5 6
0x7E MSB LSB 0x90 MSB Source ID LSB Source ID RSSI Option Data
MSB – старший байт длины.
LSB – младший байт длины.
MSB Source ID – старший байт адреса MY отправившего пакет модуля.
LSB Source ID – младший байт адреса MY отправившего пакет модуля.
RSSI – сила сигнала для данного принятого пакета (возможный диапазон -116…-21 дБм).
Option – дополнительная информация о формате данных в пакете.
Data – собственно полезная информация, отправленная удаленным модулем.

Следует учитывать, что не все возможности модулей в режиме API-фреймов можно реализовать с помощью AT-команд в прозрачном режиме.

В таблице 6 приведен формат API-фрейма 0x17, с помощью которого происходит отправка AT-команды на удаленный модуль (по эфиру).

Таблица 6. Структура API-фрейма 0x17 «Отправка AT-команды удаленному модулю»

Стартовый байт Длина
API-фрейма
Данные Контрольная сумма
Тип фрейма 5 6 7 8 9 10 11 m m+1
1 2 3 4
0x7E MSB LSB 0x17 Frame ID MSB Destination ID LSB Destination ID Options AT command AT command Parameter
MSB, LSB – старший и младший байт длины API-фрейма.
Frame ID – порядковый номер фрейма. Выбирается произвольно модулем-отправителем.
MSB Destination ID, LSB Destination ID – старший и младший байт адреса MY модуля-получателя.
Option – дополнительная информация о применении данных в пакете на стороне удаленного модуля:
• 0 – запись параметра в теневой регистр, без применения;
• 1 – применение сделанных изменений без записи во Flash;
• 2 – gрименение сделанных изменений с записью во Flash обновленных параметров.
AT command – два символа имени AT-команды (ASCII-коды, например, «CH», «SM», «FR», «B4» и так далее).
Parameter – устанавливаемое с помощью AT-команды значение. Длина поля Parameter зависит от конкретной команды.

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

Подробное описание всех структуры всех возможных API-фреймов можно найти на сайте производителя в документации на программное обеспечение SerialStar.

Формат и описание AT-команд

АТ-команды служат для управления настройками модуля при работе как в прозрачном режиме, так и в режиме API-фреймов. AT-команды состоят из двух текстовых символов ASCII. Для отправки AT-команд сначала необходимо перевести модуль из прозрачного режима в командный. Это можно сделать с помощью однократного нажатия системной кнопки или передачи в UART стандартной последовательности трех символов «+++». Системная кнопка позволяет перейти в командный режим даже когда модуль находится в состоянии сна, и работа UART приостановлена.

AT-команды могут отправляться в UART как управляющим микроконтроллером, так и оператором в любой программе-терминале (с клавиатуры ПК). Изменения, вносимые с помощью AT-команд, применяются не сразу после отправки команды, а только после специальной команды AC («Применить изменения»). Это позволяет передать несколько взаимосвязанных команд, а затем одновременно применить все внесенные изменения. Для сохранения внесенных изменений во Flash существует отдельная команда. Если не сохранить внесенные изменения в энергонезависимой памяти – после отключения и повторного включения питания модуль будет работать с предыдущими установками.

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

В зависимости от выполняемых действий все AT-команды можно разделить на несколько групп (таблица 7).

Таблица 7. Основные группы AT-команд

Группа AT-команд Используемые AT-команды* Описание
Специальные AT-команды WR, CN, AC, DC, RE, FR, VR, HV, AP Применение, отмена и сохранение внесенных изменений во Flash; чтение версии программного и аппаратного обеспечения; выбор режимов работы модуля (прозрачный или API-фреймы); возврат к заводским настройкам и рестарт модуля
Команды настройки сетевых параметров MY, ID, TX, DM Установка адреса сети, подсети и собственного адреса; установка адреса получателя отправляемых данных; выбор режима приема широковещательных пакетов (принимать или нет)
Команды настройки радиочастотных параметров CH, CF, RB, PL Выбор рабочей частоты; установка эфирной скорости; установка выходной мощности
Команды управления режимами сна SM, SP, ST Выбор режима сна (отключен, циклический по внутреннему таймеру, по пину или комбинированный); временные параметры для продолжительности сна и бодрствования
Команды управления линиями ввода-вывода ATLx, ATBx, ATRx, ATMx Назначение вывода рабочей функции (таблица 2); установка значения цифрового выхода; установка значения ШИМ-выхода; чтение состояния линии
* – Список AT-команд может расширяться.

Практический пример работы с модулем

Рис. 3. Интерфейсные платы MB-Tag и MB-USBridge

Рис. 3. Интерфейсные платы MB-Tag и MB-USBridge

Для знакомства с работой прошивки SerialStar выполним несколько простых действий с модулем MBee-868-2.0. Для управления модулем со стороны ПК используем переходную плату MB-USBridge (рисунок 3) и программу Bray’s Terminal v1.9b. Для автономной работы модуля удобно пользоваться платой MB-Tag (рисунок 3). Предварительно подготовим AT-команды в виде макросов, чтобы легко отправлять их нажатием одной кнопки. Для повторения экспериментов вы можете загрузить в используемый файл макросов MBee.tmf (рисунок 4) и саму программу-терминал в виде архива mbeetest.zip.

Рис. 4. Файл макросов для отправки AT -команд одной кнопкой

Рис. 4. Файл макросов для отправки AT -команд одной кнопкой

При испытании работы модулей была использована бета-версия прошивки SerialStar, поэтому при повторении аналогичных действий возможны некоторые отличия в работе по сравнению с приведенными здесь скриншотами и ответами модуля. На рисунке 5 приведено рабочее окно программы SysMC Bootloader – показан результат процесса загрузки прошивки SerialStar в модуль MBee-868-2.0.

Рис. 5. Загрузка прошивки SerialStar в модуль MBee

Рис. 5. Загрузка прошивки SerialStar в модуль MBee

Для работы с модулем запускаем программу-терминал, устанавливаем значение скорости 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).

Рис. 6. Работа портов модуля MBee в режиме ШИМ

Рис. 6. Работа портов модуля MBee в режиме ШИМ

Установку значений ШИМ можно производить не только локально, по UART, но и c другого модуля по эфиру, используя API-фрейм типа 0x17. Возможность удаленного доступа ко всем портам модуля (UART, GPIO, ADC, PWM) позволяет дистанционно управлять светильниками, считывать значения с аналоговых датчиков и управлять оборудованием по последовательным протоколам.

Рис. 7. Установка разной скважности ШИМ -сигналов

Рис. 7. Установка разной скважности ШИМ -сигналов

Заключение

Развитый и дружественный командный интерфейс программного обеспечения SerialStar позволяет простым образом реализовать беспроводную систему архитектуры «точка-точка» или «звезда». В этих обеих топологиях все устройства равнозначны, что заметно упрощает ввод сети в эксплуатацию и ее последующее обслуживание. Расширенные возможности командного API-интерфейса, автономный режим отправки состояния линий входа-выхода и поддержка батарейных спящих узлов предоставляют разработчику полную техническую свободу при создании беспроводной системы связи различной сложности.

Литература

  1. Денис Бушунов, Николай Неудобнов. «Радиомодули MBee-868 от компании СМК: быстрый старт», .
  2. Александр Калачев. «Российский Интернет вещей: беспроводные ZigBee-модули диапазона 2,4 ГГц от компании СМК». Новости электроники № 3\2016.
  3. Денис Бушунов, Николай Неудобнов. «Модули MBee-868 в системах сбора показаний с приборов учета». Новости электроники № 8\2015.
  4. Денис Бушунов. «Замена проводов радиоканалом при работе с промышленным оборудованием».
  5. Программное обеспечение Serial Extender RS232, Serial Extender RS485, Sensor Network. http://sysmc.ru/.
  6. Беспроводные модули MBee-868-3.0, Техническое описание. http://sysmc.ru/.
  7. Денис Бушунов, Николай Неудобнов. «Радиомодули MBee от компании «Системы, модули и компоненты (СМК)». Новости электроники № 8\2015.
  8. Техническое описание программного обеспечения SerialStar. http://sysmc.ru/.

Дополнительные материалы

О компании Системы, модули и компоненты

Российская компания-разработчик ООО «Системы, модули и компоненты» (CMK) начала свою деятельность в 2007 году и специализируется на разработке маломощных беспроводных модулей для всех нелицензируемых диапазонов. Компания CMK имеет свой собственный штат инженеров, готовых оптимизировать свою продукцию под любое применение конечного изделия, при этом срок разработки не превышает двух – трех недель. Также на сайте производителя загружены и находятся в свободном доступе ряд стандартных прошив ...читать далее

Наличие на складах
Наименование Наличие Цена
MBee-DUAL-3.3-UFL-SOLDER-1350-UFL (СМК) -20% 988 14.52 $ 845.19 руб. от 1 шт
MBee-868-2.0-WIRE-SOLDER (СМК) 894 15.77 $ 918.25 руб. от 32 шт
XBEE-PRO 900 RF (DIGI) 0
XBEE-PRO PKG-U (DIGI) 0
MBee-868-3.0-WIRE-SOLDER (СМК) -20% 85 16.04 $ 933.85 руб. от 1 шт
MB-USBridge-1.2-micro (СМК) 42 17.95 $ 1045 руб. от 28 шт
MB-USBridge-1.2-B (СМК) 9 23.94 $ 1394 руб. от 21 шт
MB-Tag-1.2-OEM (СМК) -20% 80 11.18 $ 650.88 руб. от 1 шт
MBee-868-2.0-SMA-PLS12 (СМК) 29 29.93 $ 1742 руб. от 17 шт