Набор вышел в начале июня. Он поможет разобраться, в чем преимущества сети интернета вещей NB-IoT, и научит работать с ней. В комплект входит аппаратная часть, коннективити, то есть доступ к сети NB-IoT и доступ к IoT-платформам. Главная «фича» DevKit – демонстрационная прошивка, которая позволяет на практике разобраться, как работает система. В этой статье детально рассмотрим DevKit и его возможности.



Кому это надо?


Когда мы начали разворачивать сеть NB-IoT (почитать больше о сети NB-IoT можно здесь), на нас со всех сторон посыпались различные вопросы. Крупные производители, которые много лет работают на рынке M2M устройств, стартапы, начинающие разработчики и просто любители интересовались режимами работы сети, протоколами передачи данных, даже управлением радиомодулем АТ-командами. Нас спрашивали, какие частоты (band) используются, как работает режим power save mode, как устройство и сеть согласуют соответствующие таймеры, как, используя протокол транспортного уровня UDP, добиться гарантированной доставки сообщения, как задать APN и выбрать определенный band (частотный диапазон). И множество других вопросов.

В ходе тестов мы также обратили внимание, что многие устройства не адаптированы для работы в сети NB-IoT и в результате работают некорректно. Например, использование протокола передачи данных с транспортным уровнем TCP приводит к высокому объему передаваемого трафика, а также к трудностям при работе в сложных радиоусловиях. Другая распространенная проблема – использование радиомодуля в режиме по умолчанию, в котором модуль сам включает eDRX: это вводит пользователя в заблуждение, так как он не может принять данные в произвольный момент времени.

К нам стали обращаться ВУЗы, специализирующиеся на телекоммуникациях, которым интересно изучить на реальных устройствах технологии LPWAN, в том числе NB-IoT, и разработчики-любители, которые хотят поэксперементировать и создать собственное IoT-решение для умного дома или даже умного города.

Мы решили, что лучший способ ответить на все эти вопросы – создать development kit, на котором можно будет максимально быстро научиться работать с сетью интернета вещей.

Из чего состоит набор?


Мы сделали решение, с которым можно сразу начинать работать, ничего не приобретая дополнительно. Как уже говорилось выше, в комплект входит аппаратная часть, коннективити, то есть доступ к сети NB-IoT, и доступ к IoT-платформам.

В состав аппаратной части входит радиомодуль Ublox SARA-R410, микроконтроллер STM32L152RE, кабели, антенны и программатор. На основной плате установлены акселерометр и температурный датчик. Плата расширения в форм-факторе Arduino-shield содержит GNSS модуль.

Модуль идентификации в сети входит в базовый набор и выполнен в виде SIM-чипа NB-IoT с безлимитным трафиком на год. Пользователю не нужно тратить время на подключение SIM-карты и выбирать тариф, кроме того, SIM-чип обеспечивает большую надежность: он не подвержен перепадам температур, влажности и вибрациям. Также вместе с комплектом пользователь получает готовую учетную запись на платформе IoT с настроенными виджетами и возможностью гибко настраивать виджеты самостоятельно – дополнительно получать и оплачивать аккаунт не потребуется.

Также по запросу возможна активация функционала NIDD и возможность работы через узел SCEF (Service Capability Exposure Function) сети NB-IoT МТС. Сервис снимает с разработчика необходимость идентификации и аутентификации устройств и предоставляет возможность клиентским серверам приложений (Application Server) получать данные и управлять устройствами через единый API-интерфейс. В России ни один другой оператор интернета вещей не предоставляет такую возможность.

Возможности демонстрационной прошивки


Демонстрационная прошивка содержит функциональное меню, которое позволяет новичкам сразу приступить к работе. Достаточно лишь подключить плату и получить регистрационные данные. Прошивка реализует функциональное меню, доступ к которому мы получаем, подключившись через любую терминальную программу. Можно воспользоваться знакомой многим PuTTY. Мы также рекомендуем удобную и бесплатную утилиту от Ublox: m-center



Выглядит меню так:

*** Welcome to MTS NB-IoT Development Kit service menu ***
Firmware version: 2.3 beta 2, 28.05.2020
 
Current settings found in EEPROM:
 
Target IP:                195.34.49.22
Target port:                6683
Target URL:                /api/v1/devkitNIDDtest03/telemetry
NIDD APN:                devkit.nidd
Use NIDD for telemetry:        1
Board mode on startup:        service menu
Telemetry interval
(in logger mode):        1000 ms
GNSS privacy mode:        0

Type in a function number from a list below and press enter.

Target server setup:
1        - set the URL of the resource JSON data will be transmitted to
2        - set the IP address
3        - set the port
4        - set an APN for NIDD access or turn NIDD mode ON or OFF
System functions:
5        - force send telemetry packet
6        - wait for incoming NIDD data during specified timeout
7        - enter direct AT-command mode
8        - enter true direct mode to access the RF module
CAUTION: to exit this mode you will have to reboot the board physically
9        - show ICCID, IMEI, IMSI and MCU serial number
10        - show network information
11        - set telemetry transmission interval
12        - set GNSS privacy mode
(hide actual location data when transmitting on server)
13        - set firmware startup mode (setup or logger)
14        - read on-board sensors and try to acquire GNSS data
15        - reboot MCU
16        - reboot RF module
17        - factory setup & test
(do not use this unless you really know what you want)

Первые четыре пункта меню позволяют настроить параметры соединения с платформой (URI-path, IP, порт, параметры NIDD). Пятый пункт позволяет отправить пакет, содержащий данные с датчиков на плате.

Пример того, как выглядит результат отправки пакета по протоколу CoAP:

Using IP method.
Sending data to iotsandbox.mts.ru:6683/api/v1/devkitNIDDtest03/telemetry
Telemetry:
{'interface':'telemetry', 'ICCID':'89701012417915117807', 'Tamb_degC':24, 'aX':-14, 'aY':23, 'aZ':244, 'RSSI_dBm':-81, 'latitude':55.768848, 'longitude':37.715088, 'GNSS_data_valid':1}
(184 bytes)
Raw CoAP data (225 bytes):
5102000000B36170690276310D036465766B69744E4944447465737430330974656C656D65747279FF7B27696E74657266616365273A2774656C656D65747279272C20274943434944273A273839373031303132343137393135313137383037272C202754616D625F64656743273A32342C20276158273A2D31342C20276159273A32332C2027615A273A3234342C2027525353495F64426D273A2D38312C20276C61746974756465273A35352E3736383834382C20276C6F6E676974756465273A33372E3731353038382C2027474E53535F646174615F76616C6964273A317D
Server response code: 2.03, response time = 664 ms.
Server response dump:
5143067000

Переданные данные мы видим на платформе:



Пункт меню 14 позволяет считать данные с датчиков на основной плате и на плате расширения, вот пример того, что мы увидим:

On-board sensors data:
temperature:        23
 
accelerometer:        X = -3        Y = 4        Z = 249
Accelerometer signature value is correct.
 
Testing GNSS option...
GNSS string:
$GNGLL,5546.12120,N,03742.89412,E,133220.00,A,D*75
Parsed data:
latitude = 55.768687
longitude = 37.714902

Можно прочитать идентификаторы радиомодуля и микроконтроллера, используя пункт 7 меню. В таком случае ответ будет:

Board identification data
SIM card ICCID: 89701012417915117807
AT+CCID
 
+CCID: 89701012417915117807
 
OK
RF module IMEI: 359215103260015
AT+CGSN
 
359215103260015
 
OK
IMSI:
AT+CIMI
 
250011791511780
 
OK
MCU serial number:
0x393533307473832200

Используя пункт 10 меню можно считать сетевые параметры NB-IoT, вот пример вывода:

RSSI        = -75 dBm (valid range is -111 to -51 dBm)
SNR        = 22 dB
RSRP        = -83 dBm (valid range is -141 to -44 dBm)
Cell ID        = 753621
EARFCN        = 1711

Также можно перейти в режим прямого управления радиомодулем посредством АТ-команд, используя пункт меню 8. Эта функция переводит Development kit в режим отладочной платы радиомодуля. Ниже пример прямого управления радиомодулем с командами обмена данными между устройством и сервером в режиме NIDD:

Entering true direct mode.
From now on everything you type into a terminal will be transferred to the RF module as is 
(and similarly in reverse direction).
NOTICE: No special commands supported here, for nothing is between you and the RF module.
YOU NEED TO REBOOT THE BOARD PHYSICALLY TO EXIT THIS MODE.
---
 
at+cereg?
+CEREG: 0,1
OK
 
AT+COPS?
+COPS: 0,0,"MTS RUS MTS RUS",9
OK
 
at+cgdcont?
+CGDCONT: 1,"NONIP","devkit.nidd","0.0.0.0",0,0,0,0
OK
 
AT+CRTDCP=1
OK
 
AT+CSODCP=1,16,"{'test':'hello'}"
OK
 
+CRTDCP:1,5,"Hi hi"

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

Для «продвинутых» пользователей открыты исходные коды прошивки, можно оценить логику работы устройства на уровне кода, внести изменения и экспериментировать. Со стороны облачной платформы доступны инструменты для обработки данных: виджеты, панели управления, инструменты «Интеграции», позволяющие принять данные в любом формате в протоколах UDP, TCP и Non-IP. Инструмент «Конвертер данных» позволяют привести получаемый поток данных к виду понятному платформе.

DevKit и Ардуино


Несмотря на критическое отношение части профессионалов к Ардуино, которые указывают на неоптимальный код и на то, что библиотеки написаны не профессиональными разработчиками, мы изначально хотели сделать DevKit совместимым с Ардуино. Arduino IDE пользуется популярностью среди разработчиков–любителей, а также может применяться в учебных программах ВУЗами.

DevKit полностью совместим с Ардуино R3 по своему духу, архитектуре, и разьемам. Для устройства были разработаны все сопутствующие файлы поддержки, так что оно устанавливается в Arduino IDE штатным образом.



В состав пакета для Arduino IDE включены необходимые инструменты и библиотеки, а также ряд примеров с исходными текстами. Программная совместимость с другими платами Arduino на основе STM32 позволяет использовать написанные для них библиотеки, а также загружать рабочие скетчи практически без изменений. Для программирования DevKit из Arduino IDE необходимо установить ПО STMCubeProgrammer, которое можно скачать с сайта компании STM. Наши разработчики продолжают наполнять пакет для Arduino новыми библиотеками и примерами.

В качестве простейшего примера работы с Arduino IDE рассмотрим загрузку примера Blink (мигание светодиодом). На изображении ниже можно увидеть результат загрузки и компиляции данного скетча из меню Файл – Примеры – 01.Basics





Поддерживаемые интегрированные среды разработки


Разработка демонстрационной прошивки производилась в интегрированной среде Em::Bitz. Программный код примера рассчитан на компиляцию с помощью GCC. Для разработки пользовательского кода пригодны любые IDE, поддерживающие семейство микроконтроллеров STM32L15x. Например, Arduino IDE, IAR Embedded Workbench, Keil uVision MDK ARM и другие.

Расширение функциональности


Функциональность можно расширять как с помощью шилдов, так и подключая любые дискретные датчики.



Установка GNSS-шилда превращает DevKit в GPS/GLONASS трекер.



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



Можно подключить специальный шилд и добавить функциональность Ethernet и карту памяти.



Подключая датчики скорости и направления ветра получаем NB-IoT метеостанцию



Подключаем ультразвуковой датчик и реле управления насосом – получаем автомат контроля уровня жидкости в емкости.



В следующем материале покажем на практике, как собрать на основе NB-IoT DevKit устройство интернета вещей. Заказать NB-IoT Development Kit можно уже сейчас на нашем сайте.

Авторы:
старший менеджер группы планирования сети IoT Виталий Бачук
ведущий эксперт направления МТС Виктор Лучанский
руководитель группы планирования сети IoT Андрей Плавич