Диалог происходит по средством AT команд. Мы шлём модулю нужную команду или запрос, а он её выполняет и отвечает. Самая простая команда AT, на которую модуль тут же ответит OK, если модуль подключен и исправен. Самые популярные команды рассмотрим далее.
Почти все команды имеют 3 режима:
- тестовый =? – модуль ответит поддерживает ли он команду и возможные её параметры
- чтение ? – ответом будет текущие параметры для этой команды
- запись = записываем новые значения для команды.
A/ — повтор предыдущей команды
В статье, идёт речь о GSM модуле SIM900 (B09). Напоминаю, т.к. есть ещё и другие разновидности этого модуля и формат команд с ними может немного отличаться.
Управление портом
По умолчанию модуль настроен 9600 8N1, 9600 – скорость, 8 – бит в посылки, N – нет контроля чётности, 1- стоп бит.
Команда |
Ответ |
Описание |
AT+IPR? | +IPR: 0 OK |
Скорость порта: 0 – автоматически 1200 2400 4800 9600 19200 38400 57600 115200 |
AT+ICF? | +ICF: 3,3 OK |
Настройки передачи. Первый параметр: Бит в посылке/чётность/стоп бит 1 – 8/0/2 2 – 8/1/1 3 – 8/0/1 4 – 7/0/2 5 – 7/1/1 6 – 7/0/1 Второй параметр – чётность: 0 – нечётный 1 – чётный 3 – нет |
AT+IFC? | +IFC: 0,0 OK |
Контроль передачи данных Первый параметр – терминалом от модуля Второй параметр – модулем от терминала 0 – нет контроля 1 – программный 2 – аппаратный |
Информация и состояние
Информация о модуле
Команда |
Ответ |
Описание |
AT+GCAP | +GCAP:+FCLASS,+CGSM OK |
Возможности модуля |
AT+GMM | SIMCOM_SIM900 OK |
Идентификатор модуля |
AT+GMR | Revision:1137B09SIM900M64_ST OK |
Ревизия |
AT+GSN | 01322600XXXXXXX OK |
IMEI |
Информация о состояние модуля
Команда |
Ответ |
Описание |
AT+COPS? | +COPS: 0,0,"MTS-RUS" OK |
Информация об операторе |
AT+COPS=? | +COPS: (2,"MTS RUS","","25001"),(1,"MOTIV","MOTIV","25035"),(1,"Utel","Utel","25039"),,(0,1,4),(0,1,2) OK |
Доступные операторы |
AT+CPAS | +CPAS: 0 OK |
Информация о состояние модуля 0 – готов к работе 2 – неизвестно 3 – входящий звонок 4 – голосовое соединение |
AT+CREG? | +CREG: 0,1 OK |
Тип регистрации сети Первый параметр: 0 – нет кода регистрации сети 1 – есть код регистрации сети 2 – есть код регистрации сети + доп параметры Второй параметр: 0 – не зарегистрирован, поиска сети нет 1 – зарегистрирован, домашняя сеть 2 – не зарегистрирован, идёт поиск новой сети 3 – регистрация отклонена 4 – неизвестно 5 – роуминг |
AT+CSQ | +CSQ: 17,0 OK |
Уровень сигнала: 0 -115 дБл и меньше 1 -112 дБл 2-30 -110..-54 дБл 31 -52 дБл и сильнее 99 – нет сигнала. |
AT+CCLK? | +CCLK: "00/01/01,04:21:27+00" OK |
Текущая дата и время телефона. |
AT+CBC | +CBC: 0,95,4134 OK |
Монитор напряжения питания модуля Первый параметр: 0 – не заряжается 1 – заряжается 2 – зарядка окончена Второй параметр: 1-100 % — уровень заряда батареи Третий параметр: Напряжение питание модуля (VBAT), мВ |
AT+CADC? | +CADC: 1,7 OK |
Значение АЦП (до 2,8В) |
Настройки
Вызовов
Команда |
Ответ |
Описание |
AT+CLIP=1 | OK | АОН 1 – вкл / 0 – выкл |
AT+GSMBUSY=0 | OK | Запрет входящих звонков 0 – разрешены 1 – запрещены |
ATS0=0 | OK | Автоответ 0 – ручной 1-более – автомотический после заданного количества звонков |
СМС
Команда |
Ответ |
Описание |
AT+CMGF=1 | OK | Текстовый режим 1 – включить 0 – выключить см. примечание |
AT+CSCS= "GSM" | OK | Кодировка текстового режима Доступны следующие кодировки: IRA, GSM, UCS2, HEX, PCCP, PCDN, 8859-1 см. примечание |
AT+CSCB=0 | OK | Приём специальных сообщений 0 – разрешен (по умолчанию) 1 – запрещен |
Остальные
Команда |
Ответ |
Описание |
ATE0 | OK | ЭХО 1 – вкл (по умолчанию) / 0 – выкл |
ATV1 | OK | Формат ответа модуля 0 – только ответ 1 – полный ответ с ЭХО (по умолчанию) |
AT+CMEE=0 | OK | Информация об ошибках 0 – отключён (по умолчанию) 1 – код ошибки 2 – описание ошибки |
AT+CCLK="13/09/25,13:25:33+05" | OK | Установка часов «yy/mm/dd,hh:mm:ss+zz» Где: год/месяц/дата, часы:минуты:секунды +часовой пояс |
AT+CPIN=XXXX | Ввод PIN кода | |
ATZ0 | Сброс настроек до по умолчанию (не до заводских) 0 или 1 – выбор профиля |
|
AT&F | Сброс настроек до заводских | |
AT&W | OK | Сохранение настроек для текущего профиля Параметр 0 или 1 — выбор профиля Параметр указывать сразу за командой (AT&W0) |
AT+CPOWD=1 | NORMAL POWER DOWN | Выключение модуля 0 – срочное 1 – нормальное |
AT+CFUN=1,1 | Энергосберегающий режим и перезагрузка Первый параметр: 0 – минимальный функционал 1 – нормальный режим (по умолчанию) 2 – выключения цепей приёма и передачи сигнала Второй параметр: 0 – выполнить без перезагрузки 1 – перезагрузить (доступно только в нормальном режиме, т.е. параметры = 1,1) |
Телефонные звонки
Команда |
Ответ |
Описание |
ATD+790XXXXXXXX; | OK | Позвонить на номер +790XXXXXXXX; |
NO DIALTONE BUSY NO CARRIER NO ANSWER |
Нет сигнала Если вызов отклонён Повесили трубку Нет ответа |
|
ATDL | OK | Позвонить по последнему исходящему номеру |
ATA | OK | Ответить на звонок |
ATH0 | OK | Повесить трубку/ разорвать соединение |
RING | Входящий звонок | |
AT+CLIP=1 | OK | см. настройки |
RING
+CLIP: "+790XXXXXXXX",145,"",,"",0 |
Входящий звонок с включенным АОН Где: Первый параметр – номер телефона входящего звонка 2 – тип входящего номера 129 – не определен 161 – национальный 145 – интернациональный 177 – сетевой, специальный |
СМС
Команды приведены для текстового режима и в GSM кодировке.
Команда |
Ответ |
Описание |
AT+CMGS="+790XXXXXXXX" >Test sms text |
> +CMGS: 15 OK |
Отправка СМС. Указываем номер получателя в кавычках и отправляем модулю с символом переноса строки (13 в ASCII). После приглашения «>» вводим текст сообщения. Для отправки в конце сообщения отправляем символ SUB (26 в ASCII) или ESC (27) для отмены. |
AT+CMGF=1 AT+CSCS= "GSM" |
Режим и кодировка. см. настройки и примечание |
|
+CMTI: "SM",4 | Уведомление о приходе СМС. Второй параметр номер пришедшего СМС. |
|
AT+CMGL="REC UNREAD" | +CMGL: 4,"REC UNREAD","+790XXXXXXXX","","13/09/24,23:02:22+24" Test2. OK |
Чтение групп СМС. Всего 5 групп: REC UNREAD – входящие непрочитанные REC READ – входящие прочитанные STO UNSENT – Пользовательские непрочитанные STO SENT – пользовательские прочитанные ALL – прочитать все сообщения |
AT+CMGR=2 | +CMGR: "REC READ","+790XXXXXXXX","","13/09/21,11:57:46+24" Test sms text OK |
Чтение SMS сообщений. Запрос: Первый параметр – номер сообщения. Второй параметр (необязателен): 0 – обычный режим (по умолчанию) 1 – не изменять статус сообщения Ответ: Первый параметр – группа сообщений, см предыдущий пункт. Второй параметр – номер отправителя 3 – дата отправки Далее следует текс сообщения. |
AT+CMGDA="DEL SENT" | OK | Удаление групп СМС: DEL READ — прочитанные DEL UNREAD — не прочитанные DEL SENT — отправленные DEL UNSENT — не отправленные DEL INBOX — полученные DEL ALL — всех сообщения |
AT+CMGD=4 | OK | Удаление СМС. Первый параметр – номер сообщения Второй параметр: 0 – удаление указанного сообщения (по умолчанию) 1 – удаление прочитанных сообщений 2 – удаление прочитанных и отправленных сообщений 3 – удаление прочитанных, отправленных и не отправленных сообщений 4 – удаление всех сообщений |
AT+CSCA? | +CSCA: "+79126313431",145 OK |
Возвращает номер сервис центра отправки сообщений. |
Тоновый набор (DTMF)
Тоновые сигналы: 0-9,#,*,A-D
Команда |
Ответ |
Описание |
AT+VTD=3 | OK | Длительность тоновых сигналов для AT+VTD. Значение параметра 1..255 |
AT+VTS="1,4,#,A,6,7,0" | OK | Отправить последовательность тоновых сигналов (до 20). Длительность задается командой AT+VTS. |
AT+CLDTMF=7, "1,4,#,A,6,7,0" | OK | Проиграть на модуле (через аудио выход) тоновые сигналы. Первый параметр — длительность 1-100 Второй параметр – строка тоновых сигналов, до 20. |
AT+VTD и AT+VTS команды, как мне кажется, работаю не корректно. VTD – должна устанавливать длительность тонового сигнала, а не паузу между ними, в то время когда тоновый сигнал в AT+VTS проигрывается быстро.
USSD
Команды для текстового режима и в GSM кодировке.
Команда |
Ответ |
Описание |
AT+CUSD=1,"#100#" | OK +CUSD: 0,"Balance:240,68r ", |
USSD запрос Первый параметр – режим обработки операции: 0 – выполнить запрос, ответ проигнорировать 1 – выполнить запрос, вернуть ответ 2 – отменить запрос Второй параметр – запрос в кавычках. |
ATD#100#; | OK +CUSD: 0,"Balance:240,68r ", |
Упрощенный USSD запрос (работает только при GSM кодировке) |
Отмечу, что есть 2 варианта USSD запроса: начиная с * и начиная с #. В первом варианте ответ приходит на русском языке, во втором в латинице, если оператор такой запрос поддерживает и не ответит так же, как и в первом случае.
Режим отображения такой же, как и для СМС.
Примечание по текстовому режиму и кодировке
От текстового режима (PDU или текстовый) и кодировки модуля зависит формат ввода номеров, USSD запросов, входящих и исходящих СМС.
Самый геморройный и универсальный вариант – это PDU режим, т.к. в нём можно без проблем отправлять и принимать любые текстовые данные, но из-за его «геморойности» рассматривать его не буду.
Самый простой вариант – GSM кодировка. В нём номера вводятся привычным цифровым методом, исходящие и исходящие сообщения, как СМС, так и USSD в латинице отображаются, как им и полагается. С кириллицей дела обстоят посложнее, модуль входящие сообщения с ней отображает в UNICOD, точнее в HEX значениях UNICOD. С исходящими сообщениями дела обстоят сложнее!
Второй вариант, посложнее – UCS2 кодировка. Входящие и исходящие сообщения, USSD запросы, номера телефонов в запросах – всё пишется в UNICOD. Упрощенные USSD запросы не работают.
Другие варианты мной плохо опробованы, но у них тоже всё идёт в своей кодировке.
Пример (номер телефона заменён на +79012345678, добавлены переносы):
Кодировка |
Запрос |
Ответ |
PDU | AT+CMGR=2 | +CMGR: 1,"",38 07919720780110F0000B919710325476F800003190121 175644215D4F29C0E9AB7E72E50985DC6B7CAF8B24B5E07 OK |
AT+CMGR=3 | +CMGR: 1,"",59 07919720780110F0000B919710325476F800083190122 185134228005400650073007400200073006D00730020 0032002E0020042204350441044200200441043C0441 OK |
|
GSM | AT+CMGR=2 | +CMGR: "REC READ","+79012345678","","13/09/21,11:57:46+24" Test sms text OK |
AT+CMGR=3 | AT+CMGR=3 +CMGR: "REC READ","+79012345678","","13/09/21,12:58:31+24" 005400650073007400200073006D007300200032 002E0020042204350441044200200441043C0441 OK |
|
AT+CUSD=1,"#100#" | OK +CUSD: 0,"Balance:240,68r ", |
|
UCS2 | AT+CMGR=2 | +CMGR: "REC READ","002B0037003900300031 0032003300340035003600370038","","13/09/21,11:57:46+24" 005400650073007400200073006D0073002E0020 0061006C00650078002D006500780065002E00720075 OK |
AT+CMGR=3 | +CMGR: "REC READ","002B00370039003000310032 003300340035003600370038","","13/09/21,12:58:31+24" 005400650073007400200073006D007300200032 002E0020042204350441044200200441043C0441 OK |
|
AT+CUSD=1,"00230031 003000300023" |
OK +CUSD: 0,"00420061006C0061006E00630065003A0032 00340030002C0036003800720020",64 |
Текст сообщений выданного на запрос «AT+CMGR=3» — «Test sms 2. Тест смс»
Кратко о UNICODE
В юникоде символы кодируются в шестнадцатиричке записанной в текстовом виде, при этом первые 127 символов просто переводятся в HEX, а вот к кириллице добавляется 350h.
Пример: 1 – 0031, G – 0047, z — 007A, Ы — 042B, я — 044F
Программка для кодировки и раскодировки UNICODE – скачать.
В статье привёл значительную часть основных команд GSM модуля SIM900 из огромного списка поддерживаемых им. Для большинства задач все приведенные команды не будут нужны, а хватит только малой их части. В одной из следующих статьей рассмотрю, как пользоваться GPRS AT-командами и пример его использования на примере простенькой домашней сигнализации. Так же бы было интересно достать и посмотреть прошивку «All-in-One».
+CMTI: "SM",4
Второй параметр -номер пришедшего СМС.
Смотрите команды СМС
Если во время сеанса на устройство придет SMS, вернется сообщение формата:
+CMTI: "SM",4
здесь 4 — это номер входящего непрочитанного сообщения.
Чтобы прочитать текст этого сообщения, введем:
AT+CMGR=4
В ответ получим:
+CMGR: "REC READ","+790XXXXXXXX","","13/09/21,11:57:46+24"
Hello World!
OK
Не работает SIM900R.Подключаю гипертерминал, включаю модуль, в ответ
RDY
+CFUN: 1
+CPIN: READY
NORMAL POWER DOWN
Call Ready
модуль вырубается.
Помогите, пожалуйста!!!!! :cry:
Если блок питания его не тянет, то он на выкл.
И ещё вопрос, эти модули могут вести ЮССД диалог? Ну например, при отправке команды оператор предлагает ввести цифру. Как это можно сделать?
И напоследок. Какая команда позволяет прочитать сим id?