GSM/GPRS-модуль SIM800

Осваиваем GSM/GPRS-модули SIMCom.
Практические рекомендации

№ 4’2014
PDF версия
Статья ориентирована в первую очередь на тех, кто только начинает работать с модулями сотовой связи компании SIMC om Wireless Solutions, а также она может быть полезна и опытным разработчикам, поскольку раскрывает некоторые не всегда очевидные аспекты их работы. Для большей наглядности информация представлена в форме ответов на вопросы.

Как задавать настройки модуля и объединять ввод одновременно нескольких АТ-команд?

Команды, которые могут быть поданы модулю 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.

Pin out diagram модуля SIM900

Рис. 1. Pin out diagram модуля SIM900

У модулей SIMCom серии 900 для этого предназначен дополнительный DEBUG UART-порт (рис. 1), а у модулей серии 800 — USB-порт (рис. 2).

Pin out diagram модуля SIM800

Рис. 2. Pin out diagram модуля SIM800

Кроме того, через отладочные порты можно производить обновление внутреннего ПО модуля.

 

Как правильно установить 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.
Возможные состояния в режиме single connection

Рис. 3. Возможные состояния в режиме single connection

Вообще, при работе с TCP(UDP)/IP правильным решением может быть организация FSM (finite state machine) на управляющем устройстве по состояниям, возвращаемым модулем на запросы состояния AT+CGATT? и AT+CIPSTATUS?, как показано на рис. 3 и 4 для режимов single connection и multi connection соответственно.

Возможные состояния в режиме multi connection

Рис. 4. Возможные состояния в режиме 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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *