Из чего состоит набор для разработчиков NB-IoT DevKit?

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

    Комментарии 4

      0
      Расскажите, почему ваш Екатеринбургский филиал так немного знает про NB-IoT (или не хочет делиться информацией)?
      Есть у меня шилд для Raspberry с модулем SIM7000E, брал на тест у ваших коллег SIM для NB-IoT в конце того года. Все что получил — только доступ к M2M-менеджеру и все.
        0
        C nbiot вообще много проблем. Когда мы закупали карты на фирму, менеджер просто впарил не те карты, хотя и закупщик и я как инженер раз по 10 уточняли что нужно именно nbiot. Склонен считать что МТСу просто не важны мелки клиенты, и это отладка не для нас.
        От себя советую билайн у них универсальные карты и gsm и nbiot, и очень удобный личный кабинет со всей нужной инфой.
          0

          Ну мы не особо мелкие. И персональный менеджер у нас есть. Просто на тот момент, видимо, до регионов сеть NB-IoT дошла, а информация про нее до отдела продаж и технарей — не особо. Ибо местные даже не в курсе были про услугу доступа к обычным сетям для iot сим карт, хотя она на сайте висела.

            0
            Вот у нас тоже был, не помогло. Впарили телематику. А мы в мск.

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое