Меню

At команды настройки в память



GSM/GPRS модуль SIM900. Часть вторая.

И так вторая часть, посвященная 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, — разрешает выдачу сообщений, плюс выдает еще немного невнятной информации
Читайте также:  Дополнительные настройки и ids

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, — текстовый режим. Команды текстовые. Вывод сообщения в текстовом виде.
Читайте также:  Настройка poweramp на качество

В первый режиме сообщения будут выдаваться в виде шестнадцатеричных кодов 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#», Ъ
Так же как и с смс не изображаем героев и используем запросы с #, а не со *. Практически все операторы понимают запросы в обоих форматах.

Читайте также:  Установка и настройка спутник express

Телефонная книга.
Данные на карте хранятся подобно массивам, с индексами начинающимися с 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. Я ими не пользовался, а в тупую переводить даташит не хочется. Так же многие команды дублируются аналогичными. Все они есть в мануалах.

Источник

Adblock
detector