SIM7020E:
работа с NB-IoT на практике
Введение
Компания SIMCom Wireless Solutions, мировой лидер в области модулей сотовой связи и навигации, предлагает ряд решений для данного стандарта. Одно из них — модуль SIM7020E (рис. 1), обзор которого был приведен в ранее вышедшей статье [1]. Компактный корпус 15,7×17,6 мм, пониженный диапазон питающих напряжений 2,1–3,6 В (потребление в режиме PSM составляет 5 мкА), поддержка различных частотных диапазонов, а также возможность написания пользовательских приложений предусматривают на его базе реализацию малогабаритных, бюджетных и энергоэффективных устройств. При работе в сетях данного стандарта есть ряд особенностей в части алгоритма АТ-команд, которые отличают данные решения от модулей стандарта GSM. В статье приведен обзор наиболее типичного алгоритма применения NB-IoT модуля — регистрация в сети NB-IoT, выход в сеть и обмен данными по протоколам TCP и UDP.
Активация контекста и регистрация в сети
Первый этап работы — регистрация в сети и активация контекста для обеспечения передачи данных. Для успешной регистрации в сети NB-IoT-модулю требуется знать APN. Следует иметь в виду, что APN для регистрации в сети и активации контекста могут различаться. В общем случае APN для регистрации берется модулем из SIM-карты или таблицы операторов внутри прошивки. Исходя из этого инициализация выглядит следующим образом [2, 3]:
AT+CPIN? //проверка готовности SIM-карты +CPIN: READY //готова OK AT+CSQ //запрос уровня сигнала +CSQ:22,0 OK AT+CGREG? //Наличие регистрации в сети оператора +CGREG: 0,1 OK AT+CGACT? //проверка активации контекста +CGACT:1,1 //контекст активирован автоматически OK AT+COPS? //запрос информации об операторе +COPS: 0,0,”oper_name”,9 // oper_name — указание на оператора, 9 — стандарт NB-IoT OK AT+CGCONTTRDP // APN и IP-адрес в сети +CGCONTTRDP: 1,5,”context_apn”,”xxx.xxx.xxx.xxx” //успешно получен IP OK
Если по какой-то причине информация об APN в модуле отсутствует (на SIM-карте и в памяти) и модуль не может зарегистрироваться в сети (+CGREG: 0,0), его необходимо задать вручную (проверить его наличие можно командой AT*MCGDEFCONT?):
AT+CFUN=0 //отключение ВЧ-части +CPIN: NOT READY OK AT*MCGDEFCONT=”IP”,”APN_REG” //заданиеAPN OK AT+CFUN=1 //включение ВЧ-части OK AT+CGREG? //Наличие регистрации в сети оператора +CGREG: 0,1 OK Для деактивации контекста и прекращения работы необходимо реализовать следующий алгоритм: AT+CGACT=0,1 //деактивируем контекст #1 OK AT+CGACT? //Запрос статуса +CGACT:1,0 //деактивировано OK AT+CGCONTRDP // APN и IP-адрес в сети OK //ответ ОК указывает, что IP модулю не присвоен и взаимодействие с сетью прекращено
Работа с TCP-стеком модуля
SIM7020E поддерживает работу в качестве TCP-клиента как в прозрачном, так и непрозрачном режимах. Модуль позволяет обмениваться данными одновременно по нескольким сокетам (до пяти) по протоколам TCP и/или UDP.
Алгоритм взаимодействия с модулем при работе в непрозрачном режиме следующий:
AT+CSOC=1,1,1 //создаем первый сокет: 1 — IPv4, 1 — TCP, 1 — IP +CSOC:0 //id сокета OK AT+CSOC=1,2,1 //создаем второй сокет: 1 — IPv4, 2 — UDP, 1 — IP +CSOC:1 //id сокета OK AT+CSOSENDFLAG=1 //выдавать подтверждение отправки OK AT+CSOCON=0,xxxx,”yyy.yyy.yyy.yyy” //соединение с TCP-сервером: xxxx — порт, “…” — IP-адрес OK AT+CSOCON=1,zzzz,”yyy.yyy.yyy.yyy” //соединение с UDP-сервером: zzzz — порт, “…” — IP-адрес OK AT+CSOSEND=0, 0, ”Hello” //отправка данных на TCP-сервер: 0 — id сокета, 0 — размер передаваемых данных (требуется только для передачи Hex/ASCII), “…” — данные OK SEND:0,5 //5 байт успешно отправлены через нулевой сокет +CSONMI:0,5,48656c6c6f //получены данные с удаленной стороны: 0 — id сокета, 5 — размер, данные AT+CSOSEND=1, 10, ”48656c6c6f” //отправка данных на UDP-сервер: 0 — id сокета, 10 — размер передаваемых данных), “…” — данные OK SEND:1,5 //5 байт успешно отправлены через первый сокет AT+CSOCL=0 //закрываем нулевой сокет (TCP) OK AT+CSOCL=1 //Закрываем первый сокет (UDP) OK
Итоговый алгоритм работы со встроенным TCP/UDP-стеком модуля в виде блок-схемы представлен на рис. 2.
Наряду с TCP, UDP, а также HTTP-протоколами, которые являются довольно громоздкими, в модуле предусмотрен ряд специализированных, предназначенных для IoT-решений. Это LWM2M, CoAP и MQTT. Их основные особенности и преимущества рассмотрены в [1]. Все они реализованы внутри SIM7020E, алгоритм работы с ними приведен в [4].
Заключение
Несмотря на отличия при работе в NB-IoT, принципиально модуль должен пройти все те же стадии, что и в GSM: регистрацию в сети, активацию контекста и организацию подключения. Главной особенностью сетей NB являются режимы энергосбережения eDRX и PSM — их применение рассматривалось в статье [5]. Текущий функционал модуля позволяет интегрировать его в любую М2М-разработку, где требуется компактное, энергоэффективное, бюджетное и функциональное решение, способное реализовать широкий круг задач. Все это делает SIM7020E оптимальным для применения в качестве устройства передачи данных счетчиков, систем телеметрии, промышленных модемов, датчиков и других устройств.
- Новинский Д. SIM7020E: NB-IoT-модуль в знакомом форм-факторе // Беспроводные технологии. 2018. № 1.
- SIM7020 Series AT Command Manual.
- SIM7020 Series TCPIP Application Note.
- SIM7020 Series MQTT (LWM2M/COAP/HTTP) Application Note.
- Батуев Б. SIM7000E/SIM7000E-N: применение энергосберегающих режимов PSM и eDRX в сети NB-IoT // Беспроводные технологии. 2017. № 2.