Осваиваем GSM/GPRS-модули SIMCom.
Практические рекомендации
Как задавать настройки модуля и объединять ввод одновременно нескольких АТ-команд?
Команды, которые могут быть поданы модулю SIMCom, подразделяются на три типа:
- базовые (вида AT<x><y> либо AT&<x><y>);
- с параметром (имеют синтаксис ATS<x>=<y>);
- расширенные(AT+<x>, AT+<x>?, AT+<x>=?, AT+<x>=<…>).
При первичном включении устройства с использованием GSM-модема SIMCom необходимо задать его основные настройки: скорость работы UART, параметры отображения echo (от англ. echo — эхо), режим энергосбережения и т. п. Список команд может быть достаточно внушительным, поэтому возникает желание сэкономить время, не подавая команды поотдельности и не дожидаясь ответа модуля на каждую из них.
В одной строке можно подать сразу несколько команд. При этом нужно придерживаться правил:
- Строка должна начинаться с AT, между командами префикс AT не вводится.
- Базовые команды и команды с параметром далее вводятся подряд без разделителя.
- Расширенные команды вводятся с разделителем ‘;’.
- Максимальный размер буфера под строку и управляющий символ <CR> ограничен 556 символами.
Рассмотрим достаточно простой пример. Допустим, нам нужно подать на модуль при его настройке следующие команды:
- ATE0 // выключить отображение эхо.
- AT&D0 // отключить реакцию на смену уровня входа DTR.
- ATS0=2 // включить автоматический ответ на входящий вызов через два звонка.
- AT+IPR=115200 // установить фиксированную скорость UART.
- AT+CMGF=1 // задать текстовый формат работы с SMS.
- AT&W // сохранить соответствующие настройки.
Вместо этих семи команд, применив допустимый для модулей формат, можно подать строку:
ATE0&D0S0=2;+IPR=115200;+CMGF=1;&W<CR>
Данный синтаксис допустим при использовании и других команд, однако некоторые из них вследствие объективных причин могут выполняться в течение довольно продолжительного времени, поэтому необходимо дожидаться завершения их выполнения. Например, если подать модулю команду
AT+CIICR;+CIPSTART="TCP","116.228.221.51","8500"
то он ответит ошибкой, так как до старта попытки выполнить команду CIPSTART он не успеет получить IP-адрес от оператора сотовой сети.
Как обеспечить корректную работу программы модема при всевозможных сценариях?
На стабильность работы GSM-модема может влиять огромное количество факторов, в том числе и не зависящих от его функционирования, в частности скорость обработки запросов на стороне оператора сотовой связи. Поэтому мы настоятельно рекомендуем при разработке устройства предусмотреть возможность подключения к отладочному порту модуля. Это позволит при возникновении проблем получить логи с модема и отправить для анализа в SIMCom.
У модулей SIMCom серии 900 для этого предназначен дополнительный DEBUG UART-порт (рис. 1), а у модулей серии 800 — USB-порт (рис. 2).
Кроме того, через отладочные порты можно производить обновление внутреннего ПО модуля.
Как правильно установить TCP(UDP)-подключение и отправить данные на сервер?
Упрощенный алгоритм данного действия выглядит следующим образом:
- AT+CREG? // по ответу выясняем, зарегистрированы ли мы в сети.
- AT+CGATT? //проверяем, имеется ли подключение к услуге GPRS.
- AT+CGATT=1 // при необходимости подключаемся к GPRS и обязательно дожидаемся ответа OK от модуля.
- AT+CSTT=»internet.ru»,»usr»,»pwd» // задаем точку доступа, логин и пароль и поднимаем соединение.
- AT+CIICR // отправляем запрос на получение IP и обязательно дожидаемся ответа OK от модуля. Это и будет признаком того, что получили IP у провайдера.
- AT+CIFSR // запрашиваем собственный IP. Убеждаемся, что он получен.
- AT+CIPSTART=»TCP»,»11.222.33.44″,»555″ //происходит установка TCP-соединения с сервером с IP “11.222.33.44” на порту 555; в случае если соединение было успешно установлено, в ответ получаем OK и CONNECT OK.
- AT+CIPSEND=6 //собираемся передать на сервер ровно 6 байт данных. Получаем от модуля приглашение в виде символа ‘>’.
- Hello! // отправляем данные и обязательно дожидаемся от модуля ответа SEND OK.
- AT+CIPSHUT //завершаем сессию, попутно закрывая открытые соединения.
- AT+CGATT=0 // подаем эту команду, если хотим деактивировать подключение к GPRS.
Вообще, при работе с TCP(UDP)/IP правильным решением может быть организация FSM (finite state machine) на управляющем устройстве по состояниям, возвращаемым модулем на запросы состояния AT+CGATT? и AT+CIPSTATUS?, как показано на рис. 3 и 4 для режимов single connection и multi connection соответственно.
Что такое SAPBR и чем отличается работа с IP-приложениями при его использовании?
Команда AT+SAPBR используется для настройки и активации контента в случае применения встроенных протоколов, таких как SMPT, POP3, MMS, HTTP и FTP. Это позволяет упростить задачу программиста по разработке IP-приложений.
Пример записи текстового файла на FTP-сервер:
- AT+SAPBR=3,1,»CONTYPE»,»GPRS»;+SAPBR=3,1,»APN»,»internet.ru»;+SAPBR=3,1,»USER»,»usr»;+SAPBR=3,1,»PWD»,»pwd»;+SAPBR=1,1 // задаем точку доступа, указываем имя пользователя и пароль, поднимаем GPRS-соединение. Дожидаемся OK как признака успешного получения IP.
- AT+FTPCID=1 // указываем, что будем работать с профилем №1.
- AT+FTPSERV=»12.34.56.78″;+FTPUN=»xxx»;+FTPPW=»xxx»;+FTPGETPATH=»/» // задаем параметры подключения к серверу.
- AT+FTPPUTNAME=»my file.txt» // отправляем запрос на создание файла.
- AT+FTPPUT=1 // в ответ дожидаемся +FTPPUT:1,1,1280 — сервер готов принимать данные.
- AT+FTPPUT=2,6 // запишем 6 байт.
- Hello! // содержимое, которое будет записано в файл my file.txt.
- AT+FTPPUT=2,0 // больше данных не будет, закрываем сессию
- AT+SAPBR=0,1 // деактивируем контекст.
При использовании протоколов HTTP и FTP не нужно задавать параметры подключения командой AT+CSTT и поднимать соединение командой AT+CIICR.
Все ли команды и настройки модемов перечислены в документах типа «AT-command manual»?
Чтобы упростить изложение алгоритмов работы модулей в рамках той или иной функциональности, компания SIMCom выпускает специальную документацию (Application Notes) с примерами двустороннего обмена командами между модулем сотовой связи и MCU.
Например, для модулей SIMCom серии 900 существует линейка стандартных прошивок и ENHANCE-прошивок (с расширенной функциональностью). Команды и настройки, доступные только в прошивках с расширенной функциональностью, вынесены в отдельную документацию. Список дополнительных ENHANCE-функций, который может варьироваться в зависимости от конкретной версии ПО, приведен ниже:
- запись аудиотреков и воспроизведение их в динамик или в сторону удаленного абонента;
- User memory — встроенная память для пользовательских данных;
- встроенный протокол FTP и HTTP, HTTPS;
- Cell Location — определение координат без GPS по базовым станциям;
- SMS Autorun — управление модулем с помощью SMS-сообщений;
- Jamming Detection — обнаружение факта глушения;
- декодирование и формирование DTMF-тонов;
- eMail — формирование, отправка и прием электронных писем посредством АТ-команд;
- работа с eMail-серверами, требующими авторизацию с использованием SSL;
- MMS — формирование и отправка с помощью АТ-команд;
- Easy Scan — получение информации об окружающих базовых станциях без подключения SIM-карты;
- PING — проверка доступности адреса в Интернете посредством обмена ICMP-пакетами.
Документацию по дополнительному функционалу вы можете запросить по адресу wireless@mt-system.ru.
Как получить данные о текущей версии ПО модуля?
Текущую ревизию программного обеспечения GSM/GPRS-модуля можно получить по ответу на команды AT+GMR, AT+CGMR и AT+GSV.
Запрос — AT+GMR
Ответ — Revision:1137B02SIM900R64_ST_ENHANCE_EAT
Ответ включает в себя:
- 1137 — идентификатор семейства модулей; в данном случае модуль относится к серии 900.
- B02 — номер текущей прошивки в данной ветке прошивок.
- SIM900R64 — аппаратную модификацию модуля; это модуль SIM900R с 64-Мбит flash-памятью.
- ST — производителя flash-памяти, использованной в данном модуле.
- ENHANCE — прошивку с поддержкой расширенной функциональности.
- EAT — прошивку с поддержкой технологии Embedded AT.
Как получить и поддерживать данные о текущем времени с помощью GSM/GPRS-модуля?
Существует несколько способов получить данные о времени:
- Обновление времени RTC при регистрации в сети можно включить командой AT+CLTS=1.
Далее нужно перезагрузить модуль либо перерегистрироваться в сети, подав последовательность команд AT+CFUN=0 и AT+CFUN=1. При регистрации в сети появится новое URC-сообщение вида
*PSUTTZ:<year>,<month>,<day>,<hour>,<min>,<sec>,"<time zone>",<dst>.
Затем значение текущей даты и времени можно запросить у модуля командой AT+CCLK.
- Чтобы получить время по протоколу NTP, можно воспользоваться командами:
AT+SAPBR=3,1,»CONTYPE»,»GPRS»;+SAPBR=3,1,»APN»,»internet.ru»;+SAPBR=3,1,»USER»,»usr»;+SAPBR=3,1,»PWD»,»pwd»;+SAPBR=1,1 // задаем точку доступа, указываем имя пользователя и пароль, поднимаем GPRS-соединение и дожидаемся OK как признака успешного получения IP.
AT+CNTP=»pool.ntp.org»,4,1 // указываем адрес NTP-сервера, текущий часовой пояс и номер профиля, который будет использоваться при запросе.
AT+CNTP // запрашиваем время с сервера. Если в команде AT+CNTP добавить четвертый параметр =2, то при запросе также будут обновлены данные часов реального времени.
- Можно получить информацию о времени с собственного сервера, например по каналу GPRS, и установить текущие показания часов реального времени с помощью команды AT+CCLK=»yy/MM/dd,hh:mm:ss+zz».
Чтобы поддерживать работу часов реального времени, нужно поддерживать питание RTC-домена, когда с модуля будет снято основное питание. Для этого можно обеспечить подачу питания на вход VRTC от конденсатора достаточной емкости либо от батареи/аккумулятора.
Выводы
Таким образом, применительно к модулям компании SIMCom Wireless Solutions может быть в значительной степени оптимизирован исполняемый управляющий программный код, что обеспечит более быстрое включение и настройку модулей. В целом это приводит к тому, что программный код функционирует более корректно и эффективно.
Кроме того, правильное понимание алгоритмов функционирования модулей SIMCom и, следовательно, корректная организация последовательности подаваемых на модуль команд при его взаимодействии с внешними устройствами позволяют избежать характерных ошибок, возникающих при разработке устройств.
Чтобы получить дополнительную документацию по продукции SIMCom Wireless Solutions и информацию о ней, следует обратиться в офисы «МТ-Систем» либо отправить запрос на wireless@mt-system.ru.
Здравствуйте. Как максимально подавить эхо в разговорном тракте sim800?