8-900-374-94-44
[email protected]
Slide Image
Меню

Sim900D datasheet на русском – Работа с GSM-модулем на примере SIM900D / Habr

GSM модуль SIM900D, AT команды


				

	
	
	
Дата: 17 Марта 2013. Автор: Алексей


	
	
Отладочная плата на базе SIM900D


Здравствуйте!
В прошлой статье мы собрали плату с модулем и проверили ее на работоспособность. Сегодня попробуем поговорить с модулем и что-нибудь его попросить сделать. Для общения с модулем нам понадобиться узнать его язык, а именно набор AT-команд. Для подключения к модулю я буду использовать переходник USB->RS-232->UART. С учетом того что модуль питается напряжением 3,3 в, то потребуется переходник RS-232->UART на базе микросхемы серии 3232. Мне паять было лень, да и готовая плата стоит по цене деталей, поэтому я купил готовую. Выглядит она так:




Подключив все и подав питание, убедившись что все нормально, запускаем программу
PuTTY
. Почему именно ее? Да просто она по моему единственная которая адекватно работает с модулем. Если вам нравится любой другой терминал, виндовый например, работайте в нем, но за адекватную работу я не ручаюсь. После запуска программы выбираем тип соединения Serial, номер COM-порта, скорость и называем сеанс SIM900D.




Далее жмем Сохранить чтобы не вводить каждый раз и соединяемся с модулем нажимая кнопку Соединение. Появится вот такое окно:




Ну теперь можно начинать. Первая команда для соединения с модулем должна быть всегда AT. Если модуль ответил Ок значит все правильно, если нет, ищем ошибку.


Перед тем как переходить к командам немного болтовни. Как я понял все команды разделены на три части.
Первая имеет вид: AT+? вернет значение параметра.
Вторая имеет вид: AT+=? вернет либо Ок либо значение в этом параметре.
Третья имеет вид: AT+= установит значение параметра.


Теперь переходим к командам. Здесь я рассмотрю только основные команды, которые необходимы для работы модуля. Для более глубокого изучения читайте мануал. Но! Я в разделе Справочники создам ветку SIM900D и буду туда складывать команды с описанием по мере их изучения.


AT+GSV
Вернет три строки. Первая компания изготовитель. Вторая идентификатор модуля. Третья версия прошивки.




AT+CSQ
Вернет информацию о качестве приема сети. Первое число это уровень от 0 до 31 либо 99. 99 означает отсутствие сигнала вообще. Вторая цифра мне непонятна, но на одном форуме мне сказали что чем она меньше,тем лучше. Поверим на слово.




AT+COPS?
Это информационная команда, она вернет оператора к которому сейчас подключен модуль. В частности у меня Beeline.




AT+CCLK?
Эта команда вернет текущее время и дату.




AT+CCLK=»гг/мм/дд,чч:мм:сс+чп»
Данная команда устанавливает дату, время и часовой пояс.




ATEх
Данная команда включает режим эха. При работе с МК его лучше отключить.
х=0 Выключить
х=1 Включить


AT+CMEE=x
Данная команда задает вариант ответа ошибки.
х=0 При любой ошибке напишет ERROR.
х=1 Вернет код ошибки. Удобно для работы с МК.
х=2 Вернет подробное описание ошибки. Удобно для работы через терминал.


ATVx
Данная команда устанавливает формат ответа.
х=0 Вернет текстовой ответ. Удобно для работы через терминал.
х=1 Вернет код ответа. Удобно для работы с МК.


ATD89161234567;
Данная команда заставит модуль позвонить по данному номеру. Частая ошибка не установка точки с запятой в конце номера, без нее звонить не будет.
ATA
Снять трубку если пришел звонок.


ATS0=x
Данная команда устанавливает количество звонков до автоматического поднятия трубки. Если х=0, то поднятие только вручную.


ATH0
Разорвать все соединения.


AT+CLIP=1
Данная команда включает режим АОН. При работе с МК по моему не нужный режим.


AT+GSMBUSY=x
Данная команда разрешает/запрещает входящие звонки.
х=0 Разрешить.
х=1 Запретить.


AT+CMGR=x,y
Данная команда читает SMS.
х Порядковый номер сообщения.
y=0 Изменить на статус прочитано.
y=1 Не изменять статус.


AT+CMGD=x
Данная команда удаляет SMS.
х Порядковый номер сообщения.


AT+CMGS=»89161234567″
Данная команда отсылает SMS. После ввода команды модуль предложит ввести текст.
После ввода текста для отправки нужно завершить текст символом Ctrl+Z


И на по следок смешная но очень важная команда.


ATD#102#
Надеюсь вы уже догадались — это баланс. Сразу отвечу на вопрос почему вначале #. Дело в том что если использовать *, то вы получите текст в HEX формате, а так все Ок.




Отладочная плата на базе SIM900D


Вот и все. В следующей статье будем прикручивать модуль к МК.
Удачи!
Kos    24.05.14

Больше года прошло, а к МК до сих пор не прикрутили?)))))


Алексей    24.05.14

Да чего-то я подзабил на него))) Платка покрылась пылью. Чел который хотел на ее базе мониторить температуру в доме передумал, а мне оно как-то пока не нужно. Если интересно прикрутить к МК то можно подумать. Там в общем ничего сложного нет.


Kos    06.06.14

Было бы интересно посмотреть на исходники прошивки)))


Алексей    07.06.14

На недельке попробую че нить накидать


Александр    13.06.14

А обязательно прикручивать микроконтроллер? Вроде с поддержкой embedded AT он не нужен. Я ещё толком не разобрался если у вас есть подробная информация скиньте пожалуйста на почту([email protected]).


Ааааа    14.06.14

Поправьте кодировки


Алексей    14.06.14

Кодировки где?


timm    02.07.14

Вопрос — если на плате MAX3232 замкнуть пины RX и TX, в терминале мне должно будет приходить эхо на мои запросы? Т.е. схема такая: на компе запущена Putty, к компу подключен USB-COM конвертер, к которому подключена MAX3232. Дальше подключений нет, только замкнуты RX и TX. У меня не работает MAX3232 либо USB-COM конвертер, вот пытаюсь разобраться.


Алексей    02.07.14

Давайте по порядку. Для того чтобы проверить USB-COM, просто перемкните 2 и 3 контакты на переходнике. При посылке в порт через Putty вам должно вернутся тоже самое. Ну будет казаться что вы просто печатаете текстовой файл. Если ничего выводится не будет, то не работает переходник. Но это мало вероятно. Внимательно посмотрите правильность разводки MAX3232 Питание не забудьте подвести 3,3в и обвязать общий провод.


timm    03.07.14

Всё получилось! Несколько дней мучился, не у кого спросить было. Проблема была в том, что я не подавал питание на Vcc на плате MAX3232, т.к. почему-то решил, что плата сама от COM-порта питается. Подавать на Vcc можно от 3 до 5В, не обязательно 3.3В. У меня и от 2.9В работает. Спасибо за ответ.


CrazyPit    08.10.14

Некрасиво запрещать copy paste на страничке пришлось сохранять страничку и открывать ее в ворде.. защита банальна но пользоваться неудобно


Алексей    08.10.14

Каюсь. Исправлю. Самому надоело.


Андрей    09.10.14

Команда A/ кошерная — Повтор предыдущей команды.


Андрей    19.10.14

Может какую нибудь темку открыть по командам для SIM900D. Я вот сейчас с FTP файлик скачал платкой свежекупленой, пару вечеров откорячился с командами по форумам. Глядишь кому то пригодится. За примечание про точку с запятой в конце набора номера респектище большое. На других сайтах на ней внимание не акцентировалось, так тоже не сказать что бы сильно помучился, но и NO CARRIER на ровном месте радости не доставляло.


Алексей    19.10.14

Темку на форуме? Просто я как-то начал тут. В принципе можно продолжить.
Алексей    19.10.14

Можно даже все там переписать и сгруппировать по темам.


Андрей    20.10.14

В «тут» продолжить может только хозяин сайта. с одной стороны это хорошо тем что получается не засраный флудом справочник. С другой стороны если возникнут вопросы там их уже не обсудить. Можно выкладывать на ветке форума, с отступлениями и развёрнутыми комментариями в качестве рабочего материала. А после проверки как минимум ещё одним человеком на предмет работоспособности забивать в скрижали «тут»


Алексей    20.10.14

Ща сделаем)


Алексей    20.10.14

Готово.








www.avrki.ru

Система удаленного контроля на GSM модуле SIM900D — Проекты — AVR project.ru

 Итак, после продолжительного времени раскуривания тонкостей работы с GSM модулем SIM900D анонсируем первый рабочий проект, совмещающий в себе охранную систему с возможностью удаленного контроля. Если кратко, то устройство способно отправлять информирующие SMS  в случае срабатывания датчика проникновения, делать дозвон для возможности аудиоконтроля помещения, следить за температурой и отправлять ее смс-кой по запросу, а также управлять какой-нибудь нагрузкой по команде отправленной по смс.

 Кто следил за данной темой, тот в курсе, что у меня GSM модуль и модуль управления им — две разные платы, соединенные бутербродом (см. плата с SIM900D и плата управления). На управляющей плате помимо микроконтроллера ATmega32a стоит модуль питания, выполненный на преобразователе LM2596, он запитывает схему постоянным напряжением 3,5 вольт. В принципе подойдет любой другой источник питания, главное чтобы он был способен кратковременно вытянуть до 2 ампер (именно такое потребление GSM-модуля в момент регистрации).

 Удобства ради, к плате управления подключен дисплей от телефона Nokia3310, методы работы с котором уже ни раз описывались на этом сайте. Благодаря дисплею можно быстро определить состояние устройства и значение датчиков.

 В итоге получившаяся схема подключения вышла такая (кликабельно): 


 Нумерация выводов микроконтроллера на схеме приведена для DIP корпуса, поэтому если повторяете схему с использованием мк в корпусе TQFP будьте внимательны, нумерация выводов у него отличается. Тактируется микроконтроллер от внешнего кварца на 16 МГц. 

 Линия Control идущая от коллектора транзистора Q2 к выводу PortD.4 микроконтроллера добавлена для перестраховки и нужна за тем чтобы следить включен ли модуль. Так как порог выключения у SIM900 составляет 3,2 вольта то даже при незначительной просадке напряжения модуль автоматически выключится, тогда как микроконтроллер продолжит работать и выполнять программу (порог сброса у ATmega32a 2,7 вольта). В рабочем состоянии на этой линии находится низкий уровень. Если микроконтроллер обнаружит что на этой линии высокий уровень, выполнится функция повторного запуска GSM модуля.

 А вот так это выглядит в работе на данный момент.

 После окончательной обгонки программы, все это будет засунуто в корпус, а разъемные соединения для надежности  будут запаяны. 

 На дисплей выводится основная информация о состоянии устройства: название оператора, качество сигнала связи, значение температуры с датчика 18b20, состояние выхода нагрузки и датчика проникновения, а так же время и дата.

 Видео включения модуля


 Время и дата берутся от встроенных в GSM-модуль часов. Для их работы обязательно наличие 3-х вольтовой батарейки подключенной к выводу 15 (VRTC). Диод D1 рекомендуется ставить с низким падением напряжения, например Шоттки. Настройка часов и даты делается в ручную, команды были описаны ранее здесь

 Дата выводится на дисплей в том формате как получается с модуля, тоесть сначала год, затем месяц и дата. Здесь пока ничего менять не стал.

 За измерение температуры отвечает датчик DS18B20, он подключается к выводу PortD.3 микроконтроллера.

 К PortD.6 можно подключить какую-нибудь нагрузку и управлять ей посредством команд смс. У меня сейчас висит светодиод — D4 на схеме. Но ничего не мешает повесить сюда релюху или симистор и управлять чем-нибудь посерьезней. 

  В охранных целях планируется применение датчика движения HC-SR501, купленного на E-bay. В случае срабатывания на выходе датчика появляется логическая единица. Поймав ее, микроконтроллер даст команду на отправку SMS сообщения по телефонному номеру, заданному в программе. 

 Выход датчика подключается к выводу PortD.7 микроконтроллера, на схеме, датчик условно заменен на кнопку.

 Заместо датчика движения можно ставить любые другие средства обнаружения проникновения — датчики открывания окон и дверей, датчики разбития стекла, фотоэлектрические датчики и др. в общем все на что способна фантазия. 

 Для того чтобы предотвратить многократное отсылание предупреждающих смс в случае срабатывания датчика, в программу введено ограничение: после первого отправленного смс ставится запрет на последующую отправку. Чтобы заново разрешить отправку уведомляющих сообщений при срабатывании датчика, необходимо отослать на модуль смс с определенной командой. Когда посылка смс запрещена на дисплей возле состояния датчика, выведется восклицательный знак.

 Список команд

 А вот и список команд в смс которые обрабатывает модуль. Для удобства и простоты комады цифровые, возможно в следующих версиях прошивки будут более осмысленные имена команд 🙂

 0 — Отключение нагрузки (на выводе PortD.6 выставляется логический 0)

 1 — Включение нагрузки  (на выводе PortD.6 выставляется логическая 1)

 2 — Приняв эту команду, модуль перезвонит на указанный в программе телефонный номер

 3 — Запрос баланса и отправление его смс-кой обратно на указанный номер. Здесь есть один важный нюанс — ответы на USSD запросы обязательно должны приходить в латинице. Иначе заместо осмысленного текста в ответ придет сообщение в шестнадцатеричной кодировке. Как перевести USSD в латиницу нужно уточнить у своего оператора. К примеру, на используемой мной симке от Смартса, нужно ввести *102*1# (в мегафоне *105*0#)

 4 — Запрос температуры. Значение температуры будет отправлено нам в смс.

 5 — Разрешенить отсылать сообщения в случае срабатывания датчика проникновения.

 6 — Запрет на отправление уведомляющих смс от датчика проникновения. 

 ? — По этой команде модуль пришлет нам смс, в котором находится общая информация об устройстве, такие как значение с датчика температуры, включена ли нагрузка, состояние на входе от датчика проникновения и разрешена ли отправка уведомляющих смс от него. К примеру, вот как может выглядеть такое сообщение: температура +24, нагрузка выключена, на выходе датчика движения 0, отправка смс в случае срабатывания запрещена.

 Теперь как настроить чтобы модуль отправлял sms именно на ваш номер. В архиве с программой находим основной файл программы, она так и называется «программа» 🙂 и находим в ней константу:

Const Phonenumber = «+7908390хххх»  

подставляем сюда свой номер телефона, компилируем программу и получаем hex файл прошивки. 

 Программа как и всегда написана в Bascom-AVR, поэтому разобраться с алгоритмом работы с GSM модулем достаточно просто. Удачи!

 Ну и напоследок демонстрация того как модуль обрабатывает команды. 

 Отдельное спасибо за участие и помощь в разработке, давнему товарищу сайта Сергею RD3AVJ!   

Архив с исходниками

Схема в Proteus

UPD: от 31.10.12

Немного доработал прошивку, теперь для того чтобы задать номер на который будут слаться уведомляющие SMS не нужно перекомпилировать программу. Достаточно послать на модуль смску с сообщением «Firstnumber» (без ковычек) и номер, с которого была отправлена эта команда, записывается в энергонезависимую память микроконтроллера. 

Скачать прошивку

avrproject.ru

ETC SIM900 Даташит, SIM900 PDF, даташитов

Номер в каталогеОписание (Функция)PDFпроизводитель
SKY77552Quad-Band Tx / Dual-Band Rx iPAC™ FEM for GSM / GPRS (824–915 MHz and 1710–1910 MHz) Skyworks Solutions
SKY77548Tx-Rx iPAC™ Front-End Module for Dual-Band GSM / GPRS Skyworks Solutions
CXM3000GAGSM900/1800/1900 Dual/Triple Band Rx/Tx GSM/GPRS Transceiver Module / 60-pin LFLGA module package Sony Semiconductor
SKY77500SKY77500 iPAC™ FEM for Quad-Band GSM / GPRS Skyworks Solutions
SKY77543Tx–Rx iPAC™ FEM for Dual-Band GSM / GPRS (824–849 MHz), (1850–1910 MHz) Skyworks Solutions
SKY77555Tx–Rx FEM Based on CMOS PA for Dual-Band GSM / GPRS (880–915 MHz and 1710–1785 MHz) Skyworks Solutions
SKY77542SKY77542 Tx–Rx iPAC™ FEM for Dual-Band GSM/GPRS (880–915 MHz), (1710–1785 MHz) Skyworks Solutions
SKY77528Tx Front-End Module for Quad-Band GSM / EDGE Skyworks Solutions
SKY77529Tx Front-End Module for Quad-Band GSM / EDGE Skyworks Solutions
SKY77527-21Tx Front-End Module for Quad-Band GSM / EDGE Skyworks Solutions

ru.datasheetbank.com

AT-команды для работы с SIM900D — Полезная информация — AVR project.ru

 Как уже писалось ранее, для начала общения с только что испеченным модулем, необходимо отправить команду «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

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

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

 

shemopedia.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *