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 вольт. 

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

 


Взято с: avrproject.ru


Категория: AVR
Метки:

Написать коментарий

*
= 4 + 9

Добавить изображение

Последние статьи