Модули A-серии от SIMCom Wireless Solutions: обзор возможностей и создание пользовательских приложений
LTE без 3G
Основные характеристики указанных решений приведены в таблице. Первое, что бросается в глаза, — наличие только технологии LTE и связанных с GSM частот, то есть отсутствие 3G. Обусловлено это двумя факторами.
|
A7670E |
A7600E |
|
||
Поддерживаемые технологии и частоты |
LTE-FDD: B1/B3/B5/B7/B8/B20 |
|
LTE-TDD: – |
LTE-TDD: B38/B40/B41 |
|
GSM/GPRS/EDGE: 900/1800 МГц |
||
Корпус |
24×24 мм QFN |
30×30 мм LCC |
Напряжение питания |
3,4–4,2 В |
|
Рабочий диапазон температур |
–40…+85 °С |
|
Напряжение логических выводов |
1,8 В |
|
Пропускная способность |
LTE Cat.1 DL/UL 10/5 Мбит/c |
|
Интерфейсы управления |
UART (до 3,6 Мбит/c), USB (комбинация устройств: АТ-порт, модемный, диагностический, RNDIS) |
|
Прочие интерфейсы |
USIM, UART, I2C, ADC |
USIM, SPI, UART Debug, I2C, SDIO, GPIO, ADC |
Аудиоинтерфейс |
PCM |
|
Обновление ПО модуля |
USB или FOTA (по воздуху) |
|
Совместимые решения |
SIM800/SIM800F (GSM) SIM5300E (3G) SIM7060R/G (NB-IoT) SIM7070E/G (NB-IoT) |
SIM5320E/SIM5360E (3G) SIM7600E/E-L1C (LTE Cat. 1) SIM7600E-H / E-H1C (LTE Cat. 4) |
Прочее |
SMS, DTMF, голосовые вызовы (обычные и VoLTE) |
Первый — актуальность 3G как технологии. Заняв промежуточное положение между GSM и LTE, сейчас технология уже мало интересует consumer-рынок (мобильные телефоны), а следовательно, и производителей чипсетов, что справедливо и для операторов сотовой связи, поскольку большинство их абонентов мигрируют в 4G. Общая тенденция такова, что покрытие сетей 3G деградирует, и в итоге они будут сворачиваться. Это подтверждают примеры США и Северной Европы.
Во-вторых, отсутствие 3G позволило реализовать модуль в компактном корпусе (речь о A7670E). В каждом из решений используются две ключевые для сотовой связи технологии: GSM, которая, несмотря на утрату актуальности, все равно остается сегодня наиболее распространенной сетью, и как основная — LTE, которая в будущем станет основной технологией, поскольку на ее базе возможно организовать работу всех типов абонентского оборудования, как с точки зрения скорости, так и принципов работы. Это единственная на текущий момент сеть, покрытие которой только расширяется.
Что это значит для пользователя? Уверенность в том, что данное решение будет работать в каждой точке, где есть покрытие сети (GSM или LTE имеется на любой базовой станции), а также актуальность в обозримом будущем, ведь пока альтернатив LTE не существует.
Оба решения выполнены на одной и той же аппаратной платформе, и в целом их возможности и характеристики совпадают. Но есть и ряд отличий.
Первое — отсутствие диапазона LTE-TDD в A7670E. Для каких-то применений это может стать ограничением (скажем, если данные частоты требуются по ТЗ), но для фактической работы это не столь критично, так как данные частоты не являются образующими покрытие, в отличие от частот LTE-FDD.
Второе отличие — разница в форм-факторах, следствием чего становятся доступные пользователю интерфейсы, а также совместимые решения. Модуль A7670E выполнен в компактном корпусе 24×24 мм QFN. Это позволяет организовать общее посадочное место для модулей GSM, 3G и NB-IoT [3] с таким же форм-фактором. Решение совместимо с ними в части основных АТ-команд и по всем ключевым выводам. При создании совместимого дизайна с GSM-модулями SIM800x необходимо учесть разницу в логических уровнях: 2,8 В против 1,8 В у всех остальных; но это легко решить применением буферной микросхемы с опорным напряжением от вывода VDD_EXT модуля.
В свою очередь, A7600E выполнен в традиционном для 3G и LTE SIMCom Wireless Solutions форм-факторе 30×30 мм с торцевыми контактами. Это делает его полностью совместимым с актуальными LTE-решениями линейки SIM7600x [4] как по посадочному месту, так и по АТ-командам. Несмотря на полную совместимость, у него есть отличия в плане использования хостом в режиме RNDIS, этот момент будет дополнительно рассмотрен далее.
Программная часть
Модуль унаследовал стеки и протоколы от модулей линейки SIM7500x и SIM7600x, то есть при переходе с этих решений никаких изменений в программную часть вносить не потребуется. Между модулями A7670E и A7600E также нет различий с точки зрения программной части. На текущий момент в модуле доступны:
- TCP и UDP: клиент/сервер; прозрачный/непрозрачный режим;
- FTP-клиент; скачивание/выгрузка файлов;
- HTTP-клиент;
- MQTT-клиент; издатель/подписчик;
- SSL-шифрование для всех указанных выше протоколов, поддержка сертификатов;
- LBS — получение времени и координат по БС;
- проигрывание аудиофайлов;
- CMUX;
- FOTA;
- NTP;
- сканирование Wi-Fi.
Также присутствуют и стандартные возможности: PPP, голосовые вызовы, VoLTE, СМС и т. д. Обновить ПО можно через USB или по воздуху (FOTA): в модуль скачивается разностный файл, подается команда на выполнение обновления, после окончания модуль перезагружается и готов к работе с новым ПО внутри.
Наряду с традиционным подключением по UART модули данного класса нередко подсоединяют к хосту по USB. Это помогает обойти скоростные ограничения, накладываемые UART (не более 3,6 Мбит/c), использовать модуль в режиме сетевой карты (RNDIS), а также позволяет обойтись без CMUX (передачу данных и АТ-команды можно разнести по разным виртуальным портам/устройствам).
При подключении к USB модуль определяется как составное устройство, содержащее комбинацию, показанную на рис. 1 (пример для Windows).
Назначение портов следующее:
- SimTech HS-USB AT Port 9011 — порт для подачи АТ-команд;
- SimTech HS-USB Modem 9011 — модемный порт; в Linux он определяется просто как еще один COM-порт. Поднять PPP-соединение по USB можно только через него;
- SimTech HS-USB Diagnostics 9011 — порт, предназначенный для снятия диагностической информации, а также обновления ПО;
- Remote NDIS based Internet Sharing Device — RNDIS-устройство, в Linux определяется как USB-адаптер.
Поднятие соединения через PPP — стандартная задача, для указанных решений разницы с другими модулями сотовой связи нет. А вот при использовании с адаптером в режиме RNDIS есть особенности и потребуется подать ряд команд для работы:
AT+CPIN? +CPIN: READY //проверка готовности сим-карты OK AT+CGREG? +CGREG: 0,1 //проверка регистрации в сети передачи пакетных данных OK AT+CGDCONT=1, «IP»,»internet» //задаем APN, при наличии USER/PWD — дополнительно задать через команду AT+CGAUTH OK AT+DIALMODE=0 //активируем автоподнятие соединения, параметр сохраняется при перезагрузках OK AT+CGCONTRDP +CGCONTRDP: 1,5,»internet «,»100.69.189.13»,»»,»10.78.83.245»,»10.78.62.245»,»»,»»,0,0 OK //проверка, что IP получен и можно продолжать работу
После выполнения этих команд модуль готов к передаче данных. В случае Windows требуется активировать адаптер (если был включен, то выключить и включить снова). Для Linux — подать:
udhcpc -I usb0
Обозначение адаптера может иметь другой номер — это зависит от конфигурации оборудования в системе. Затем хост получает IP и выход в сеть.
С точки зрения скорости для данных модулей не должно быть отличий в PPP и RNDIS, поскольку в первом случае максимальные скорости будут заведомо меньше предельных для протокола (~20 Мбит/c), а во втором, где модуль выступает в роли своеобразного роутера, мощностей внутри вполне достаточно для обработки потока в 10 и 5 Мбит/c на скачивание и выгрузку соответственно. Что и подтверждается тестами в реальных сетях.
Особо отмечу, что для Windows требуются специальные драйверы — их можно получить через дистрибьютора («МТ-Системс»). Для Linux, в общем случае, специальных драйверов не требуется, модуль автоматически распознается как составное устройство: три COM-порта и одно RNDIS-устройство.
Сканирование Wi-Fi-сетей
Уникальной возможностью модулей, которая была упомянута выше, является сканирование точек доступа Wi-Fi. Данная возможность в первую очередь нужна для так называемой Wi-Fi Location, когда видимые точки доступа с известными координатами и уровень сигнала от них используются для определения положения самого устройства.
Для работы данного функционала в модуле должно быть актуальное ПО, а также сотовая антенна, в которой присутствует диапазон B40 (2300 МГц). Собственно, от качества работы на этих частотах и будет зависеть качество сканирования. Если все условия выполнены, то далее все сводится к последовательности команд:
AT+CWSTASCAN=1 OK AT+CWSTASCAN? +CWSTASCAN: 1 OK AT+CWSTASCAN +CWSTASCAN: f4:83:cd:d8:24:c8,Uno,-52 80:89:17:10:e6:23,Dos,-58 14:2d:27:24:98:61,Tres,-58 ... OK
Как видно из лога, модуль возвращает связку MAC, отображаемого имени и уровня сигнала. Непосредственное местоположение модуль не возвращает, но эти данные могут быть использованы или в сочетании со сторонними БД (содержащими информацию по положению точек доступа) или для indoor-навигации, когда положение Wi-Fi-точек заведомо известно.
Написание пользовательских приложений
Как и многие другие модули SIMCom Wireless Solutions, A7600E и A7670E поддерживают возможность написания пользовательских приложений, которые выполняются в RTOS модуля. В случае А-серии технология называется OpenSDK. Как и прежде, алгоритм работы следующий: пользовательская программа компилируется, сформированный файл помещается в файловую систему модуля (при необходимости заливается специальное ПО для работы с OpenSDK), при следующем запуске модуль начинает выполнение программы. Разумеется, при взаимодействии со средой разработки есть ряд особенностей, поэтому далее рассмотрим состав SDK, процесс компиляции, заливки и отладки пользовательских приложений.
Ниже будет описан SDK, который имеется на текущий момент, со временем его состав может меняться, обрастая новым функционалом и возможностями. Для получения актуального SDK обращайтесь с запросом напрямую к дистрибьютору («МТ-Системс»).
Архив с SDK состоит из следующих каталогов:
- DOC — документация: описание API, структуры SDK, доступные ресурсы, описание процесса компиляции, процедур заливки ПО и дебага, разбор демопримера;
- DRIVERS — драйверы для USB и UART;
- OPEN SDK — непосредственно сам SDK;
- TOOLS — утилиты для дебага и заливки ПО в модуль.
Доступные пользователю функции и их описание содержатся в APIs Programming User Guide: функции работы с ОС (таски, семафоры, мьютекс и т. д.), периферией (GPIO, UART, SPI и т. д.), работы с сетью (статусы, звонки и смс), а также для абсолютно всех стеков и протоколов указанные ранее (TCP, FTP, SSL и т. д.). Отмечу, что в случае стеков речь идет именно об API-функциях. Тем не менее есть возможность обработки АТ-команд с помощью виртуального UART внутри приложения, если это требуется.
Сам SDK также состоит из нескольких каталогов:
- sc_app — директория с исполняемым файлом и самой программой:
- файл makefile.mk — задает каталог(и) для компиляции. По умолчанию там указаны каталоги application и demo для сборки примера all-in-one;
- simcom_application — all-in-one-пример, компилируется по умолчанию;
- simcom_demo — демофайлы с примерами: периферия, работа с системой, внутренней памятью, стеками, протоколами и т. д.;
- simcom_lib — библиотеки.
- sc_config — файлы, необходимые для сборки.
- sc_sdk_images — образы прошивок для различных модулей A-серии (которые используются при сборке).
- sc_tool — инструменты для работы с компилятором (используется GCC); при условии сборки из командной строки (как будет показано ниже) никаких действий от пользователя по настройке не требуется.
Поскольку по умолчанию собирается общий демопроект, в данном случае мы не будем вносить изменения в make и соберем все в исходном виде. Простейшим способом компиляции проекта является командная строка (но при желании работу с SDK можно перевести в Eclipse или прочие редакторы) — для этого необходимо перейти в каталог с SDK и запустить build.bat с нужными параметрами. Синтаксис выглядит следующим образом:
bulid.bat<module><part> [option] <module> - модуль, для которого предназначена сборка “A7600E_LNSE” или “A7670E” <part> — “all” (полная сборка), “image” (ПО), “app” (пользовательский код) и “clean” (для очистки) [option] — может использоваться вместе с part с указанием “clean”
Важный момент: для сборки образа на ПК должен быть установлен Python версии 3.8.5 или более поздней. Как пример для A7600E:
bulid.bat A7600E_LNSE all clean //очищаем SDK bulid.bat A7600E_LNSE all //компилируем и собираем образ прошивки
В результате в корне SDK появится директория target и в ней будет два архива: SC_A7600E_LNSE_16M_A0_16MB — ПО модуля + app-часть и SC_A7600E_LNSE_16M_CUSTOMER_APP_ONLY — только app-часть. Это именно прошивки, готовые для заливки, сам пользовательский файл находится в директории build.
Сформированные на прошлом шаге архивы распаковывать не требуется. Для заливки прошивки в модуль можно воспользоваться как утилитой, идущей с SDK (работа с ней описана в Debug and Download Guide), так и стандартной утилитой для обновления ПО модуля. Общее для них одно — модуль должен быть подключен к ПК с Windows по USB. В случае если модуль с заводским ПО, необходимо выбирать архив, содержащий обе части, при последующих обновлениях достаточно заливать только app-часть.
После обновления модуль необходимо перезагрузить, затем он начинает выполнять программу. Демопрограмма от SIMCom содержит почти все примеры из директории simcom_demo и объединяет их в одном интерфейсе. Для проверки необходимо подключиться к аппаратному UART (не USB) на скорости 115 200 и отправить любой символ; в ответ будет выдано меню, показанное на рис. 2. В качестве примера продемонстрирована отправка СМС, цветом указана информация, подаваемая пользователем.
Такая разбивка на подпункты упрощает изучение демопримеров, поскольку показывает каждый шаг правильного алгоритма работы с использованием api. Следует отметить, что в данный демопример вошла только часть программ из директории simcom_demo, поэтому для полного понимания работы OpenSDK рекомендуется изучить и остальные.
Отдельно отмечу пункт 16 из демопримера — это OTA, то есть обновление по воздуху. При работе устройств «в полях» может возникнуть потребность внести изменения в код программы, без непосредственного подключения. Эту задачу поможет решить данная функция — пользовательская часть кода помещается в память модуля (сам файл может быть получен по любому из протоколов, имеющихся в модуле), после чего с помощью api проверяется целостность и начинается обновление.
Немаловажный вопрос — отладка приложения. Она производится с помощью диагностического порта модуля и утилиты CATStudio. Подробная инструкция по работе с утилитой представлена в Debug and Download Guide. Здесь же только отмечу, что при работе необходимо выбрать порт диагностики как источник информации (по умолчанию утилита может задать произвольный), указать путь к файлу БД (он находится в папке sc_sdk_images, A7600E_LNSE_16M — для A7600E) и далее отфильтровать данные, идущие от приложения, фильтром CUSTLOG. За выдачу отладочной информации в самом коде отвечает функция sAPI_Debug.
Каждый из модулей обладает различными интерфейсами, которые доступны пользователю:
- A7600E: SDCx1, USB, UART (7 pin), SPI, UART (Tx/Rx), I2C, SDIO, PCM, GPIOx15, ADCx2, CLK, LDO 3 В/400 мА, LDO 1,8 В/50 мА;
- A7670E: LDO 1,8 В/50 мА, USB, UART (7 pin), UART (Tx/Rx)x2, I2C, PCM, GPIOx10, ADC.
Если говорить о ресурсах, то для пользователя доступно несколько мегабайт Flash и RAM, но лишь часть из них может быть занята непосредственно самим приложением (речь о Flash в первую очередь). Как я писал ранее, эти цифры зависят от конкретной версии SDK и приводятся в специальном файле. Но в целом можно сказать, что не каждый функционал может быть полностью перенесен на модуль. С другой стороны, простые задачи вроде обработки данных и отправки их на сервер (телеметрия статичных и движущихся объектов, например) модуль вполне способен выполнять. Также данная технология станет хорошим подспорьем, если требуется разгрузить хост от ряда задач, для упрощения взаимодействия или удешевления устройства.
Заключение
Модули A7600E и A7670E открывают новые возможности для разработчиков М2М-устройств. Сделав их максимально доступными, SIMCom Wireless Solutions открыла возможность применения полноценных LTE-решений даже в самых массовых устройствах, где конечная стоимость является одним из важнейших факторов. Наличие двух самых актуальных на данный момент технологий — GSM и особенно LTE — позволяет забыть о необходимости модернизации устройств в ближайшей перспективе. Совместимость с популярными форм-факторами гарантирует преемственность и универсальность. Наличие среды разработки открывает новые возможности организации работы устройств.
- simcom.com
- mt-system.ru
- Новинский Д., Тучкин В. Актуальные LTE-решения SIMCom Wireless Solutions: переход на модули нового поколения // Беспроводные технологии. 2019. № 1.
- Новинский Д. Высокоскоростные LTE-решения SIMCom Wireless Solutions // Беспроводные технологии. 2020. № 1.