LoRa AT-модем от STMicroelectronics – простой путь интеграции LoRa в систему

28 марта

системы безопасностиучёт ресурсовсветотехникаинтернет вещейSTMicroelectronicsстатьяинтегральные микросхемыбеспроводные технологиисредства разработки и материалы868 МГцwirelessУмный домLoRaWANLoRa

Александр Калачев (г. Барнаул)

Интеграция беспроводного соединения в существующую инфраструктуру легко осуществима с помощью добавления в систему внешнего радиомодуля с управлением при помощи текстовых команд в режиме АТ-модема. Компания STMicroelectronics представляет беспроводные контроллеры семейства STM32WL, управляемые с помощью AT-команд, которые позволяют добавлять беспроводной интерфейс к микроконтроллерам, промышленным контроллерам, узлам автоматики, ПК и другим устройствам.

Технология LoRa, как и стандарт LoRaWAN, все чаще рассматриваются в качестве варианта реализации беспроводной сети сбора данных для различных задач.

Одной из целевых областей применения LoRa являются системы контроля и учета расхода ресурсов – электричества, воды, теплоносителей, газа и так далее. Особенности физического уровня технологии LoRa дают определенное преимущество при организации таких сетей. Ключевые из них:

  • способность работать с сигналами ниже уровня шумов;
  • субгигагерцевый диапазон;
  • малое энергопотребление.

Все это позволяет работать и в условиях городской застройки. Теоретически радиуса радиопокрытия центрального LoRa-узла должно быть достаточно для охвата городского микрорайона или территории обслуживания управляющей компании.

Одним из достаточно простых вариантов интеграции беспроводного соединения в существующую инфраструктуру является добавление в систему внешнего радиомодуля, иногда называемого сетевым процессором. Популярным подходом в подобных случаях является подключение сетевого процессора по интерфейсу UART с управлением при помощи текстовых команд (режим АТ-модема). Такое решение позволяет без особых проблем и при минимальных аппаратных затратах добавлять беспроводной интерфейс к микроконтроллерам, промышленным контроллерам, узлам автоматики, компьютерам и даже к планшетам и смартфонам.

Для беспроводных контроллеров семейства STM32WL, выпускаемых компанией STMicroelectronics, в рамках программного пакета STM32CubeWL также предоставляется возможность работы посредством AT-команд. «Из коробки» доступны примеры прикладного кода для отладочных плат NUCLEO-WL55JC.

Поддержка LoRa в пакете STM32CubeWL включает в себя следующее:

  • конфигурационные файлы и драйвера для плат серии STM32WLxx_Nucleo;
  • драйвера уровня HAL для STM32WLxx;
  • драйвера и протоколы среднего уровня для субгигагерцевого трансивера (драйвера SubGHz_Phy);
  • примеры беспроводных приложений физического уровня (SubGHz_Phy):
  • SubGHz_Phy_PingPong – простой обмен пакетами между двумя узлами;
  • SubGHz_Phy_Per – тест производительности беспроводного канала.
  • программное обеспечение протокола LoRaWAN:
  • реализация сетевого уровня LoRaWAN;
  • утилиты технологии LoRa;
  • поддержка шифрования LoRa;
  • конечный автомат LoRa-узла;
  • примеры практических приложений:
  • LoRaWAN_AT_Slave в вариантах для одно- и для двухъядерных контроллеров;
  • LoRaWAN_End_Node в вариантах для одно- и для двухъядерных контроллеров, а также для FreeRTOS.

Кроме того, STM32CubeWL обеспечивает эффективную системную интеграцию со следующими компонентами (рисунок 1):

  • секвенсором для выполнения задач в фоновом режиме и перехода в режим малого энергопотребления при отсутствии активности;
  • сервером таймера для предоставления приложению виртуальных таймеров, запущенных на базе таймера реального времени RTC (RTC может оставаться активным в режимах остановки и ожидания).

Рис. 1. Архитектура стека LoRaWAN

Рис. 1. Архитектура стека LoRaWAN

Приложение LoRaWAN_AT_Slave

LoRaWAN_AT_Slave демонстрирует возможности организации сети LoRaWAN и управления встроенным LoRa-модемом посредством AT-команд, подаваемых на UART-интерфейс беспроводного контроллера внешним хост-контроллером. Благодаря простому текстовому интерфейсу в качестве хост-контроллера может выступать практически любое устройство.

Параметры UART-интерфейса:

  • скорость 9600 б/с;
  • разрядность данных 8 бит;
  • 1 стоп-бит;
  • нет проверки четности;
  • отсутствует управление потоком.

Например, если в качестве хост-контроллера используется персональный компьютер под управлением ОС Windows, можно пользоваться терминальными программами типа TeraTerm или PuTTY.

Модель работы LoRaWAN, реализованная в STM32CubeWL, основана на парадигме обработки событий. Под ними понимаются события, генерируемые стеком протоколов, а также обработка исключений, генерируемых таймером, например, таймаутами по приему или передаче пакетов либо ошибками соединения (рисунок 2). Поведение LoRa-системы запускается либо событием таймера, либо событием радиосвязи, а также охранными временными интервалами.

Примеры прикладных программ для LoRa в STM32CubeWL расположены в папках:

  • Работа со стеком через callback-функции: \Projects\<target>\Applications\LoRaWAN\LoRaWAN_End_Node\LoRaWAN\App\lora_app.c.
  • Работа с LoRaWAN посредством АТ-команд: \Projects\<target>\Applications\LoRaWAN\LoRaWAN_AT_Slave\LoRaWAN\App\lora_app.c.

Рис. 2. Модель работы LoRaWAN, реализованная в STM32CubeWL

Рис. 2. Модель работы LoRaWAN, реализованная в STM32CubeWL

LoRaWAN – АТ

Сам формат и система АТ-команд приложения LoRaWAN_AT_Slave достаточно просты (таблица 1). Все команды имеют формат вида:

АТ + ХХХ, 

где XXX – собственно, команда.

Доступны следующие варианты команд:

  • AT+XXX? предоставляет краткую справку по данной команде, например, AT+DEUI?;
  • AT+XXX используется для выполнения команды, например, AT+JOIN;
  • АТ+XXX=? используется для получения значения заданной команды, например, AT+CFS=?.
  • AT+XXX=<значение> предназначена для присвоения значения команде, например, AT+SEND=2:Hello.

Ответ на команду также передается по UART в текстовом виде. Основные форматы ответа:

<value><CR><LF>

<CR><LF><Status><CR><LF>,

где <CR> и <LF> означают символы возврата каретки и перевода строки.

При этом формат ответа <значение><CR><LF> применяется, когда выполняются команды вызова справки по функции АТ+XXX? и запроса текущего значения АТ+XXX=?.

Если значение не возвращается, то <value><CR><LF> не возвращается.

Каждая команда, кроме ATZ (сброс MCU), возвращает строку состояния и/или статус, которой она предшествует и за которой следует <CR><LF>:

<CR><LF><Status><CR><LF>.

Возможными статусами являются:

  • ОК – команда выполняется правильно, без ошибок;
  • AT_ERROR – общая ошибка/команда не распознана;
  • AT_PARAM_ERROR – параметр команды неверен;
  • AT_BUSY_ERROR – сеть LoRa занята, поэтому команда не может быть выполнена;
  • AT_TEST_PARAM_OVERFLOW – параметр слишком длинный;
  • AT_NO_NETWORK_JOINED – сеть LoRa не подключена;
  • AT_RX_ERROR – обнаружение ошибки во время приема команды.

Таблица 1. Формат и система АТ-команд приложения LoRaWAN_AT_Slave

Команда Параметр Описание
Команды общего назначения
AT Проверка доступности интерфейса
AT? Вывод справки по доступным командам
ATZ Сброс и перезагрузка всей системы
AT+VL [=verb_lvl], где verb_lvl = [0:3] Установка/получение подробного уровня приложения
AT+LTIME [=?] Текущее время в формате UTC
Работа с ключами и идентификаторами
AT+APPEUI [=01:02:03:04:05:06:07:08] Установка/получение EUI-приложения
AT+NWKKEY [=2B:7E:15:16:28:AE:D2:A6:AB:F7:15:88:09:CF:4F:3C] Установка/получение корневого сетевого ключа
AT+APPKEY [=2B:7E:15:16:28:AE:D2:A6:AB:F7:15:88:09:CF:4F:3C] Установка/получение корневого ключа приложения
AT+APPSKEY [=2B:7E:15:16:28:AE:D2:A6:AB:F7:15:88:09:CF:4F:3C] Установка/получение сеансового ключа сессии
AT+DADDR [=01:02:0A:0B] Установка/получение адреса устройства
AT+DEUI [=01:23:45:67:89:AB:CD:EF] Установка/получение уникального идентификатора модуля (module ID)
AT+NWKID [=127] Установка/получение идентификатор сети
Сетевые операции
AT+JOIN [=mode],

где mode = 0 (ABP) или mode = 1 (OTAA)

Присоединение к сети
AT+LINKC Проверка обратной связи, команда MAC, запрос на следующую восходящую линию связи
AT+SEND [=port_nb:confirmedmode:data],

где confirmedmode = 0 или 1

Посылка пакетов в сеть
Команды управления сетьюLoRa
AT+VER [=?] Версия прошивки AT_Slave
AT+ADR [=adr_enable],

где adr_enable = 0 или 1

Управление функциональностью адаптивной скорости передачи
AT+DR [=datarate],

где datarate = [0:7]

Установка/получение скорости передачи данных
AT+BAND [=region]

0: AS923

1: AU915

2: CN470

3: CN779

4: EU433

5: EU868

6: KR920

7: IN865

8: US915

9: RU864

Установка/получение текущего географического региона
AT+CLASS [=class] where class = [A, B or C] Установка/получение класса LoRa
AT+DCS [=dutycycle],

где dutycycle = 0 или 1

Управление параметрами рабочего цикла
AT+JN1DL [=delay],

delay – в миллисекундах

Задержка соединения в первом окне приема
AT+JN2DL [=delay],

delay – в миллисекундах

Задержка соединения во втором окне приема
AT+RX1DL [=delay],

delay – в миллисекундах

Пауза между окончанием передачи и началом приема в первом окне приема
AT+RX2DL [=delay],

delay – в миллисекундах

Пауза между окончанием передачи и началом приема во втором окне приема
AT+RX2DR [=datarate],

где datarate = [0:7]

Управление скоростью потока данных во втором окне приема
AT+RX2FQ [=freq],

где freq – частота в герцах

Частота во втором окне приема
AT+TXP [=txpow], где txpow = [0:7] Выходная мощность
AT+PGSLOT [=periodicity],

где periodicity = [0:7], период равен 2periodicity секунды

Периодичность проверки наличия соединения (ping)
Команды тестирования радиоканала
AT+TTONE Запуск теста RF Tone
AT+TRSSI Запуск теста RSSI RF Tone
AT+TCONF [=freq:pow:bw:sf:cr:lna:pa:mod:paylen:freqdev:lowdropt:BT],

например, [=868000000:14:125:12:4/5:0:0:1:255:0:0:0]

Конфигурирование теста LoRa-радиоканала
AT+TTX [=nb_packets_sent] Задание количества пакетов, передаваемых во время теста передачи
AT+TRX [=nb_packets_received] Задание количества пакетов, принимаемых во время теста приема
AT+CERTIF [=mode],

где mode = 0 (ABP) или 1 (OTAA)

Запуск модуля в режиме сертификации LoRaWAN и с выбором режима присоединения
AT+TTH [=<Fstart>, <Fstop>,<FDelta>,<PacketNb>] Запуск теста переключения частот при передаче
AT+TOFF Выход из режима тестирования
Информационные команды
AT+BAT Возврат уровня заряда батареи

В приложении AT-Slave беспроводной модуль выполняет два типа задач. В задачах LoRa модуль AT-Slave управляет полученными окнами приема и отправляет данные. Также модуль AT-Slave получает команды от ведущего устройства, которое планирует задачи LoRa, а затем отправляет обратно запрошенное значение и статус команды.

Фактически большую часть времени микроконтроллер находится в режиме ожидания, обрабатывая команды от ведущего устройства по мере их поступления или события LoRa, возникающие в зависимости от расписания задач. В связи с этим для оптимизации энергопотребления микроконтроллер находится в режиме останова. UART-интерфейс контроллера работает в режиме LPUART (маломощный UART), чем и объясняется малая скорость связи с хост-контроллером.

В целом, демонстрационное приложение AT_Slave позволяет достаточно легко и практически на любой хост-системе протестировать функциональность сети LoRaWAN. Сделать это можно как в ручном режиме, передавая АТ-команды с консоли, так и автоматизировав отправку команд и обработку их ответов приложением.

Также AT_Slave будет интересна разработчику в плане предпускового тестирования LoRaWAN-сети в реальных условиях или при проведении предпроектных изысканий на этапе планирования сети и размещения узлов.

Литература

  1. UM2073 User manual STM32 LoRa® software expansion for STM32Cube
  2. AN5481 LoRaWAN® AT commands for STM32CubeWL
  3. AN5406 How to build a LoRa® application with STM32CubeWL
•••

Наши информационные каналы

О компании STMicroelectronics

Компания STMicroelectronics является №1 производителем электроники в Европе. Компоненты ST широко представлены в окружающих нас потребительских товарах – от iPhone до автомобилей разных марок. Лидеры индустриального рынка выбирают компоненты ST за их надежность и выдающиеся технические параметры. В компании ST работает 48 000 сотрудников в 35 странах. Производственные мощности расположены в 12 странах мира. Более 11 тысяч сотрудников заняты исследованиями и разработками – инновационное лидерство ...читать далее

Товары
Наименование
NUCLEO-WL55JC2 (ST)
STM32WLE4CBU6 (ST)
STM32WLE4CCU6 (ST)
STM32WLE5CBU6 (ST)
STM32WLE5CCU6 (ST)
STM32WLE5JCI6 (ST)
STM32WL55CCU6 (ST)
STM32WL54JCI6 (ST)
STM32WL55CCU7 (ST)
STM32WL55JCI (ST)