3G-модули SIMCom: осваиваем на примерах. Часть 2
Отправка/прием мультимедийных сообщений MMS
Программное обеспечение 3G-модулей SIMCom позволяет отправлять и принимать мультимедийные сообщения (MMS), которые поддерживают все современные мобильные телефонные аппараты. MMS используют, когда возможностей простого сообщения SMS недостаточно и требуется передать удаленной стороне аудио- или видеоконтент. Получателем сообщений MMS может быть как мобильное устройство, так и электронный почтовый адрес. Причем получателей одного сообщения может быть несколько.
Широкий перечень соответствующих АТ-команд 3G-модулей позволяет весьма гибко настраивать параметры приема и отправки сообщений через ММS: добавлять в сообщения рисунок, аудио- и видеозапись, приложение типа SDP и/или файл определенного типа, корректировать текст тела и тему сообщения. Поддерживаемые типы файлов: txt, htm, html, jpg, jpeg, gif, png, mid, midi, wav, amr, mp3, mpeg, mpg, mp4, 3gpp и 3gp.
Тексты тела и темы сообщения могут быть представлены в форматах UCS2, UCS2 big endian или UTF8 (по умолчанию). Чтобы сменить один формат на другой, нужно перед передачей текста на модуль подать коды \xFF\xFE (2 байта), \xFE\xFF (2 байта) или \xEF\xBB\xBF (3 байта) соответственно. Так, применив кодировку UCS2, можно отправить через MMS русскоязычное сообщение.
Существуют ограничения на размер вложений и текстов:
- тема сообщения 1–40 байт;
- тело сообщения 1<определяет оператор> байт;
- рисунок, аудиозапись, видео, иные приложения — 1<определяет оператор> байт;
- до восьми файлов.
Информацию об ограничениях можно получить при помощи АТ-команды AT+CMMSDOWN=?.
Ниже приведен пример отправки MMS-сообщения с двумя фотоснимками на номер мобильного телефона и адрес электронной почты. В зависимости от выбранного оператора сотовой связи некоторые настройки, приведенные в АТ-логе, могут отличаться.
AT+CGSOCKCONT=1,»IP»,»mms» // Настройка PDP- контекста OK AT+CMMSCURL=»mmsc:8002» // Адрес MMS-центра оператора OK AT+CMMSPROTO=1,»10.10.10.10»,8080 // Адрес и порт прокси, протокол HTTP OK AT+CMMSSENDCFG=6,3,0,0,2,4 // Параметры MMS OK AT+CMMSEDIT=1 // Начать редактирование сообщения OK AT+CMMSDOWN=»TITLE»,16 // Задать тему сообщения >MT-System SIMCOM OK AT+CMMSDOWN=»TEXT»,57,»MMS_TEXT.txt» // Задать тело сообщения >This is the test MMS message from 3G module for MT-System OK AT+CMMSDOWN=»FILE»,1,»19800106_012328.jpg» // Вложить рисунок OK AT+CMMSDOWN=»FILE»,1,»19800106_012403.jpg» // Вложить второй рисунок OK AT+CMMSRECP=»XXXXXXXXXXX» // Мобильный номер получателя OK AT+CMMSRECP=batuev.b@mtgroup.ru // E-mail адрес получателя OK AT+CMMSSAVE=1 // Сохранить сообщение в ячейке 1 +CMMSSAVE:1 OK AT+CMMSSEND // Отправить сообщение OK +CMMSSEND: 0 // Сообщение отправлено
При приеме MMS модуль подает в порт URC-сообщение, в котором содержится URL-адрес нового сообщения в MMS-центре. Пример того, как реализовать прием фотографии при помощи MMS с сохранением его в файловую систему модуля, показан ниже.
AT+CGSOCKCONT=1,»IP»,»mms» OK AT+CMMSCURL=»mmsc:8002» OK AT+CMMSPROTO=1,»10.10.10.10»,8080 OK AT+CMMSSENDCFG=6,3,0,0,2,4 OK +WAP_PUSH_MMS: «+7XXXXXXXXXX»,»MTECH57904839-1»,»http://mmsi:8002/1795050047»,»11/12/15,10:34:21+16»,0,17717 +WAP_PUSH: 0,,153 07919712999090F044088177777797000411215101431261880605040B8423F0F806266170706C69636174696F6E2F766E642E7761702E6D6D732D6D65737361676500AF848DD8C3938C82984D5445434835373930343833392D31008D908918802B37393231343430313837392F545950453D504C4D4E008A808E02453588048102010383687474703A2F2F6D6D73693A383030322F3137393530353030343700 AT+CMMSEDIT=0 // Отключить режим редактирования OK AT+CMMSRECV=http://mmsi:8002/1795050047 // Принять MMS-сообщение OK +CMMSRECV: 0 AT+CMMSSAVE=0 // Сохранить сообщение в ячейке 0 +CMMSSAVE:0 OK AT+CMMSVIEW=0 // Просмотреть информацию о сообщении +CMMSVIEW:0,»+7XXXXXXXX»,»+7XXXXXXXXXX»,,,»2011-12-15 10:34:19»,»»,17601 0,»SP_A0059.jpg»,7,17096 1,»SMIL.TXT»,30,369 OK AT+FSCD? // Текущая папка в файловой системе +FSCD: C:/ OK AT+CMMSSNATCH=0,0,»SP_A0059.jpg» // Копировать файл в папку C:/ модуля OK AT+FSLS // Просмотреть сохраненные файлы +FSLS: FILES: SP_A0059.jpg OK
В этом примере файл просто копируется в файловую систему из внутренней буферной ячейки модуля. Содержимое сообщения MMS может также выводиться в бинарном виде в последовательный порт при помощи АТ-команды AT+CMMSREAD=<index>, где <index> — индекс файла в MMS-сообщении (см. ответ +CMMSVIEW).
AT+CMMSREAD=0 // Прочитать файл с индексом 0 +CMSS:»SP_A0059.jpg»,17096 // Имя и размер файла // Вывод содержимого файла OK
Отправка/чтение почты (SMTP, POP3)
3G-модули поддерживают протоколы SMTP (Simple Mail Transfer Protocol, простой протокол передачи почты) и POP3 (Post Office Protocol, v3, почтовый протокол для осуществления динамического доступа к почтовому ящику). Применяя несложный набор АТ-команд, при помощи 3G-модуля можно принимать и отправлять электронную почту при условии наличия регистрации в сети сотового оператора.
Отправляемые письма могут иметь до 10 вложений (файлов) суммарным объемом до 10 Мбайт. Поддерживается три типа адресата: простой адресат, адресат в копии и в скрытой копии. Одному письму возможно задавать до пяти адресатов каждого типа. АТ-лог для отправки электронного письма на адрес simcom@mt-system.ru:
AT+CGSOCKCONT=1,»IP»,»internet» // Настройки PDP-контекста OK AT+SMTPSRV=»smtp.rambler.ru»,25 // Настройка почтового сервера OK AT+SMTPAUTH=1,»xxx»,»XXX» // Логин и пароль почтового ящика OK AT+SMTPFROM=»xxx@rambler.ru»,»some one» // Поле «От кого» OK AT+SMTPRCPT=0,0,»simcom@mt-system.ru»,»simcom» // Адрес получателя OK AT+SMTPSUB=»Test message» // Поле «Тема» OK AT+SMTPBODY=»Message body» // Текст письма OK AT+FSCD=C:/Picture // Текущая папка +FSCD: C:/Picture/ OK AT+FSLS // Файлы в текущей папке +FSLS: FILES: 19800106_000728.jpg 19800106_001157.jpg OK AT+SMTPFILE=1,»19800106_000728.jpg» // Приложить файл к письму OK AT+SMTPSEND // Инициировать отсылку +SMTP: OK // Связь с сервером установлена OK +SMTP: SUCCESS // Письмо отправлено удачно
Прием электронного письма с почтового сервера, как и его отправка, также реализуется посредством небольшого набора АТ-команд:
AT+CGSOCKCONT=1,»IP»,»internet» // Настройка PDP-контекста OK AT+POP3SRV=»pop3.rambler.ru»,»xxx»,»XXX»,110// Настройка почтового сервера OK AT+POP3IN // Открытие сессии +POP3: SUCCESS OK AT+POP3NUM // Количество писем на сервере +POP3: 1410, 336769312 OK AT+POP3LIST=1410 // Размер письма номер 1410 +POP3: 1410, 42317 OK AT+POP3HDR=1410 // Прочитать заголовок письма From:<batuev.b@mt-system.ru> Date: Thu, 15 Dec 2011 16:57:38 +0400 Subject: test message for 3G module OK AT+FSLOCA=0 // Сохранять письмо на диск C:/ OK AT+POP3GET=1410,3 // Скачать письмо номер 1410 OK +POP3: SUCCESS C:/Email/800106042650/, EMAIL000.TXT AT+POP3READ // Прочитать письмо From:< batuev.b@mt-system.ru > To:<xxx@rambler.ru> Subject: test message for 3G module Date: Thu, 15 Dec 2011 16:57:38 +0400 The body of message OK AT+POP3OUT // Закончить сессию +POP3: SUCCESS OK AT+FSCD=C:/Email/800106042650 // Перейти к папке с письмом +FSCD: C:/Email/800106042650/ OK AT+FSLS // Папка с письмом и вложениями +FSLS: FILES: 800106042650.eml Antenna.JPG EMAIL000.TXT OK
Наличие у 3G-модулей SIMCom встроенного стека протоколов SMTP и POP3 может значительно упростить и ускорить процесс разработки сложной системы, где требуются передача разноформатных файлов и простой, доступный интерфейс пользователя. Пользователь такой системы может осуществлять управление сложной сетью при помощи любого компьютера или смартфона, имеющего доступ в Интернет, и получать отчеты о работе системы на электронный ящик в форме текста, звуковых файлов, фото, видео или файла любого другого формата.
Обмен файлами по протоколу FTP/FTPS
В системах удаленного сбора и архивации данных на едином сервере удобно применять стандартный протокол передачи файлов FTP. 3G-модули SIMCom поддерживают протоколы FTP и FTPS (или FTP+SSL). Последний является защищенной версией протокола FTP, в которой передача данных и команд происходит по шифрованному каналу протокола SSL. Это гарантирует безопасную передачу данных между 3G-модулем и FTPS-сервером, что немаловажно для систем с высокими требованиями к безопасности информационного канала.
Соответствующие АТ-команды модулей предоставляют набор инструментов для полноценной работы с удаленным FTP/FTPS-сервером. При помощи АТ-команд можно задавать адрес FTP-сервера, порт, режим (активный/пассивный), тип (ASCII/binary), логин и пароль, а также осуществлять операции скачивания/загрузки файла на FTP-сервер, перечисления файлов и папок на FTP-сервере.
Файл с FTP-сервера может быть загружен с сохранением в файловую систему модуля или выведен напрямую в его последовательный порт. В последнем случае рекомендуется позаботиться о том, чтобы никакие асинхронные URC-сообщения не поступали на последовательный порт, через который выводится содержимое файла с FTP-сервера. В противном случае целостность файла может нарушиться. Чтобы избежать этого, нужно предварительно применить команду AT+CATR (см. систему команд соответствующего модуля).
Также имеется возможность загрузить на FTP-сервер файл, находящийся в файловой системе модуля, или файл, полученный по последовательному порту. Система команд для работы с FTPS-сервером также позволяет удаленно создавать/удалять директории и удалять файлы.
Ниже приведен простой пример загрузки файла из файловой системы модуля на FTP-сервер с последующей его загрузкой и выводом в последовательный порт модуля.
AT+CFTPSERV=»simcomftp.com» // FTP-сервер OK AT+CFTPPORT=21 // FTP-порт OK AT+CFTPUN=»USER» // Логин OK AT+CFTPPW=»PASSWORD» // Пароль OK AT+CFTPMODE=1 // Пассивный режим OK AT+CFTPTYPE=I // Бинарный тип OK AT+CGSOCKCONT=1,»IP»,»internet» // Настройка PDP-контекста OK AT+FSCD=C:/Picture // Задать текущую директорию +FSCD: C:/Picture/ OK AT+FSLS // Список доступных файлов +FSLS: FILES: 19800106_000728.jpg 19800106_001157.jpg OK AT+CFTPPUTFILE=»/19800106_000728.jpg»,1 // Загрузить на FTP-сервер файл из папки “C:/Picture” OK +CFTPPUTFILE: 0 // Удачное окончание выгрузки файла AT+CFTPGET=»/SIM5215&SIM5216/SIM5215_Specification_V1102.pdf» // Скачать с FTP-сервера OK +CFTPGET: DATA,1460 // Вывод содержимого файла в последовательный порт +CFTPGETFILE: 0 // Удачное окончание скачивания файла
Встроенный GPS-приемник
Аппаратно-программные ресурсы 3G-модулей обладают широким набором коммуникационных и мультимедийных функций, что значительно упрощает разработку и стоимость конечного изделия. В случае навигационных решений, где требуется наличие GPS-приемника, могут использоваться модули SIM5218 и SIM5320, в которых навигационный блок GPS-интегрирован в чипсет. Блок GPS в модулях синхронизирован с работой основных функций и для управления имеет свой набор АТ-команд.
Несмотря на то, что GPS не является основной функцией 3G-модулей, GPS-блок имеет приемлемые характеристики, соответствующие современному уровню. Характеристики GPS-блоков модулей SIM5218 и SIM5320 приведены в таблице 1.
Характеристика |
SIM5218 |
SIM5320 |
|
Количество каналов |
12 |
12 |
|
Чувствительность слежения, дБм |
–157 |
–156 |
|
Чувствительность захвата (холодный старт), дБм |
–144 |
–145 |
|
Точность, м (CEP50) |
2 |
1,5 |
|
TTFF, с |
Горячий старт |
1 |
1 |
Холодный старт |
35 |
40 |
|
Период обновления координат, с |
1 |
1 |
|
Формат сообщений |
NMEA-0183 |
NMEA-0183 |
|
Потребление тока (WCDMA/GSM Sleep Mode), мА |
100 |
80 |
|
Типы поддерживаемых антенн |
пассивная/активная |
||
Встроенный источник для питания активной антенны |
2,7 В |
нет |
Для работы блока GPS требуется лишь подключить спутниковую GPS-антенну к антенному интерфейсу модуля. SIM5320 может работать как с активными, так и с пассивными антеннами. Однако для работы модуля с активными антеннами требуется внешний источник питания. Его подключение удобно тем, что имеется свобода выбора напряжения питания антенны — как известно, коэффициент усиления активной GPS-антенны зависит от напряжения питания.
На рис. 1 показаны примеры схем подключения пассивной и активной GPS-антенны. Согласующая цепочка П-типа (C1, L1 и L2) опциональна и не требуется при хорошем согласовании с антенной 50 Ом. Питание на активную антенну подается через фильтрующий элемент L3, при этом обязателен разделительный конденсатор C2, чтобы оградить ВЧ-вход модуля от постоянной составляющей тока питания антенны.
SIM5218 имеет встроенную цепь питания активной антенны на напряжение 2,7 В. К этому модулю активную или пассивную антенну можно подключить напрямую, без разделительного конденсатора C2 и фильтрующего элемента L3.
Навигационные решения модуль предоставляет в форме стандартных NMEA-сообщений. В зависимости от настроек они могут выводиться на порт USB по профилю SimTech HS-USB NMEA 9000 (рис. 3 в [1]) или на последовательный порт UART-модуля. Выбор порта для вывода NMEA-сообщений осуществляется АТ-командой:
AT+CGPSSWITCH=1 // Вывод NMEA-сообщений через порт USB OK
или
AT+CGPSSWITCH=2 // Вывод NMEA-сообщений через порт UART OK Настройка вступит в силу после перезагрузки модуля. Чтобы начался вывод NMEA-сообщений в выбранный порт, нужно включить блок GPS: AT+CGPS=1 // Включить блок GPS OK После того как блок GPS будет включен, на выходе выбранного порта можно наблюдать поток NMEA-сообщений: $GPGSV,4,1,16,04,19,045,46,23,05,005,42,10,18,068,41,02,50,091,37*7B $GPGSV,4,2,16,05,04,118,35,31,37,299,33,25,76,213,27,12,49,132,*7E $GPGSV,4,3,16,14,00,250,,29,48,236,,32,,,,24,,,*7C $GPGSV,4,4,16,18,,,,22,,,,11,,,,17,,,*71 $GPGGA,132909.9,5953.835260,N,03015.160448,E,1,06,1.3,23.1,M,0,M,,*47 $GPVTG,NaN,T,,M,0.0,N,0.0,K,A*42 $GPRMC,132909.9,A,5953.835260,N,03015.160448,E,0.0,,110811,,,A*49 $GPGSA,A,3,02,04,05,10,23,31,,,,,,,2.2,1.3,1.8*38 $PSTIS,*61
По умолчанию после перезагрузки модуля блок GPS находится в выключенном состоянии, и для его включения необходимо повторно подать команду AT+CGPS=1. Однако блок GPS может включаться не только по АТ-команде, но и в автоматическом режиме, сразу после включения модуля. Для этого однажды перед выключением нужно подать команду AT+CGPSAUTO=1.
Не всегда в приложениях применяется USB-интерфейс, и вся работа с 3G-модулем ведется только через порт UART. В этом случае текущие координаты можно получать при помощи АТ-команды:
AT+CGPSINFO // Получить текущие координаты (формат GPRMC) +CGPSINFO:5953.833914,N,03015.157845,E,110811,132538.9,16.3,0.0,0 OK
Управление аппаратными интерфейсами
3G-модули SIMCom имеют набор аппаратных интерфейсов, каждый из которых может быть использован для управления или контроля внешних элементов. В таблице 2 приведен перечень аппаратных интерфейсов 3G-модулей.
Интерфейс |
SIM5215 |
SIM5216 |
SIM5320 |
SIM5218 |
GPIO |
In, Out, Interrupt |
In, Out, Interrupt |
In, Out, Interrupt |
In, Out, Interrupt |
I2C |
1 |
1 |
1 |
1 |
SPI |
Нет |
Нет |
1 |
Нет |
ADC, бит |
1×8 |
1×8 |
2×12 |
1×8 |
Регулируемый LDO-выход |
1,5–3,05 В; 250 мА |
|||
Токовый выход |
Нет |
Нет |
0,5–5 В; 150 мА |
Нет |
Как видно из таблицы 2, все 3G-модули поддерживают интерфейс порта ввода/вывода. Каждый модуль поддерживает вывод и чтение логических уровней, а также формирование прерывания по изменению состояния входного сигнала.
Ниже приведен пример АТ-лога для чтения состояния ножки GPIO2 и вывода лог-уровней на ножку GPIO3. Отметим, что состояние выходов может сохраняться после перезагрузки модуля.
AT+CGDRT=2,0,0 // Настроить GPIO2 как вход OK AT+CGGETV=2 // Прочитать состояние ножки GPIO2 +CGGETV: 0 OK AT+ CGDRT=3,1,0 // Настроить GPIO3 как выход OK AT+CGSETV=3,1,1 // Вывести на GPIO3 лог-единицу с сохранением состояния после перезагрузки OK AT+CGSETV=3,0,1 // Вывести на GPIO3 лог-ноль с сохранением состояния после перезагрузки OK
Функция формирования событий реализуется по прерыванию на ножке GPIO0 порта ввода/вывода. Прерывание настраивается при помощи одной АТ-команды. При наступлении соответствующего изменения на ножке GPIO в последовательный порт генерируется сообщение. Ниже приведен пример того, как настроить прерывание по спадающему и нарастающему фронту.
AT+CGPIO=1,0,0 // Настроить прерывание по спадающему фронту OK GPIO[0] Interrupt Alarm!value:0 AT+CGPIO=1,1,0 // Настроить прерывание по нарастающему фронту OK GPIO[0] Interrupt Alarm!value:1
Во всех 3G-модулях выведен последовательный интерфейс I2C, а в SIM5320 дополнительно и SPI, работа с которыми предельно проста. Они могут применяться для управления внешними устройствами, такими, например, как память, гироскоп, ЖК-дисплей и проч.
Для управления интерфейсом I2C выделено всего две команды — чтение и запись регистров внешнего устройства (см. в системе команд +CRIIC и +CWIIC). Скорость тактирования — до 400 кбит. Линии тактирования SCL и данных SDA подтянуты внутри модулей к 2,6 В через сопротивление 2,2 кОм, поэтому дополнительные резисторы снаружи модуля не требуются.
В модуле SIM5320, в отличие от SIM5215/16/18, имеется еще один последовательный интерфейс — SPI с максимальной частотой тактирования 26 МГц. Модуль исполняет роль мастера, т. е. инициирует все транзакции всегда первым. Логические уровни шины (MOSI, MISO, CLK, CS) — 1,8 В,
поэтому для сопряжения с ведомыми устройствами формата 3,3 В потребуется высокоскоростная цепь согласования. Работа SPI-интерфейса регулируется набором команд, приведенных ниже:
AT+CSPISETCLK=1,0,1 // Задать алгоритм тактирования OK AT+CSPISETCS=1,0 // Настройка CS - Chip Select OK AT+CSPISETF=960000,10000000,0 // Настройки частоты тактирования CLK OK AT+CSPISETPARA=16,0,1 // Настройки транзакций OK AT+CSPIW=0x0F,0x8624,2 // Запись двух байт в регистр по адресу 0x0F OK AT+CSPIR=0x0F,2 // Чтение двух байт из регистра по адресу 0x0F +CSPIR: 0x8624 OK
Наличие встроенного аналого-цифрового преобразователя во всех 3G-модулях может снять необходимость установки внешнего АЦП, удешевить и/или упростить конечное изделие в целом. В модулях SIM521/16/18 имеется по одному 8-битному АЦП, а в SIM5320 — два 12-битных АЦП, характеристики которых приведены в таблице 3.
Параметр |
SIM5215/16 |
SIM5320 |
SIM5218 |
Разрешение, бит |
8 |
12 |
8 |
Диф. нелинейность, МЗБ |
–4…+4 |
–0,75…+0,75 |
|
Интегральная нелинейность, МЗБ |
–8…+8 |
–1,5…+1,5 |
|
Погрешность преобразования, МЗБ |
–2,5…+2,5 |
–2,5…+2,5 |
|
Погрешность смещения, МЗБ |
–4..+4 |
–3…+3 |
|
Входное напряжение, В |
0–2,2 |
0–2,65 |
|
Входное сопротивление, кОм |
2 |
1 |
|
Входная емкость, пФ |
53 |
12 |
|
Время включения, мкс |
9,6–19,2 |
5 |
На рис. 2 приведен пример схемы включения АЦП для измерения температуры при помощи терморезистора в качестве термочувствительного элемента.
В этом примере используется некое опорное напряжение Vопорное, которое, кстати, можно получить непосредственно с отдельного вывода 3G-модуля VREG_AUX. Этот вывод обеспечивает напряжение в диапазоне 1,5–3,05 В с допустимым током нагрузки до 250 мА у SIM5215/16 и SIM5320, и до 150мА — у SIM5218. Управление напряжением VREG_AUX осуществляется при помощи двух АТ-команд. Ниже приведен пример того, как это сделать.
AT+CVAUXS=1 // Открыть вывод VREG_AUX OK AT+CVAUXV=45 // Задать напряжение 2,25 В (45×50 мВ) OK
Также вывод VREG_AUX можно использовать для питания светодиодной подсветки с регулированием яркости свечения. Пример схемы подключения светодиодной нагрузки показан на рис. 3.
Эта схема справедлива, если диапазон выходного напряжения будет достаточен для обеспечения рабочих токов. Для питания подсветки белого цвета будет правильнее применить токовый выход, который поддерживается модулем SIM5320. Он требует внешнего питающего напряжения 0,5–5 В, выходной ток задается АТ-командой AT+CLEDITST (см. систему команд SIM5320) в диапазоне 0–150 мА с градацией в 15 уровней. Схема подключения токового выхода приведена на рис. 4.
Пользуясь аппаратными возможностями 3G-модулей SIMCom, можно значительно ускорить и упростить процесс разработки, кроме того, это всегда путь к уменьшению количества внешних электронных компонентов, что ведет к снижению стоимости конечного изделия и повышению его конкурентоспособности.
Цифровой аудиоинтерфейс
Все 3G-модули SIMCom имеют аналоговые аудиоинтерфейсы для подключения динамика и микрофона. Одновременно с этим в перечне внешних интерфейсов имеется цифровой аудиоинтерфейс PCM (Pulse Code Modulation, импульсно-кодовая модуляция). Интерфейс PCM может применяться для передачи оцифрованного аналогового сигнала во время голосового соединения с удаленным абонентом.
Поддерживаемые форматы кодировки и их описание приведены в таблице 4.
Режим PCM |
Дискретизация |
Частота тактирования |
Режим |
Формат |
Слот |
Auxiliary |
8 кГц |
128 кГц |
Master |
A-law(8 бит); u-law(8 бит); linear(16 бит) |
0 |
Primary |
8 кГц |
2,048 МГц |
Master/Slave |
0–15 |
PCM в 3G-модулях реализован в виде аппаратного и программного интерфейса. Аппаратный выведен на ножки модуля (см. полное описание соответствующего модуля); он предназначен для подключения к внешнему кодеку или устройству, поддерживающему соответствующий формат кодировки. Например, на рис. 5 приведена схема совместной работы SIM5320 и Bluetooth-модуля со встроенной антенной производства Bluegiga WT11i. Модуль WT11i поддерживает профиль аудиогарнитуры.
Приведем пример АТ-лога для настройки аппаратного PCM-интерфейса для работы с внешним аудиокодеком:
AT+CSDVC=4 // Выбрать аудиоканал (PCM) OK AT+CPCM=1,0 // Переключить GPIO в режим PCM с заданным режимом OK AT+CPCMFMT=0 // Выбрать формат u-law OK
Программный PCM-интерфейс подразумевает передачу потока PCM-данных не через аппаратный интерфейс, а через последовательный интерфейс USB в профиле виртуального порта SimTech HS-USB Diagnostics 9000 (для SIM5320 и SIM5218) или SimTech HS-USB NMEA 9000 (для SIM5215/16). Так, можно реализовать голосовую диспетчерскую связь с применением компьютера или ноутбука (рис. 6), подключив 3G-модуль по стандартному USB-интерфейсу. При этом модуль может одновременно выступать в качестве модема для выхода в Интернет при помощи профиля стандартного модема, как это было показано ранее.
На стороне компьютера понадобится лишь специальное программное обеспечение, которое будет производить кодирование и декодирование голосового потока.
Пример АТ-лога для установления голосового соединения с применением программного PCM-интерфейса:
AT+DSWITCH=1 // Переключить порт в режим данных OK ATDXXXXXXXXXX // Установить голосовую связь OK VOICE CALL: BEGIN // Голосовая связь установлена AT+CPCMREG=1 // Разрешить передачу голосового потока в порт OK VOICE CALL: END: 000030 // Голосовая связь прекращена NO CARRIER AT+CPCMREG=0 // Остановить передачу голосового потока в порт OK AT+DSWITCH=0 // Переключить порт в диагностический режим OK
Lua: программирование 3G-модулей
Lua — мощный и простой язык программирования, созданный в 1993 г. группой инженеров бразильского университета Pontifical Catholic University of Rio de Janeiro. По синтаксису он очень напоминает C/C++. Независимые исследования показали, что Lua является самым быстродействующим среди интерпретируемых (скриптовых) языков программирования.
Модули SIM5215/16/18 могут исполнять сложные пользовательские скрипты Lua размером до 3,5 Мбайт, чего вполне достаточно, чтобы реализовать внушительный функционал. Lua-скрипты должны загружаться во внутреннюю память модуля (ветка C:/) в виде текстового файла с расширением *.lua. Программный код запускается по АТ-команде AT+CSCRIPTSTART. Для этого потребуется внешний микроконтроллер. Если основную часть программного кода возложить на 3G-модуль, то можно ограничиться дешевым микроконтроллером с минимальными ресурсами. Однако если файлу скрипта присвоить имя autorun.lua, то программный код исполняется без АТ-команды. В этом случае внешний микроконтроллер может вообще не понадобиться.
Для задач, где важно высокое быстродействие исполняемого кода, можно производить компиляцию файлов *.lua при помощи команды AT+CSCRIPTCL. На выходе получится бинарный файл формата *.out, который и можно будет запустить к исполнению командой AT+CSCRIPTSTART.
Программный код может обрабатывать различные события с задаваемым приоритетом, в том числе по таймеру (до 10 таймеров). Управлять работой модуля из-под Lua-скрипта можно как при помощи АТ-команд, так и при помощи API-функций, встроенных в модуль.
Кроме базовых API (настройка приоритетов, работа с памятью и проч.), 3G-модули дополнительно поддерживают следующие встроенные библиотеки:
- SIO — самая главная. Является мостом между пользовательским кодом и модулем. Позволяет посылать модулю AT-команды и принимать от него ответы.
- GPIO — для прямой работы с портами ввода/вывода без применения АТ-команд.
- UART — для прямой работы с последовательным портом UART.
- I2C — для работы с шиной I2C в качестве мастера.
- AUDIO — для управления аудиоинтерфейсом модуля.
- GPS — для работы с навигационным блоком GPS в модулях SIM5320 и SIM5218.
- NET — для опроса состояния сети.
- FTP — для работы с удаленным FTP-сервером.
- ADC — для прямой работы с АЦП.
- PCM — для настройки GPIO-портов в режим PCM.
- BIT — библиотека побитовых операций.
- ATCTL — для приема и передачи данных по UART или USB.
Для написания кода можно воспользоваться свободно распространяемым текстовым редактором NotePad++, который распознает грамматику языка Lua (рис. 7).
На рис. 8 приведен пример Lua-кода для управления портами ввода/вывода.
Отметим, что код не зависит от аппаратного исполнения модуля и может быть портирован c одного модуля на другой, например с SIM5215 на SIM5218 и наоборот. Это дополнительное преимущество линейки модулей SIM52XX к тому, что они имеют одинаковый системный разъем и распиновку. Таким образом, пользователь может провести разработку на низкоскоростном модуле SIM5215 и, при необходимости, заменить его в будущем на более развитой модуль SIM5218, затратив при этом минимум времени и средств.
«ЭРА-ГЛОНАСС»/eCALL
Система «ЭРА-ГЛОНАСС» — глобальный российский проект, аналог европейской системы eCall, призванный сократить число жертв ДТП благодаря быстрому оповещению спасательных служб о фактах аварий на дорогах (рис. 9). Предположительно «ЭРА-ГЛОНАСС» позволит сократить время реагирования на аварии со стороны служб спасения на 30%. Для реализации этого проекта необходимо, чтобы автомобили были оснащены специальным техническим средством — терминалом «ЭРА-ГЛОНАСС», который может интегрироваться в состав автомобиля на этапе его производства или как дополнительное оборудование на сервисе у официального дилера автопроизводителя.
Оператором системы является федеральный сетевой оператор ОАО «Навигационно-Информационные Системы» (НИС). Старт проекта «ЭРА-ГЛОНАСС» назначен на конец 2013 г.
Как работает система? Наличие в автомобиле терминала «ЭРА-ГЛОНАСС» при возникновении ДТП обеспечит исполнение «золотого правила одного часа» за счет мгновенной передачи координат места происшествия и условий аварии (вид транспорта, тип топлива, количество пассажиров и проч.). При возникновении ДТП данные
о происшествии в автоматическом или ручном режиме передаются по голосовому каналу при помощи тонального модема (in-band modem) на номер экстренной службы спасения 112. За мгновения при помощи несложного набора АТ-команд 3G-модуль SIM5320 осуществляет формирование минимального набора данных (МНД или Minimal Set of Data, MSD) и дозвон до диспетчера экстренной службы с передачей МНД.
AT+CECALLCFG=1,4,2,»WM9VDSVDSYA123456»,12,1,1,1,1 // Настроить МНД OK AT+CECALLPOS=»48.300333»,»11.617367» // Задать координату OK AT+CECALLTIME=0 // Текущее время — системное OK AT+CECALLS=112,1,0 // Инициировать звонок OK AT+CECALLTRIG // Отправить МНД +ECALL:IVS RX OK
Обновление программного обеспечения 3G-модулей
SIMCom всегда внимательно относится к рекомендациям и пожеланиям, исходящим от разработчиков GSM-оборудования. В связи с этим программное обеспечение (ПО) постоянно расширяется и доводится до совершенства. Так, чтобы протестировать нововведения, разработчику может потребоваться обновить программное обеспечение модуля, уже у него имеющегося.
В 3G-модулях SIMCom на выбор разработчика реализовано два способа обновления ПО:
- по интерфейсу USB (требуется подключение к ПК);
- при помощи SD-карты памяти, если поддерживается текущее ПО и имеется интерфейс SD/MMC-карты.
Для того чтобы обновить ПО модуля по интерфейсу USB, на ПК должны быть предварительно установлены USB-драйвера. Также потребуется специальная программа для ПК QDL версии V3.0 или выше.
После включения модуля, подсоединенного к ПК через USB-интерфейс, в диспетчере устройств должно определиться несколько устройств (рис. 3, [1]). После запуска программы QDL_V3.0.exe окно программы будет выглядеть так, как показано на рис. 10.
Перед нажатием кнопки Start нужно указать путь к файлам ПО на жестком диске ПК, нажав кнопку Browse. Обновление ПО будет завершено в течение 2–3 минут, и на экране ПК отобразится информационное окно (рис. 11).
Второй способ обновления ПО — с использованием SD-карты памяти с записанными программными файлами. Для этого нужно иметь возможность контролировать ножки GPIO0, GPIO1, POWER_ON/RESET. Пример схемы для реализации такого способа обновления ПО приведен на рис. 12.
Алгоритм обновления ПО следующий:
- вставить SD-карту памяти с файлами ПО в SD-слот;
- шунтировать ножку GPIO0 модуля на «землю»;
- перезагрузить модуль, выключив и включив его сигналом POWER_ON, или сбросить сигналом RESET;
- если уровень сигнала GPOI1 высокий, то освободить ножку GPIO0;
- процесс обновления ПО начнется и закончится, когда сигнал GPIO1 перейдет в низкий уровень;
- модуль автоматически перезагрузится.
Чтобы защитить модуль от случайного бесконечного перепрограммирования, файлы ПО автоматически удаляются с SD-карты при завершении процесса обновления.
Этот способ интересен тем, что он позволяет с легкостью произвести массовое удаленное обновление ПО 3G-модулей. Например, есть необходимость в обновлении программного обеспечения модулей в 10 конечных устройствах. Новое ПО может быть загружено при помощи АТ-команд модуля с почтового сервера по протоколу POP3 и записано на внешнюю SD-карту памяти. Далее хост, управляющий модулем, должен всего лишь установить ножку GPIO0 в логический ноль, перезагрузить 3G-модуль и освободить ножку GPIO0 (Z-состояние).
Вывод
В двух частях данной статьи мы рассмотрели подавляющее большинство программно-аппаратных возможностей 3G-модулей SIMCom и показали, что их использование позволяет быстро разработать сложное функциональное устройство с минимальными внешними компонентами.
- Б. Батуев. 3G-модули SIMCom: осваиваем на примерах. Часть 1 // Беспроводные технологии. 2012. № 1.
- http://www.mt-system.ru/catalog/dokumentacija-na-gsm-modemy-simcom
- http://www.mt-system.ru/catalog/linejka-modemov-i-terminalov
- http://www.mt-system.ru/catalog/otladochnye-i-demonstracionnye-sredstva
- http://www.mt-system.ru/catalog/besprovodnye-reshenija/bluetooth/kompanija-bluegiga/bluetooth-modul-wt11i
- http://www.lua.org
- http://www.nis-glonass.ru/projects/era_glonass/