Для управления и контроля состояния удалённых объектов современные технологии предлагают не так уж много приемлемых решений. Если же они расположены в труднодоступной местности, вдали от кабельных сетей и прочих благ цивилизации, то единственной разумной альтернативой в недорогом исполнении становится применение GSM-модемов. Именно на них и остановился выбор автора, когда возникла необходимость перехода на беспроводные средства связи. К явным преимуществам GSM-сетей нужно отнести их повсеместное распространение, простой доступ к ним, сравнительно небольшие затраты на аппаратную реализацию приборов связи и последующее поддержание их в жизнеспособном состоянии. Сразу хочется отметить, что все отношения с оператором сотовой связи при использовании GPRS-соединения сводятся к покупке сим-карты и внесении на счёт средств достаточных для активации услуги и оплаты трафика.
Выбор конкретной модели GSM-модуля определяется требованиями к разрабатываемому устройству, в моём случае это были: устойчивость к пониженным температурам; наличие в системе информации о точном времени (GPS-приёмник в составе модуля); невысокая стоимость; минимум внешних компонентов поддерживающих работу модуля.
Всем указанным параметрам отвечает GSM-модуль GM862-GPS с интегрированным GPS-приёмником производства компании Telit.
На данный момент уже трёхлетняя практика эксплуатации модема показала, что он одинаково хорошо чувствует себя и в условиях умеренного климата и в сибирских морозах. GM862 не нуждается в отдельном держателе для сим-карты; она устанавливается в держатель, расположенный внутри корпуса модуля. Однако, если это необходимо, внешний держатель может быть использован, сигналы для его подключения выведены на интерфейсный разъем. Для модуля необходимо обеспечить: питающее напряжение 3,8В (средне 150мА, в пиках до 2А), подключение GSM и GPS-антенн.
Дальнейший материал статьи описывает этапы, которые проходит модем и программа микроконтроллера с момента подачи питания до момента успешного соединения с удалённым севером и начала обмена данными в GPRS-канале. А именно: включение модуля, инициализация настроек; контроль процесса регистрации модема в GSM-сети; активация PDP контекста (типа протокола, точки доступа в Интернет); передача данных о правах доступа к GPRS (имя, пароль); контроль за входом в GPRS; соединение с удалённым узлом в Интернет по заданному IP-адресу и номеру порта; обмен данными.
Перед установкой sim-карты в модуль с помощью сотового телефона необходимо отменить запрос на ввод PIN-кода. Для снижения стоимости передачи данных желательно выбрать тарифный план, ориентированный на преимущественное использование GPRS, в таких тарифах стоимость обмена данными снижена за счёт увеличения стоимости голосовых услуг.
С момента включения и до начала обмена данными с удалённым узлом сети модем находится в AT-режиме. Это режим, при котором общение с модемом осуществляется с помощью определённого производителем набора команд, весь перечень AT-команд GM862 подробно описан в документе AT_Commands_Reference_Guide. Передача команд и приём ответов осуществляется по шине UART на скорости 115,2 kbps по умолчанию. AT-команда состоит из ASCII-кодов латинских символов и завершается символом возврата каретки <CR> (значение 0x0D, последовательность \r в Си). Важное замечание: обмен по шине полудуплексный, т. е. отправлять команду модулю можно только после принятия от него последнего байта ответа, в противном случае переданная команда будет проигнорирована.
Всю последовательность применяемых AT-команд в программе на Си удобно расположить в двумерном массиве, в порядке их отправки модему:
unsigned char AT_CMD[N][45] = { {"ATE0\r"}, // Отменить командное эхо; {"ATV0\r"}, // Цифровой формат ответа; {"AT#DSTO=5\r"}, // Таймаут по пересылке данных; … }; При этом переход к следующей команде будет осуществляться простым инкрементом номера строки в массиве. Для общего управления ходом выполнения программы удобно ввести признак текущего состояния обмена, который будет наращиваться при успешном завершении очередного этапа связи.
Для контроля над процессом соединения удобно выделять лимиты времени на успешное завершение очередного этапа работы, запуская таймер при отправке очередной команды и отслеживая (по истечении выделенного лимита) получен ли удовлетворительный ответ от модема. Таким образом, можно назначать таймаут на успешную регистрацию модема в GSM-сети, на вход в GPRS-канал и так далее и в случае ошибки сбрасывать признак текущего состояния обмена до начального значения.
Просматривать команды и ответы модуля можно, используя COM-порт ПК, преобразователь уровней 3.3V-RS232 и любую программу для его мониторинга (например «Hercules», скачать можно здесь.
Внешние подключения модуля, используемые в приложении, изображены на рисунке, к ним относятся:
- выводы питания: pin 1, 3, 5, 7 – 3.8V; pin 2, 4 – «общий»; - передача команд управления встроенному контроллеру GPS (RX_GPS, pin 41, input); - приём gps-сообщений от модуля (TX_GPS, pin 35, output); - передача данных непосредственно модулю (TXD, pin 20, input); - приём данных от модуля (RXD, pin 37, output); - сигнал модемного интерфейса RTS "Запрос на передачу” (pin 45, input). При отсутствии аппаратного управления потоком данных согласно DataSheet должен быть соединён с «общим»; - включение и выключение модуля (ON_OFF, pin 17, input), притянут встроенным резистором 47 кОм к «питанию», управляется через цифровой транзистор BCR148W; - вывод светодиодной индикации состояния модема (STAT_LED, pin 39, output); - вывод для контроля состояния питания модуля (PWRMON, pin 21, output); - вход экстренного выключения модуля (RESET, pin 23, output).
Выводы управления GPRS-потоком, как и остальные не указанные в списке, в устройстве не использовались. Подробнее об аппаратной части модуля GM862-GPS смотрите файл GM862-GPS_Hardware_User_Guide.
|