Демонстрационная прошивка отладочного комплекта МТС NB-IoT
Версия 2.4 beta 2, 22.01.2021

Описание

Основным предназначением прошивки отладочного комплекта МТС NB-IoT является иллюстрация принципов построения устройств и систем телеметрии, передающих данные через сеть LTE Cat. NB1 (NB-IoT), а также демонстрация методик работы с поставляемым аппаратным обеспечением.

Прошивка реализует сервисное меню, обеспечивающее доступ к функциям настройки и диагностики, а также предоставляющее прямой доступ к радиомодулю. Кроме этого доступен режим периодической передачи телеметрии.

Взаимодействие с пользователем осуществляется в текстовом режиме через последовательный порт, доступ к которому обеспечивается с помощью преобразователя USB-UART, подключенного к USB-разъему XS8.

Заметки
Параметры подключения:
До версии 2.1: 38400 бит/с, 8 бит данных, контроль четности не используется.
Начиная с версии 2.1 beta: 115200 бит/с, 8 бит данных, контроль четности не используется.
Предупреждения
Для удобства использования следует включить функцию local echo в используемой программе-эмуляторе терминала.

С документацией на код можно ознакомиться в разделе "Группы".

Структура и особенности

Исходный код имеет модульную структуру с выделенными слоями уровня абстракции от оборудования, драйверов установленных на плате устройств, поддержки протокола CoAP, а также собственно кода приложения.

Исходный код не имеет внешних зависимостей и соответствует стандарту ISO C99.

Заметки
Исключениями являются зависимость от стандартной библиотеки языка Си и использование директив #warning и #error, являющихся расширениями, реализуемыми компилятором GCC.
Разработка прошивки производилась в IDE EmBitz версии 1.11, компилятор arm-none-eabi-gcc 5.4.1 20160609.
Предупреждения
При компиляции следует определить макрос __NO_SYSTEM_INIT в свойствах проекта для корректной работы функций инициализации системы тактирования.
В настройках проекта следует указать подключение опции поддержки чисел с плавающей запятой в printf().
Рекомендуется установить размер стека не менее 1 кБ.

Формат телеметрии

Телеметрия передается на сервер в формате, совместимом с JSON. Строка телеметрии имеет вид

{'interface':'telemetry', 'ICCID':'[s]', 'Tamb_degC':[d], 'aX':[d], 'aY':[d], 'aZ':[d], 'RSSI_dBm':[d], 'latitude':[%.6f], 'longitude':[%.6f], 'GNSS_data_valid':[d]}

Она содержит маркер используемого интерфейса, идентификационный номер SIM-чипа, установленного на плате, значения температуры, измеренной датчиком, установленным на плате, проекций ускорения на оси акселерометра, уровень мощности сигнала сотовой сети, измеренный устройством, а также координаты GNSS с маркером их корректности.

В случае передачи данных через IP строка инкапсулируется в сообщение CoAP, которое затем передается на сервер по протоколу UDP.

В случае передачи данных без использования технологии IP, строка передается в исходном виде с помощью non-IP сервисов сети.

Выбор метода передачи данных осуществляется в сервисном меню.

Сервисное меню

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

Заметки
Если прошивка функционирует в режиме периодической отсылки телеметрии (см. описание ниже), то для входа в сервисное меню следует нажать кнопку SB1 и, удерживая ее, перезагрузить контроллер кнопкой SB2, после чего удерживать SB1 до сообщения "(i) The device will enter service menu". Далее с помощью функции из сервисного меню (см. ниже) можно выбрать желаемый режим загрузки по умолчанию.
Предупреждения
Перемычки XP10 и XP11 на плате должны быть установлены в положение по умолчанию.

Если при старте платы в области EEPROM контроллера не обнаружено корректных настроек, либо при компиляции был определен макрос ALWAYS_ENTER_SETUP, вход в сервисное меню в любом случае осуществляется автоматически.

Предупреждения
Система не анализирует семантику настроек; под корректными настройками подразумевается наличие структуры верного формата в EEPROM.
Структура сервисного меню
Предупреждения
Внешний вид сервисного меню может незначительно отличаться в зависимости от версии прошивки. Актуальное описание функций приведено ниже.
Заметки
Приведенный ниже список опций соответствует версии прошивки 2.4 beta 2 от 22.01.2021
В beta-версиях прошивки функционал прошивки может изменяться быстрее, чем обновляется документация. В случае расхождения этой документации и встроенных сообщений-подсказок прошивки приоритет следует отдавать встроенным сообщениям.

Настройки передачи данных на сервер:

1 - установить URL, по которому будут передаваться данные телеметрии

Предупреждения
URL не должен включать IP-адрес и порт
URL должен начинаться с символа '/', например /api/v1/<TOKEN>/telemetry

2 - установить IP-адрес сервера
3 - установить номер UDP-порта, на котором сервер будет ожидать сообщения CoAP
4 - установить APN для доступа с использованием NIDD; эта же опция позволяет включить либо выключить использование NIDD

Системные возможности:

5 - инициировать однократную передачу пакета телеметрии с выбранными настройками (тест)
6 - тест NIDD: ожидание входящих данных через канал NIDD в течение заданного интервала времени
7 - тест функции OBSERVE протокола CoAP
8 - режим ручной передачи AT-команд модулю

Предупреждения
В режиме ручного обмена AT-командами невозможно наблюдение URC-сообщений, поскольку в простое контроллер ожидает ввода данных пользователя и не
анализирует состояние канала обмена данными с радиомодулем.
Заметки
Режим ручного обмена AT-командами поддерживает две специальные управляющие команды, не передаваемые радиомодулю:
exit - выйти из режима прямой передачи AT-команд
pwrp - генерировать импульс на выводе PWR_ON модуля; эта функция удобна при включенном режиме использования PSM (позволяет пробудить модуль).

9 - режим прямой передачи данных радиомодулю

Заметки
В режиме прямой передачи данных радиомодулю возможно наблюдение URC-сообщений.
Предупреждения
Выход из режима прямой передачи данных возможен только путем аппаратной перезагрузки платы.
Заметки
В режиме прямой передачи данных модули UART, используемые для обмена с пользователем и с радиомодулем, соединяются напрямую посредством блока DMA. Таким образом снимаются любые ограничения на вид передаваемой информации; в этом режиме микроконтроллер, установленный на плате, фактически эквивалентен отрезку провода; единственное несущественное отличие - задержка передачи на время одного байта.
С другой стороны, поскольку микроконтроллер не осуществляет никакого анализа передаваемой информации, программный выход из режима прямой передачи данных невозможен.

10 - команда идентификации: вывод ICCID, IMEI, IMSI, серийного номера микроконтроллера и т.п.

11 - отображение информации о сети: RSSI, SNR, Cell ID, EARFCN
12 - установка интервала передачи для режима периодической отсылки телеметрии
13 - установка режима сокрытия данных об истинном местоположении

Заметки
Если эта настройка активна (значение по умолчанию), реальные данные с GNSS-модуля (при их доступности) не будут передаваться в пакете телеметрии. Вместо этого в пакет будут включены произвольные данные. Настройка не влияет на GNSS-координаты, выводимые в консоль.

14 - установка режима функционирования прошивки

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

15 - чтение показаний датчиков, установленных на плате, и координат GNSS (если соответствующий модуль установлен и находится в состоянии готовности)
16 - перезагрузка контроллера
17 - программная перезагрузка радиомодуля
18 - заводской тест и настройка; для использования на производстве.

Особенности работы режимов энергосбережения

Важной особенностью сети LTE Cat NB1 является поддержка режима PSM, по сути предоставляющего возможность полностью отключить радиомодуль, но при этом не потерять регистрацию в сети; таким образом, при повторном его включении экономится время на регистрацию.

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

Заметки
Для использования возможностей энергосбережения следует соответствующим образом определить макрос DO_NOT_GO_STOP.

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

Модуль переходит в режим PSM только самостоятельно, по истечении шести секунд с момента включения, либо по истечении времени, определяемого параметром сети T3324.

По этой причине в случае, если интервал передачи телеметрии на сервер составляет менее шести секунд, использование режима PSM не имеет смысла, поскольку модуль не успеет перейти в него.

В режиме сервисного меню функции энергосбережения недоступны.