Главная » Статьи » Полезная информация

AT-команды для работы с SIM900D

 Как уже писалось ранее, для начала общения с только что испеченным модулем, необходимо отправить команду "AT". После чего он автоматически подстроит скорость порта и вернет "OK". Теперь когда скорость настроена, нужно ее зафиксировать, чтобы каждый раз при включении не выпонять это действие. Для настройки порта служат следующие команды:

AT+IPR=19200 - настройка скорости порта.


Можно поставить слудующие значения: 0, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200
0 — автовыбор, это значение стоит по умолчанию .

Также можно настроить режим передачи:

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 — версия прошивки.
Может пригодится если захочется залить в модуль другую версию прошивки.

AT+GSV — она включает в себя все три предыдущие команды.
Вернет производителя модуля, его модель и версию прошивки.



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


 Следующим шагом можно настроить часы реального времени модуля. Для этого оправляем следующую команду:

AT+CCLK=«yy/mm/dd,hh:mm:ss+zz» 
где по порядку идут  «год/месяц/дата,час:минуты:секунды+часовой пояс»  Данные обязательно отправляются с ведущими нулями, тоесть, к примеру, если месяц у нас "4", то отправить должны "04". 
 Получить обратно текущие время и дату можно отправив ту же команду, только со знаком "?":
AT+CCLK? - считываем время с модуля




Дальше можно настроить то, в каком формате будет отвечать модуль. 

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



 Теперь глянем информацию о GSM сети. К примеру, можно узнать качество сигнала.

AT+CSQ - информация о качестве сигнала.
Модуль вернет два числа +CSQ: 17,0
17 - уровень сигнала. Может быть в диапазоне 0..31 или 99. Чем больше тем лучше, но 99 значит его отсутствие. 
0 - коэффициент ошибок связи (т.н. RXQUAL). Может быть от 0 до 7, чем число меньше тем качество связи лучше.





AT+COPS? - информация об операторе, в сети которого зарегистрирован модуль. 
Еще можно сделать запрос в виде AT+COPS=? После достаточно длительного поиска, модуль выдаст список найденных сетей. 

 



 Ну а теперь команды, позволяющие использовать сотовую связь по назначению.

ATD1234567890; - набор номера. 
Модуль позвонит по указанному номеру и вернет один из вариантов
BUSY - номер занят
NO DIALTONE - нет сигнала на линии
NO CARRIER - нет сети или другая проблема (например, нет денег на счету)
NA ANSWER - нет ответа 
CONNECT - есть контакт!

 Если же номер сохранён, например, на SIM карте, и SIM карта выбрана в качестве телефонной книги (обычно, так оно и есть по умолчанию), то для его вызова существует команда ATD>1;. Числовое значение определяет номер ячейки карты, где хранится вызываемый номер.

AT+CLIP=1 - включение определения номера входящего звонка

Если отправить команду с 0, то определение номера отключится и модуль вместо номера вызывающего будет слать только сообщение "RING".

ATA - ответить на звонок.

ATH0 - разорвать все соединения. Может принимать значения 0..5, указывающие какие виды связи нужно разорвать.

ATS0=0 - этой командой можно установить сколько пройдет гудков до автоматического поднятия трубки. 0 - только вручную, стоит по умолчанию.

AT+GSMBUSY=1 - запрет всех входящих звонков.
1, — запретить все входящие звонки
0, — разрешить входящие
Результат данной команды не сохраняется в памяти и его надо повторять при каждом включении.

 Проверка баланса, так называемый USSD запрос можно делать той же командой ATD, только здесь есть один нюанс.
Запрос лучше отправлять на #100#, так как на *100# сообщение приходит в шестнадцатеричном формате:




AT+CMIC=0,15 – команда для установки чувствительности микрофона. Чувствительность определяется числовым значением, которое находится после символа =. В сигнализациях используется очень часто – для аудиоконтроля охраняемого помещения. Экспериментируя с этим значением, можно добиться слышимости малейших шорохов.



 При приеме SMS модуль сообщит об этом, выдав в терминал сообщение «+CMTI: "SM",3». Где 3 означает номер пришедшего сообщения.
 Для прочтения СМС можно использовать команду AT+CMGR=3,0 (3-номер сообщения, которое хотим прочитать, 0-изменить статус сообщения на прочитанный)
 В ответ модуль пришлет информацию о том от кого прошло сообщение и в какое время. «REC UNREAD» означает что у сообщения стоит статус непрочитанного. 



 Также нужно уметь автоматически удалять сообщения, а то в последнее время операторы приноровились срать всякой рекламой, и в автономном плавании быстро произойдет заполнение памяти. Удаляются сообщения командой:

AT+CMGDA=«DEL ALL» команда удалит все сообщения
Также можно удалить только определенный тип сообщений:
«DEL READ» - прочитанных
«DEL UNREAD» - не прочитанных
«DEL SENT» - отправленных
«DEL UNSENT» - не отправленных
«DEL INBOX» - полученных
«DEL ALL» - всех сообщений

 Чтобы отправить SMS нужно ввести команду:
AT+CMGS=«ХХХХХХХХХХХ»  ххх..хх - номер на который нужно отправить сообщение (11 знаков)
После ввода этой команды появится символ ">" указывающий что можно вводить текст сообщения. После ввода и нажатия на Enter каретка сместится вниз и текст можно печатать с новой строки, и поэтому для того чтобы отправить сообщение нужно нажать сочетание CTRL+Z




Цифра 131 после CMGS показывает число отправленных сообщений, которые хранятся на симке. 





 Очень полезная функция при питании от автономных источников - проверка уровня заряда аккумулятора. Узнать сколько это можно отправив следующую команду:
AT+CBC - информация о питающем напряжении
в ответ модуль вернет напряжение питания в милливольтах (3829) и в процентах (66).





 При понижении питающего напряжения ниже 3,3 Вольт модуль начинает слать соответствующие предупреждения. Сообщения будут отсылаться каждые 5 секунд.

 А при достижении напряжения питания до 3,2 вольта, модуль выдаст сообщение "UNDER-VOLTAGE POWER DOWN" и выключится. 


 

 Для собственных нужд можно заюзать встроенный АЦП:
AT+CADC? - команда возвращает значение считанное с АЦП. Производитель рекомендует заводить на вход преобразователя не более 2,8 вольт. 


 Это малая часть всех команд с которыми может работать модуль и которые я проверил. Их намного больше и их все можно найти в документации на модуль. 
 


Категория: Полезная информация | Добавлено: 14.04.2012
Просмотров: 64139 | Комментарии: 14 | Теги: SIM900D | Рейтинг: 4.6/14
Всего комментариев: 14
14 miuha   (19.04.2013 04:32) [Материал]
скорость 9600..... причем испробовано несколько терминальных программ, с одинаковым результатом.

13 exersizze   (18.04.2013 23:58) [Материал]
может проблема в скорости соединения?

12 miuha   (18.04.2013 16:20) [Материал]
Извиняюсь за офтопик: как справиться с кодировкой в PUTTY? при наборе команды вылезает либо кирилица либо краказябы. В других терминалах (в т.ч. BASCOM-овском) - та же фигня... пробовал ставить разные кодировки в вкладке Windows - Translation - меняется только вит краказяб :-//

11 gyparr   (04.12.2012 11:04) [Материал]
у меня снова проблема:
модуль теряет симку.. то есть может проработать час-2-3 и больше, но потом в один момент теряет симку, и даже перезагрузка не помогает.. а потом снова сам по себе находит ее(

10 gyparr   (30.11.2012 23:49) [Материал]
AT+CBC
+CBC: 0,0,3375

АТХ БП +3.3В

Сам он почему-то выключается, ну пишет NORMAL POWER DOWN.. Может надо сделать хард резет ему?)
Он может сам уходить в сон или тому подобное?
sim900d

9 exersizze   (30.11.2012 23:24) [Материал]
интересно отчего запитывал? часом модуль не sim300dz?

8 gyparr   (30.11.2012 20:21) [Материал]
у меня снова косяк какой-то..
в общем, стоял включенным модуль, ну проверял как будет работать долгое время. и в общем, написал он NORMAL POWER DOWN и теперь не могу отправить на него команды, и не принимаются (звонил на него) + к этому, как только подключаю питание, он автоматически врубается и с кнопки не выключается.. что за бред?)

+1   Спам
7 gyparr   (30.11.2012 18:08) [Материал]
понял в чем трабл. посылал смски с помощью проги смс центр, она видать их кодирует как-то.. и модуль не может их вывести в читаемом виде. Отправил смс с телефона - дошло, прочитал.

6 exersizze   (30.11.2012 14:00) [Материал]
Тогда странно, а какой модуль используешь? может цифры набирал на русской раскладке biggrin
Попробуй отправить смс в котором всего одна цифра.

5 gyparr   (30.11.2012 12:04) [Материал]
да, нашел эту команду, включил 1.. теперь вот так

AT+CMGF?
+CMGF: 1

OK
AT+CMGR=1,0
+CMGR: "REC READ","+79124******","","12/11/30,13:05:07+24"
0055007000360030

в моем сообщении было написан Up60

4 exersizze   (30.11.2012 11:49) [Материал]
Если смс написана кириллицей так оно и будет.
Еще попробуй команду
Code
Print "AT+CMGF=1"

она включает текстовый формат сообщения.

заменил капчу на более простую, теперь вроде полегче )

3 gyparr   (30.11.2012 10:59) [Материал]
У меня трабла с чтением и удалением смсок.. Вот что выдает модуль, при запросе чтения смс:

+CMTI: "SM",13
AT+CMGR=13,0
+CMGR: 0,"",27
07919720740800F1040B919721542544F0000821110321256142080055007000360030
понимаю, что в 16ти-ричном формате, но у тебя-то все заработало нормально))

а при удалении:

AT+CMGDA="DEL ALL"
ERROR

ппц у вас тут капча, без напряга не разберешь цифры)

2 exersizze   (21.04.2012 16:29) [Материал]
Конечно можно) отправка в модуль командой Print. Например
Code
print "ATD"; X ; ";"

отправляем в модуль команду ATD (позвонить на номер), Х-номер по которому звоним и заканчиваем команду точкой с запятой.
Прием ответов с модуля немного сложней и там требуется правильно разложить строку на составляющие. Сейчас занимаюсь этим и вскоре выложу результаты своей работы wink

1 RD3AVJ   (21.04.2012 11:45) [Материал]
А можно небольшой пример отправки какой либо из команд контроллером на модуль? Баскомовский, для общего развития. Заранее благодарен!

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]






авторизация