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 вольт.
Это малая часть всех команд с которыми может работать модуль и которые я проверил. Их намного больше и их все можно найти в документации на модуль.
Последние статьи
- Лучшая практика проектирования при размещении компонентов печатной платы
- Android 6.0 на lancer X
- Простой усилитель мощности класса АВ своими руками.
- Двухтактный ультралинейный ламповый УНЧ на EL84 (6П14П).
- Люксметр на ATmega8 и цифровом датчике BH1750
- Контроллер для светодиодной ленты с ИК управлением
- Самодельный LED светильник на основе ИК датчика HC-SR501
- Простой усилитель низкой частоты на TDA7377 и NE5532
- Простейший звонок с двумя мелодиями
- LED Cube 8x8x8 на Arduino с RTC