====== АТ команды. ====== Практически все команды работают в 3 режимах — тестовом, чтения и записи.\\ В тестовом режиме возвращается OK, если команда поддерживается или возможные значения данных в параметре команды. Тестовый режим определяется окончанием команды в виде '**=?**'\\ В режиме чтения возвращаются текущие значения параметра, отличается от тестового наличием в конце просто символа '**?**'\\ И в режиме записи после '**=**' идут новые значения параметров. ===== Команды управление портом. ===== **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** – Проверка связи с модемом. Должен вернуть “OK” **ATE** – Настройки режима “эха”. Включает отображение вводимых символов в терминале.\\ Параметр ****: * 0 – выключить; * 1 – включить **ATV0** — формат ответа модуля. * 1, полный текстовый ответ с эхом (если включен). Стоит по умолчанию. * 0, возврат только кода ответа. В первом случае всегда будет возвращаться OK, ERROR и прочее, а во втором будут возвращаться коды результата. Так вместо OK вернется 0, а вместо ERROR 4. **ATI** – Команда проверки модели и версии модуля **AT+GETVERS** – Команда чтения версии прошивки модуля **AT&W<значение>** – Cохранение текущей конфигурации настроек в EEPROM память\\ Параметр <значение>: * 0 – сохранить настройки в 0-м профиле, параметр 0 можно не указывать; * 1 – сохранить настройки в 1-м профиле **AT+CPAS** – Проверки статуса модуля.\\ * 0 – готов к работе * 2 – неизвестно * 3 – входящий звонок * 4 – в режиме соединения * 5 – спящий режим **AT+GSN** - вернет IMEI модуля **AT+CCLK?** - считываем время с модуля **AT+CCLK=«yy/mm/dd,hh:mm:ss+zz»** - где по порядку идут «год/месяц/дата,час:минуты:секунды+часовой пояс» Данные обязательно отправляются с ведущими нулями, то есть, к примеру, если месяц у нас "4", то отправить должны "04". Получить обратно текущие время и дату можно отправив ту же команду, только со знаком "?": **AT+CCID** – Возвращает ID SIM карты. Если есть проблемы с SIM картой возвращает “ERROR” **AT+CREG** - Проверка регистрации модуля в сети\\ Параметр : * 0 – выключить уведомление о регистрации в сети * 1 – включить уведомление о регистрации в сети +CREG: * 2 – включить уведомление о регистрации в сети и информацию о местоположении Запрос параметров **AT+CREG?**\\ Формат ответа **AT+CREG: ,**\\ Параметр : * 0 – не зарегистрирован, поиск сети не выполняется * 1 – зарегистрирован в домашней сети * 2 – регистрация отклонена * 3 – не зарегистрирован, выполняется поиск сети * 4 – неизвестно * 5 – зарегистрирован, зона роуминга **AT+CSPN?** — информация об операторе из сим-карты. **AT+COPS?** - Информация об операторе, в сети которого зарегистрирован модуль **AT+COPS=?** - Доступные операторы **AT+CMEE=0** - уровень информации об ошибке. Может быть от 0 до 2.\\ * 0 - отключено. Будет просто писать ERROR. * 1 - код ошибки. Будет возвращать цифровой код ошибки. * 2 - описание ошибки. Напишет что именно ему не нравится в команде. Для работы с модулем через терминал удобней режимы ATV1, ATE1 AT+CMEE=2, для общения с микроконтроллером лучше использовать ATV0, ATE0 и AT+CMEE=0 - так проще будет обрабатывать полученные ответы. Данные настройки не сохраняются после перезагрузки модуля, поэтому необходимо включать эти команды в код программы. **AT+CSQ** - информация о качестве сигнала. Модуль вернет два числа **+CSQ: 17,0** * 17 - уровень сигнала. Может быть в диапазоне 0..31 или 99. Чем больше тем лучше. 99- отсутствие сигнала. * 0 - коэффициент ошибок связи (т.н. RXQUAL). Может быть от 0 до 7, чем число меньше тем качество связи лучше. 99 - отсутствие ошибок. **AT+ENPWRSAWE=** - Команда настройки спящего режима\\ Параметр ****: * 0 – спящий режим запрещен; * 1 – спящий режим разрешен * Ответ OK или ERROR Примечание Значение параметра не сохраняется после выключения модуля. **AT+CPWROFF** - Команда выключения модуля\\ Примечание Не следует одновременно подавать команду и оперировать выводом ON/OFF модуля. ===== Команды управления вызовом: ===== **AT+CLIP=** - Настройка автоматического определения номера (АОН)\\ Параметр : * 0 – АОН выключен; * 1 – АОН включен Примечание: Если отправить команду с 0, то определение номера отключится и модуль вместо номера вызывающего будет слать только сообщение **"RING"**.\\ Сообщение RING повторяется после каждого гудка\\ **ATA** - Ответить на звонок **ATD+79XXXXXXXXX;** - Исходящий вызов для установления голосового соединения\\ Параметр //79XXXXXXXXX// – номер вызываемого телефона, ("**;**" обязательно) **ATD>1;** — позвонить по 1 номеру из сим карты\\ **ATDL** — позвонить по последнему набранному номеру\\ Сообщение от модуля: * CONNECT - Соединение установлено * BUSY - Занят другим сеансом связи * NO ANSWER - Нет ответа * NO CARRIER - Вызов сброшен **ATH** - Команда разъединения соединений (повесить трубку)\\ Параметр ****: * 0 – разъединить все вызовы, параметр 0 можно не указывать; * 1 – разъединить исходящий вызов При CSD вызове для возврата в AT режим нужно набрать +++ в течении 1000 миллисекунд. ===== Команды для работы с SMS сообщениями: ===== **AT+CSCA?** - Возвращает номер сервис центра отправки сообщений. Можно читать и писать. **AT+CMGF=<режим>** - Команда настройки формата SMS сообщений\\ Параметр **<режим>**: * 0 – PDU формат; * 1 – текстовый формат (смс только латиницей) Примечание: Если сообщение отправляется в PDU формате, необходимо установить кодировку UCS2 (при использовании кириллических символов), для текстового формата кодировку GSM, либо UCS2. В PDU формате, текст представлен в виде последовательности шестнадцатеричных чисел. **AT+CSCS=** - Команда выбора кодировки текста\\ Параметр ****: * "GSM" – кодировка ASCII * "HEX" – кодировка шестнадцатеричными значениями * "IRA" – международный справочный алфавит * "PCCP437" – кодировка CP437 (IBM PC) * "8859-1" – кодовые страницы семейства ISO 8859 * "UCS2" – кодировка Unicode (2 байта на символ) **AT+CMGR=** - Команда чтения SMS сообщения\\ Параметр ****: номер считываемого сообщения\\ **AT+CMGR=3,0** - (3-номер сообщения, которое хотим прочитать, 0-изменить статус сообщения на прочитанный)\\ Ответ Для текстового формата (CMGF=1):\\ +CMGR: ,,,\\ OK\\ (или ERROR) Для PDU формата (CMGF=0):\\ +CMGR: ,,,\\ OK\\ (или ERROR) **** — статус SMS сообщения: * 0 – для PDU формата, REC UNREAD – для текстового формата: входящее непрочитанное сообщение * 1 – для PDU формата, REC READ – для текстового формата: входящее прочитанное сообщение * 2 – для PDU формата, STO UNSENT – для текстового формата: неотправленное (исходящее) сообщение * 3 – для PDU формата, STO SENT – для текстового формата: отправленное сообщение * 4 – для PDU формата, ALL – для текстового формата: все сообщения – имя отправителя\\ – отметка времени сервис-центра в формате:\\ год/месяц/день, часы: минуты: секунды ± часовой пояс\\ – текст сообщения в ASCII символах\\ – количество символов сообщения (для PDU формата)\\ – информация о SMS и текст сообщения в PDU формате\\ **AT+CMGS=** - Команда отправки SMS сообщения\\ Отправка SMS на указанный номер телефона. После этой команды ждем символ “>”после чего вводим текст SMS, который завершаем нажатием Ctrl-Z (символ с кодом 0x1A (26)).\\ Формат Для текстового формата (CMGF=1):\\ AT+CMGS= Для PDU формата (CMGF=0): AT+CMGS= Параметр – номер на который посылается сообщение (в ASCII символах) – текст сообщения в ASCII символах – количество байт сообщения в PDU формате – информация о SMS и текст сообщения в PDU формате Ответ +CMGS: OK (или ERROR) – условный номер, присваиваемый модулем Пример AT+CMGS=»+79123456789″ > Perezvoni mne +CMGS: 2 OK Для текстового формата Отправка сообщения «Perezvoni mne» AT+CMGS=27 > 07919740030900F001000B919721436587F900080E 041F044004380432043504420021 > +CMGS: 2 OK Для PDU формата кодировка Unicode (UCS2) Отправка сообщения «Привет!» AT+CMGS=22 > 07919740030900F001000B919721436587F900000A 47E8B435A506A55419 > +CMGS: 2 OK Для PDU формата специальная 7-ми битная кодировка Отправка сообщения «GPS-START2» Примечание Сначала необходимо отправить команду AT+CMGS=»+79123456789″, затем дождаться приглашения в виде символов «> » (> и пробел), после чего отправить текст сообщения. Для завершения процесса следует отправить символ (шестнадцатеричное значение 0х1A) Кириллические символы необходимо отправлять в кодировке Unicode (UCS2), только в формате PDU. Латинские символы можно отправлять в текстовом формате с кодировкой ASCII (GSM), либо в формате PDU с кодировкой Unicode (UCS2), или при помощи специальной 7-ми битной кодировки символами ASCII **AT+CMGS=,** - Команда удаления SMS сообщений\\ Параметр **** – порядковый номер удаляемого сообщения, для удаления одного сообщения\\ Параметр **** * 0 – удалить сообщение с номером , можно не указывать * 1 – удалить все прочитанные сообщения * 2 – удалить все прочитанные и отправленные сообщения * 3 – удалить все прочитанные, отправленные и неотправленные сообщения * 4 – удалить все сообщения **AT+CMGDA="DEL SENT"** - Удаление групп СМС: * DEL READ — прочитанные * DEL UNREAD — не прочитанные * DEL SENT — отправленные * DEL UNSENT — не отправленные * DEL INBOX — полученные * DEL ALL — всех сообщения **AT+CSMS=1** – Устанавливает поддержку SMS “GSM03.40 and GSM03.41;SMS related AT commands support GSM07.05” Phase 2+\\ ===== USSD запросы. ===== Запросы начинающиеся со '*' возвращают ответ в юникоде, на родном языке.\\ Запросы начинающиеся с '#' возвращают ответ в стандартном ascii. **AT+CUSD=1,"#102#"** - USSD запрос\\ Первый параметр – режим обработки операции: * 0 – выполнить запрос, ответ проигнорировать * 1 – выполнить запрос, вернуть ответ * 2 – отменить запрос Второй параметр – запрос в кавычках. Второй выглядит как обычный набор номера. Результат всегда возвращается в терминале. Но работает не на всех версиях прошивки. **ATD#102#** - Упрощенный USSD запрос ===== Телефонная книга. ===== Данные на карте хранятся подобно массивам, с индексами начинающимися с 1. В принципе данные могут храниться не только на сим-карте, но и в других местах, например в памяти телефона. Но в данном случае эти знания нам не особо актуальны:) **AT+CPBS=«SM»** — выбрать как основную память сим-карту. Данный режим стоит по умолчанию. **AT+CPBS?** — сообщит тип памяти, количество имеющихся записей и их максимальное количество.\\ Например: //+CPBS: «SM»,3,250// значит, что на сим-карте есть 3 записи из 250 возможных. ===== Чтение данных. ===== **AT+CPBR=1** — считывает запись с индексом 1. **AT+CPBR=2,5** — считать записи со 2-о по 5-ю. **AT+CPBF="что ищем"** — поиск информации. **AT+CPBW=4,"+71234567890",145,«Test»** — записать контакт на сим-карту.\\ 4, — индекс, куда записываем. **AT+CPBW=4** — стереть запись с указанным номером. ===== Прочее ===== **AT&F** - Сброс настроек до заводских **AT+CPOWD=1** - Выключение модуля * 0 – срочное * 1 – нормальное **AT+CFUN=1,1** - Энергосберегающий режим и перезагрузка\\ Первый параметр: * 0 – минимальный функционал * 1 – нормальный режим (по умолчанию) * 2 – выключения цепей приёма и передачи сигнала Второй параметр: * 0 – выполнить без перезагрузки * 1 – перезагрузить (доступно только в нормальном режиме, т.е. параметры = 1,1) Ссылки:\\ http://www.2150692.ru/faq/36-otpravka-sms-cherez-arduino-i-gsm-modul-neoway-m590\\ http://radiolaba.ru/microcotrollers/gsm-modul-neoway-m590-opisanie-i-komandyi-upravleniya.html\\ http://alex-exe.ru/radio/wireless/gsm-sim900-at-command/\\ http://we.easyelectronics.ru/part/gsm-gprs-modul-sim900-chast-vtoraya.html