At команды уровень сигнала

Диалог происходит по средством 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

Входящий звонок с включенным АОН
Где:
Первый параметр – номер телефона входящего звонка
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 проигрывается быстро.

Команды для текстового режима и в 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».

И так вторая часть, посвященная gsm модулю Sim900. В ней будет описаны самые основные команды управления и получения данных.

AT Команды.
С внешним миром модуль общается посредством AT команд. Пользователи модемов должны их помнить:) Все команды делятся на базовые, большинство из которых появились еще во времена U.S. Robotics, так называемые S-команды, родом оттуда же и расширенных, добавленных в стандартах GSM07.05-07.07. Практически все команды работают в 3 режимах — тестовом, чтения и записи.
В тестовом режиме возвращается OK, если команда поддерживается или возможные значения данных в параметре команды. Тестовый режим определяется окончанием команды в виде ‘=?’
В режиме чтения возвращаются текущие значения параметра, отличается от тестового наличием в конце просто символа ‘?’
И в режиме записи после ‘=’ идут новые значения параметров.
Количество параметров при чтении и записи не обязательно должно совпадать.
Как пример:
AT+CFUN=? тестовый режим, вернет +CFUN: (0,1,4),(0-1), что значит у нее 2 параметра. Первый может принимать значение 0,1 или 4, а второй может быть в интервале 0-1.
AT+CFUN? режим чтения, у меня возвращает +CFUN: 1, все хорошо.
AT+CFUN=4,0 запись, приемо/передатчик выключается без перезагрузки модуля.
Все команды могут вводиться как строчными, так и прописными буквами.

Включение.
При включении модуль должен выдать 00 49 49 49 49 FF FF FF FF в шестнадцатеричном режиме, у меня выдает обычно только последние один-два FF. Ну да ладно, смысловой нагрузки в них нет.
RDY
+CFUN: 1

Где

  • 0 — минимальная функциональность
  • 1 — полная функциональность
  • 4 — отключен приемо/передатчик

Затем, если пин кода нет, то
+CPIN: READY
и если установлен, то
+CPIN: SIM PIN
На что надо ответить через
AT+CPIN=pin
В любом случае в ответ получим:
OK
Call Ready

Модуль готов к работе.

Управление портом.
Вначале работы необходимо задать режимы работы com порта. Для этого есть несколько основных команд:
AT+IPR=9600 — скорость порта.
Можно выбрать: 0, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200
0 — автовыбор. Стоит по умолчанию и для правильной работы первый посылаемый символ должен быть прописной буквой ‘A’.
AT+IFC=0,0 — режим управления потоком в обе стороны.
0, Без контроля.
1, Программный режим (XON/XOFF). Имеются проблемы в использовании, лучше не использовать
2, Аппаратный. Управление через CTS, DTR и т.д.
AT+ICF=3,3 — устанавливает режим передачи.
Первое число — биты данных/четность/стоп биты

  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+GMM — идентификатор модуля.
Вернет: SIMCOM_SIM900D, или какой именно у Вас модуль. Можно убедиться, что не обманули и не подсунули другой, более дорогой модуль.
AT+GOI — более короткий идентификатор модуля.
У меня SIM900D
AT+GMR — версия прошивки. Может пригодится при желании использовать новые фишки.
Мой порадовал меня строкой: Revision:1137B06SIM900D64_ST
После прошивки строка поменялась на: Revision:1137B07SIM900M64_ST
AT+GSV — команда 3-in-1.
Вернет и производителя модуля и его модель и версию прошивки:
SIMCOM_Ltd
SIMCOM_SIM900
Revision:1137B07SIM900M64_ST

AT+GSN — вернет IMEI модуля. Между прочим весьма полезная информация. Можно использовать для идентификации модуля в удаленной программе.

Команды получающие текущее состояние.
AT+CSQ — информация о качестве сигнала.
Вернет два числа +CSQ: 21,0
21, — уровень сигнала. Может быть в диапазоне 0..31 или 99. Чем больше тем лучше, но 99 значит его отсутствие. После прошивки значение почему то изменилось до 27.
0, — так называемый RXQUAL. Изменяется от 0 до 7, чем число меньше тем лучше.
AT+CREG=1 — разрешить выдачу сообщения о смене регистрации в сети.
Может принимать значения 0..2, где

  • 0, — запрет выдачи сообщений.
  • 1, — разрешить сообщение о смене статуса регистрации.
  • 2, — разрешает выдачу сообщений, плюс выдает еще немного невнятной информации

AT+CREG? — получить тип регистрации в сети.
Вернется что-то вроде +CREG: 0,1
Где:
0, — нет сообщения о смене регистрации в сети.
1, — текущее состояние.

  • 0 — не зарегистрирован, поиск сети не ведется,
  • 1 — зарегистрирован в своей домашней сети,
  • 2 — не зарегистрирован, идет поиск сети,
  • 3 — регистрация отклонена,
  • 4 — модуль сам не знает что происходит
  • 5 — зарегистрирован в роуминге.

Разрешив выдачу этих сообщений можно отслеживать когда модуль находит/теряет сеть или попадает в роуминг.
AT+CSPN? — информация об операторе из сим-карты. Может пригодится для автоматической настройки GPRS. Команда только для чтения.
+CSPN: «Beeline», 0
AT+COPS? — информация об операторе, в сети которого зарегистрирован модуль. Мне выдало в ответ +COPS: 0,0,«Beeline»", что значит 0 — автоматический выбор сети (первый 0), 0 — длинный тестовый формат имени (второй 0), и само названия оператора.
Еще можно сделать запрос в виде AT+COPS=? После достаточно долгого обдумывания вам выдадут список найденных сетей. У меня нашлось следующее:
+COPS: (2,«MegaFon RUS»,«MegaFon»,«25002»),(1,«MTS-RUS»,«MTS»,«25001»),(1,«Beeline»,«Beeline»,«25099»),,(0,1,4),(0,1,2)
AT+CPAS — информация о текущем состоянии телефона.
Может вернуть +CPAS: 0

  • 0, — готов к труду и обороне
  • 2, — не известно что делает. Ответ и выполнение команд не гарантируется.
  • 3, — идет входящий звонок.
  • 4, — есть голосовое соединение.

Тоже команда только для чтения.
AT+CCLK? — получить текущее время. Вернет текущее время в виде: +CCLK: «11/04/11,01:46:33+00»
AT+CCLK=«yy/mm/dd,hh:mm:ss+zz» — установить время. Обязательно в таком формате и с ведущими нулями.
Самостоятельно время не устанавливается, нужно делать все ручками.

Сервисные команды.
На самом деле эти команды управляют эхом, полнотой информации об ошибке и подобные.
ATE0 режим эха

  • 0, выключен
  • 1, включен. Стоит по умолчанию.

ATV0 — формат ответа модуля.

  • 1, полный текстовый ответ с эхом (если включен). Стоит по умолчанию.
  • 0, возврат только кода ответа.

В первом случае всегда будет возвращаться OK, ERROR и прочее, а во втором будут возвращаться коды результата. Так вместо OK вернется 0, а вместо ERROR 4.
AT+CMEE=0 — уровень информации об ошибке. Может быть 0..2.

  • 0, — отключено. Будет просто писать ERROR.
  • 1, — код ошибки. Будет возвращать цифровой код ошибки.
  • 2, — описание ошибки. Напишет что именно ему не нравится в команде.

Для игр через терминал режим удобней режимы ATV1, ATE1 AT+CMEE=2, для общения с микроконтроллером лучше использовать ATV0, ATE0 и AT+CMEE=0.

Команды набора номера.
Все они пришли еще от модемов и ничего нового в них нет.
ATD1234567; — позвонить по номеру
ATD>1; — позвонить по 1 номеру из сим карты
ATDL — позвонить по последнему набранному номеру
В ответ можем получить:
BUSY
NO DIALTONE
NO CARRIER
NA ANSWER
CONNECT

AT+CLIP=1 — архи полезный параметр. Включает режим CLI (Calling Line Identification) или то, что по русски зовется АОН. После его включения при входящем вызове выдает не просто сообщение RING, а еще добавляет строку типа
+CLIP: "+7XXXXXXXXXX",145,"",,"",0 или
+CLIP: "+7XXXXXXXXXX",145,"",,«main»,0

Где

  • "+7XXXXXXXXXX", номер абонента
  • 145, формат номера в сообщении. 145 — интернациональный формат, 129 — неизвестный (например при русских символах)
  • 0, — данные верны, 1, — данные не дает оператор 2, — данные недоступны из за ограничений сети.
  • «main», — имя записи в записной книжке

ATA — ответить на входной звонок.
ATH0 — разорвать все соединения. Может принимать значения 0..5, указывающие какие виды связи нужно разорвать.
ATS0=0 — количество звонков до авто поднятия трубки. 0 — только вручную.
AT+GSMBUSY=1 — запрет всех входящих звонков.

  • 1, — запретить все входящие звонки
  • 0, — разрешить входящие

Результат данной команды не сохраняется в памяти и его надо повторять при каждом включении.

СМС.
По умолчанию все сообщения сохраняются на сим карту. При поступлении сообщения придет сообщение:
+CMTI: «SM»,1
1, — номер полученного сообщения.
Настройки режимов приема смс.
AT+CSCA — номер сервис центра отправки сообщений. Берется автоматом из сим карты, но вдруг понадобится. Можно читать и писать. Вот что мне выдал для билайна:
+CSCA: "+79037011111",145
AT+CMGF — формат сообщений, 0-1.

  • 0, — режим PDU, управление кодом команды. Вывод сообщения в HEX коде. Режим по умолчанию
  • 1, — текстовый режим. Команды текстовые. Вывод сообщения в текстовом виде.

В первый режиме сообщения будут выдаваться в виде шестнадцатеричных кодов ascii или unicode. Очень, очень не удобоваримый режим.
AT+CSCB=1, прием широковещательных сообщений. Это та гадость, через которую сейчас срут все операторы. По умолчанию включена, для исправления этой недоработки используем указанную команду.
Работа с смс.
AT+CMGL — чтение смс. Не удобная команда, лучше использовать следующую. Только команда на запись в формате AT+CMGL=stat,mode где
stat (режим PDU/текстовый):

  • 0/«REC UNREAD» — не прочитанные сообщений.
  • 1/«REC READ» — прочитанные сообщений.
  • 2/«STO UNSENT» — не отправленные.
  • 3/«STO SENT» — отправленные.
  • 4/«ALL» — все сообщения.

mode:

  • 0, — обычный режим.
  • 1, — не изменять статус сообщения

Формат команды зависит от установок сделанных в AT+CMGF, если выбран режим PDU, то параметр «ALL» даст ошибку и наоборот. Изменение статуса значит, что сообщение со статусом не прочитанный станет как ни странно уже прочитанным.
AT+CMGR=1,0 — чтение смс. Команда только на запись.

  • 1, — номер смс
  • 0, — обычный режим или 1, — не изменять статус.

По параметрам аналогична AT+CMGL.
AT+CMGDA=«DEL ALL» — удаление всех смс определенного типа. Тоже команда так себе, следующая получше будет.

  • «DEL READ» — прочитанных
  • «DEL UNREAD» — не прочитанных
  • «DEL SENT» — отправленных
  • «DEL UNSENT» — не отправленных
  • «DEL INBOX» — полученных
  • «DEL ALL» — всех сообщений

AT+CMGD=1,0 — удаление смс.
1, — номер сообщения
0, — режим удаления

  • 0 — удаление указанного сообщений. Работает по умолчанию, можно использовать просто AT+CMGD=2
  • 1 — удаление только всех прочитанных сообщений
  • 2 — удаление прочитанных и отправленных сообщений
  • 3 — удаление всех прочитанных, отправленных и не отправленных сообщений
  • 4 — удаление всех сообщений

Т.е. для удаления всех сообщения можно ввести команду AT+CMGD=1,4.
AT+CMGS=«ХХХХХХХХХХХ» — отправка смс. Так же зависит от AT+CMGF. После ввода команды выдает приглашение ">" после чего можно вводить текст сообщений. Завершается символом ESC или Ctrl-Z.

Теперь как влияет установки значения командой AT+CMGF.
Для CMGF=0
Сообщение с интернет-портала мегафон:
+CMGR: 0,"",35
07919762020012F10414D0F7FBDDD52E9FC3E6B71B0000114010107565610DD4F29C0E6A97E7F3F0B9EC02

Сообщение с интернет-портала билайн:
+CMGL: 2,1,"",34
07919730071111F10414D04937BD2C7797E9D3E6140000114010713564610CD4F29C0E6A97E7F3F0B90C

Сообщение с моего основного телефона:
+CMGL: 1,0,«4D31B76E»,31
07919730071111F1040B919760472105F50000114010811095610DD4F29C0E6A97E7F3F0B9EC02

И те же сообщения для CMGF=1
+CMGR: «REC UNREAD»,«www.megafon»,"",«11/04/01,01:57:56+16»
Test message.

+CMGL: 2,«REC UNREAD»,«InternetSMS»,"",«11/04/01,17:53:46+16»
Test message

+CMGL: 1,«REC UNREAD»,"+7XXXXXXXXXX",«Main»,«11/04/01,18:01:59+16»
Test message.
В общем, если не хочется заняться героическим преодолеванием трудностей, то используем CMGF=1 и забываем о существовании русских символом.

USSD запросы.
Для проверки баланса и разных настроек обычно используются ussd запросы. Очень часто запросы начинающиеся со ‘*’ возвращают ответ в юникоде, на родном языке. К счастью, многие телефоны не понимают этой кодировки и для них были введены запросы начинающиеся с ‘#’. Они возвращают ответ в стандартном ascii.
Сделать запрос можно 2 способами.
Первый, используя специальную команду:
AT+CUSD=1,"#102#"
1, — режим обработки ответа

  • 0 — выполнить запрос, полученный ответ проигнорировать
  • 1 — выполнить запрос, ответ вернуть в терминал
  • 2 — отменить операцию

"#102#" — само сообщение. Отправляется только то, что находится в скобках.
Второй выглядит как обычный набор номера. Результат всегда возвращается в терминале. Но работает не на всех версиях прошивки.
ATD#102#;
Ответное сообщение приходит в сообщении +CUSD:
Вот что сообщает билайн, на *102#:
+CUSD: 0,«04110430043B0430043D04410020003100340037002E0038003000200440»,72
И то же самое, но на #102#:
+CUSD: 0,«Vash balans 147.80 rub. Bonus: 0.00 rub. Dopolnitel’nye balansy: #106#», Ъ
Так же как и с смс не изображаем героев и используем запросы с #, а не со *. Практически все операторы понимают запросы в обоих форматах.

Телефонная книга.
Данные на карте хранятся подобно массивам, с индексами начинающимися с 1. В принципе данные могут храниться не только на сим-карте, но и в других местах, например в памяти телефона. Но в данном случае эти знания нам не особо актуальны:)
AT+CPBS=«SM» — выбрать как основную память сим-карту. Данный режим стоит по умолчанию.
AT+CPBS? — сообщит тип памяти, количество имеющихся записей и их максимальное количество. Например:
+CPBS: «SM»,3,250 значит, что на сим-карте есть 3 записи из 250 возможных.
Чтение данных.
AT+CPBR=1 — считывает запись с индексом 1.
AT+CPBR=2,5 — считать записи со 2-о по 5-ю.
AT+CPBF=«что ищем» — поиск информации. У меня работало очень нестабильно. Мог найти запись, а мог и нет. Отчего это зависит не очень понятно. На версии B07 поиск стал гораздо стабильней.
AT+CPBF — выдача всех записей на карте.
В любом случае информация идет в виде:
+CPBF: (или +CPBR) 2,"+7ХХХХХХХХХХ",145,«Home», где
2, — номер (индекс) записи.
+7ХХХХХХХХХХ", — номер.
145, — формат имени.

  • 129 — неизвестный (например при русских символах),
  • 161 — национальный формат (в римских цифрах что ли?),
  • 145 — интернациональный формат,
  • 177 — формат, определяемый сетью.

«Home», — имя записи.
AT+CPBW=4,"+71234567890",145,«Test» — записать контакт на сим-карту.
4, — индекс, куда записываем.
AT+CPBW=4 — стереть запись с указанным номером.

Используя эти команды вполне можно организовать несложное управление обогревателем на даче или то же не менее простую охранную сигнализацию для нее же. Для более сложных задач лучше использовать сетевые возможности модуля.
Сеть.
Модуль содержит два блока — APPTCP, через который идет работа с TCP/UDP и блока SAPBR, работающий с FTP/HTTP. В принципе общение с ними весьма простое, для примера приведу общение по ftp. Общение по http будет в другой статье, с уже с готовым устройством и реальной задачей.

GPRS.
Настройка и установка GPRS соединения:
AT+SAPBR=3,1,«CONTYPE»,«GPRS»
AT+SAPBR=3,1,«APN»,«internet.beeline.ru»
AT+SAPBR=3,1,«USER»,«beeline»
AT+SAPBR=3,1,«PWD»,«beeline»
AT+SAPBR=1,1 — установка GPRS связи
AT+SAPBR=2,1 — полученный IP адрес
+SAPBR: 1,1,«10.229.9.115»
AT+SAPBR=4,1 — текущие настройки соединения
AT+SAPBR=0,1 — разорвать GPRS соединение

FTP.
Параметры ftp соединения
AT+FTPSERV=«ftp.site.ru» — адрес ftp сервера
AT+FTPUN=«login» — логин
AT+FTPPW=«password» — пароль
AT+FTPPUTPATH="/" — путь
AT+FTPPUTNAME=«test.txt» — имя файла
AT+FTPMODE=1 — режим работы ftp

  • 1, — пассивный. Стоит по умолчанию
  • 0, — активный.

AT+FTPTYPE=«A» — тип передаваемых данных.

  • A, — только ASCII символы.
  • I, — двоичный режим.

AT+FTPPUTOPT=«APPE» — режим открытия файла.

  • «APPE» — добавить в конец файла
  • «STOR» — создать файл. Если файл существует, то он будет перезаписан.
  • «STOU» — создать уникальный файл. Если файл существует, то будет создан файл с заданным именем и дополненный в имени цифрами.

AT+FTPPUT=1 — открытие ftp соединения
+FTPPUT:1,1,1260 — сессия на запись открыта. Максимальная длина записи 1260 байт.
AT+FTPPUT=2,10 — запись 10 символов.
+FTPPUT:2,10 — после появления приглашения нужно ввести 10 символов. Эха не будет.
AT+FTPPUT:2,0 — закрытие ftp соединения.

Для чтения все практически аналогично, только PUT меняется на GET. Так AT+FTPPUTPATH становится AT+FTPGETPATH.
AT+FTPGET=1 — открытие ftp соединения.
+FTPGET:1,1 — данные для чтения доступны.
AT+FTPGET=2,10 — чтение 10 байт данных. Если данных меньше, то вернется сколько есть.
+FTPGET:2,10 — сколько данных будет для считывания.
Повторное чтение, если указатель стоит на конце файла вернет +FTPGET:2,0.
AT+FTPGET:2,0 — закрытие ftp соединения.

Я не привел и половины имеющихся команд, например команд управления чувствительностью микрофона, генерации сигналов dtmf или измерения напряжения на AC0. Я ими не пользовался, а в тупую переводить даташит не хочется. Так же многие команды дублируются аналогичными. Все они есть в мануалах.

Чем мы можем вам сегодня помочь?

Как определить уровень сигнала в модеме RX?

Изменено: Чт, 24 Авг, 2017 at 10:09 AM

Определение уровня сигнала соединения необходимо в различных ситуациях. Самое частое применение — это, когда модем не выходит на связь, нет звонков, не отправляет СМС. Т.е. для его диагностики.

Для определения уровня сигнала необходимо подключиться к модему с помощью Терминального ПО

Для определения уровня(качества/силы) сигнала в модеме необходимо подать специальную АТ команду:

AT+CSQ

В ответ должно поступить:

+CSQ: 15,99

1. Первое число (в примере 15) — это параметр уровня сигнала.

2. Второе число (в примере 99) — это коэффициент ошибок.

Уровень сигнала сети измеряется в RSSI — стандартная условная единица для GSM.

В документации Received Signal Strength Indication(RSSI)

RSSI может принимать значение от 0 до 31.

Но большинство пользователей привыкло к стандартным значениям в dBm(дБ)

Для того, чтобы преобразовать полученное значение в dBm нужно применить не хитрую формулу:

[-113 + Х * 2] — где Х наш уровень полученный АТ командой.

Посчитаем для нашего примера [-133 + 15 * 2] = -83dBm

Из этого можно сделать вывод, что:

Сигнал выше значений 12-13 считается хорошим.

Выше 15 считается отличным.

Максимальным, практически никогда не бывает, так как оператор регулирует мощность сигнала в мобильных устройствах.

Т.е. если Вы видите значение 30 или 31, это может свидетельствовать о проблемах со связью!

Второй параметр это коэффициент ошибок. Значение в процентах

В документации Bit Error Rate

0 — Меньше чем 0.2%
1 — 0.2% to 0.4%
2 — 0.4% to 0.8%
3 — 0.8% to 1.6%
4 — 1.6% to 3.2%
5 — 3.2% to 6.4%
6 — 6.4% to 12.8%
7 — Больше чем 12.8%
99 — Неизвестно или не определено.

Для визуального определения уровня сигнала для модемов нами разработана утилита TELEOFIS GSM Antenna Tool

Данная утилита работает исключительно с модемами компании TELEOFIS.


[an error occurred while processing the directive]
Карта сайта