Набор вышел в начале июня. Он поможет разобраться, в чем преимущества сети интернета вещей 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

Выглядит меню так:
Type in a function number from a list below and press enter.
Первые четыре пункта меню позволяют настроить параметры соединения с платформой (URI-path, IP, порт, параметры NIDD). Пятый пункт позволяет отправить пакет, содержащий данные с датчиков на плате.
Пример того, как выглядит результат отправки пакета по протоколу CoAP:
Переданные данные мы видим на платформе:

Пункт меню 14 позволяет считать данные с датчиков на основной плате и на плате расширения, вот пример того, что мы увидим:
Можно прочитать идентификаторы радиомодуля и микроконтроллера, используя пункт 7 меню. В таком случае ответ будет:
Используя пункт 10 меню можно считать сетевые параметры NB-IoT, вот пример вывода:
Также можно перейти в режим прямого управления радиомодулем посредством АТ-команд, используя пункт меню 8. Эта функция переводит Development kit в режим отладочной платы радиомодуля. Ниже пример прямого управления радиомодулем с командами обмена данными между устройством и сервером в режиме NIDD:
Меню демонстрационной прошивки позволяет также включить режим постоянной отправки данных с датчиков с заданной периодичностью, реализует обратный канал передачи данных и другие функции.
Для «продвинутых» пользователей открыты исходные коды прошивки, можно оценить логику работы устройства на уровне кода, внести изменения и экспериментировать. Со стороны облачной платформы доступны инструменты для обработки данных: виджеты, панели управления, инструменты «Интеграции», позволяющие принять данные в любом формате в протоколах UDP, TCP и Non-IP. Инструмент «Конвертер данных» позволяют привести получаемый поток данных к виду понятному платформе.
Несмотря на критическое отношение части профессионалов к Ардуино, которые указывают на неоптимальный код и на то, что библиотеки написаны не профессиональными разработчиками, мы изначально хотели сделать 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 Андрей Плавич

Кому это надо?
Когда мы начали разворачивать сеть 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 Андрей Плавич