Включение, начальная инициализация и регистрация модема в сети
После подачи питания и запуска микроконтроллера необходимо включить модуль, удерживая вход "ON_OFF” в нулевом уровне в течение не менее одной секунды. Далее, убедившись, что вывод "PWRMON” модуля установился в состояние логической единицы, что говорит об успешном включении, можно приступить к начальной инициализации настроек модема. Данная статья не претендует на освещение всех настроек GM862, которых достаточно много. В программе применялась настройка модема под конкретное применение и разумное упрощение процесса обмена. По умолчанию модуль начинает каждый свой ответ с повтора воспринятой AT-команды, этот режим называется режимом командного эхо. Для снижения потока данных, а значит и количества прерываний в программе, имеется возможность отправки команды отмены данного режима - ATE0. После приёма команды ATE0, модем в первый и последний раз разместит в начале ответа принятую команду:
AT-команда: Ответ модема: ATE0<CR> ATE0<CR><LF>ОК<CR><LF>
Перейти к более простому (цифровому) формату ответов, при котором вместо кодовых сочетаний символов "OK”, "ERROR”, "CONNECT” и т. д. будут передаваться их числовые коды в ASCII-представлении (numeric code), можно при помощи команды ATV0. Тогда ответы модема будут выглядеть как <numeric code><CR> - в случае простого ответа, и <text><CR><LF> - в случае ответа, содержащего текстовую информацию, например, о состоянии тех или иных запрашиваемых параметров. В наборе модуля присутствует ряд команд позволяющих настроить параметры предстоящего обмена с удалённым узлом, например: - AT#DSTO=5<CR> - установить минимальное время ожидания перед отправкой данных из передающего буфера в сеть, в сотнях миллисекунд; - AT#SKTTO=0<CR> - отменить таймаут по неактивности обмена, т. е. не разрывать соединение в случае временного прекращения обмена данными. Все эти, в общем-то, необязательные команды подробно описаны в руководстве "AT Commands Reference Guide” и решение об их применении зависит от конкретной задачи стоящей перед разработчиком. В то время как мы занимаемся инициализацией параметров, модем проходит процедуру регистрации в GSM-сети. Этот процесс начинается автоматически после включения модуля и продолжается в среднем 10-15 секунд. Для контроля над ходом регистрации в сети предназначена команда AT+CREG?<CR>, ответом на которую будет строка вида: +CREG: 0,<stat><CR><LF>0<CR>; где: stat=1 – успешная регистрация в домашней GSM-сети, stat=2, нет регистрации, идёт поиск оператора. На шине обмена с модемом это выглядит следующим образом:
AT-команда: Ответ модема: AT+CREG? <CR> +CREG: 0,2<CR><LF>0<CR> AT+CREG? <CR> +CREG: 0,2<CR><LF>0<CR> AT+CREG? <CR> +CREG: 0,2<CR><LF>0<CR> … … AT+CREG? <CR> +CREG: 0,1<CR><LF>0<CR> Вход в GPRS-канал и соединение с удалённым сервером
Получив ответ об успешной регистрации модема в сети, можно приступать к активации режима GPRS. Перед очередной попыткой воспользоваться GPRS-каналом не будет лишним ещё раз удостовериться в доступности этого сервиса для используемой sim-карты при помощи сотового телефона. Для активации GPRS-соединения необходимо определить параметры, зависящие от конкретного оператора сотовой связи.
1. PDP-контекст – набор параметров, организованных в виде единой AT-команды, определяющих тип соединения и адрес точки входа в Интернет: AT+CGDCONT=1,"<PDP_type> ","<PDP_addr>"; где: <PDP_type> - тип соединения (IP), <PDP_addr> - точка входа в Интернет.
Для конкретного оператора сотовой связи значения параметров <PDP_type> и <PDP_addr> можно найти в руководстве по использованию мобильного телефона в качестве GPRS-модема на его официальном сайте, где данная AT-команда приводится как "строка инициализации модема”. При использовании оператора МТС команда в виде строковой константы языка Си будет выглядеть так:
"AT+CGDCONT=1,\"IP\",\"internet.mts.ru\"\r".
2. Имя пользователя и пароль также предаются отдельными командами AT#USERID и AT#PASSW соответственно. В программе для МТС это будут строки: "AT#USERID=\"mts\"\r" "AT#PASSW=\"mts\"\r"
Используя директивы условной компиляции языка Си, можно заложить в программу поддержку нескольких операторов связи, например при определении массива отправляемых команд:
#ifdef BeeLine {"AT+CGDCONT=1,\"IP\",\"internet.beeline.ru\"\r"}, {"AT#USERID=\"beeline\"\r"}, {"AT#PASSW=\"beeline\"\r"}, #endif
Передачу модему указанных параметров необходимо завершить командой непосредственного входа в GPRS - AT#GPRS=1. На шине UART вся процедура выглядит следующим образом: где: 170.24.90.159 – динамический IP-адрес, назначенный оператором (признак успешного входа в GPSR). Читать дальше |