GSM модуль NEOWAY M590 – описание и команды управления



Описание GSM модуля NEOWAY M590, команды управления
GSM модуль представляет собой беспроводное коммуникационное устройство (модем) для приема/передачи данных в сетях мобильной связи. В любом мобильном телефоне установлен такой модуль, благодаря которому возможно голосовое общение, прием сообщений, выход в интернет. В этой статье я расскажу про GSM/GPRS модуль NEOWAY M590, приведу описание и назначение основных команд.
Данный модуль, смонтированный на плате с минимальной обвязкой (а также в виде конструктора) можно приобрести в Китае, где он позиционируется как модуль под Arduino.

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

На следующей картинке представлена схема с рекомендуемой обвязкой модуля:

GSM модуль NEOWAY M590, схема подключения
Модуль питается напряжением 3,3 – 4,5В, максимальный ток потребления кратковременно может достигать 2А (особенно в момент включения), поэтому конденсатор C1 должен иметь минимальную емкость в 1000 мкФ, желательно больше. В режиме ожидания средний ток потребления модуля равен 25 мА.

Для включения модуля необходимо подать положительный импульс на линию ON/OFF (база транзистора VT1), длительность импульса должна быть не менее 300 мс. После успешного включения и выхода в рабочий режим, светодиод статуса HL1 начнет мигать с частотой в 1Гц. Рекомендуется выдержать паузу в 2 секунды после включения, прежде чем отправлять команды на модуль. При включении модуль выдает сообщение MODEM:STARTUP, затем через 10-15 секунд сообщение +PBREADY, означающее, что телефонная книга готова к использованию.

Для выключения модуля необходимо повторно подать такой же положительный импульс, или же отправить специальную команду на выключение (AT+CPWROFF). В выключенном состоянии модуль потребляет ток в пределах 80 мкА.

Номинальное рабочее напряжение линий ввода/вывода модуля (RXD, TXD, DTR, RING, LED) составляет 2,85В. Напряжения на линиях ввода (RXD, DTR) не должны превышать 3,3В, для исключения их повреждения, поэтому для их сопряжения с логическими уровнями большего напряжения установлены элементы VD1, R1, VD2, R2. С помощью резисторов эти входы подтягиваются к линии VCCIO, после включения модуля на этой линии появляется напряжение величиной 2,85В (макс. выход. ток 3 мА), тем самым обеспечивается безопасный логический уровень для линий ввода. Диоды предотвращают входы от перенапряжения.

В случае зависания модуля, имеется возможность аварийного выключения, для этого необходимо подать положительный импульс на линию EMERGENCY OFF (база транзистора VT2) длительностью 100 мс. После этого необходимо выдержать паузу в 5 секунд перед повторным включением, чтобы исключить возможность повреждения модуля.

“Общение” с модулем осуществляется с помощью стандартного интерфейса UART, линия MCU TX подключается к выходу передатчика управляющего устройства (микроконтроллер, компьютер), вывод MCU RX к входу приемника управляющего устройства.

Для снижения энергопотребления в модуле предусмотрен спящий режим, по умолчанию этот режим отключен, для его включения необходимо предварительно подать команду на разрешение спящего режима (at+enpwrsave=1). Затем необходимо установить низкий логический уровень на линии SLEEP, после чего, через 10-30 секунд модуль “заснет”. Во время “сна” модуль не реагирует на команды, поступающие по UART. Установка высокого логического уровня на линии SLEEP, выводит модуль из спящего режима в течение 50 мс. Если во время “сна” поступит SMS сообщение, данные от сервера, или входящий звонок, то модуль проснется и отправить соответствующее сообщение по UART, после чего управляющее устройство должно выставить высокий логический уровень на линии SLEEP, чтобы продолжить обмен данными. Если этого не произойдет, модуль автоматически уйдет в “сон” в течение 10-30 сек. В спящем режиме потребляемый ток составляет 2,5-3 мА.

При поступлении входящего вызова на линии RING появляются импульсы с низким логическим уровнем длительностью 30 мс, частота следования один раз в 5 секунд (в такт звуку гудка). При получении SMS сообщения, на линии появляется однократный импульс длительностью 25-35 мс. Данную линию можно использовать для генерации прерываний в управляющем устройстве.

Линии DCD (16-й вывод модуля), DSR (17-й вывод модуля) не используются, остальные выводы задействованы для подключения СИМ карты A2.

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

Чтобы поработать с модулем я подключил его к компьютеру с помощью USB-UART преобразователя. В качестве терминальной программы я использовал Terminal v1.9b by Bray. В программе необходимо выставить следующие настройки подключения: 8 бит данных, без проверки четности, один стоповый бит, управление потоком отключаем. По умолчанию модуль настроен на скорость 9600 бит/сек, также поддерживаются 1200, 2400, 4800, 19200, 38400, 57600, 115200 бит/сек.

На следующем скриншоте можно увидеть последовательность приема/передачи данных между компьютером и модулем:
Обмен данными между GSM модулем и компьютером
Теперь рассмотрим структуру стандарта связи, инструкции и особенности приема/передачи данных. GSM модули управляются специальными AT командами, которые изложены в нескольких стандартах, таких как GSM 03.40, GSM 07.07 и т.д.

Любая команда начинается с символов AT, после которых следует название команды, параметр команды, и завершающий символ <CR> – возврат каретки (шестнадцатеричное значение 0x0D, в языках программирования “\r”), этот символ должен присутствовать в конце каждой команды. Пример:

AT+IPR=9600<CR>, где +IPR – название команды (настройки скорости порта UART), 9600 – значение скорости порта которое передается модулю.

Для большинства команд можно запросить ее текущие и возможные варианты параметров:
Команда AT+IPR?<CR>, запрашивает текущее значение скорости порта.
Команда AT+IPR=?<CR>, запрашивает возможные варианты значений для скорости порта.

Если в конце команды опустить символ <CR>, то модуль не будет воспринимать команды. Для ввода этого символа в терминальной программе, необходимо указать его шестнадцатеричное значение из таблицы ASCII — $0D, символ $ указывает программе, что далее идет число шестнадцатеричном формате. В итоге команда в терминале будет выглядеть следующим образом: AT+IPR=9600$0D.

В GSM модемах имеется специальный режим, называемый “эхом”, это повторение символов получаемых от управляющего устройства. То есть, модуль возвращает полученную команду, а затем выдает ответ на эту команду. Если “эхо” отключено модем выдает только ответ. В моем случае режим “эха” в модуле был включен по умолчанию, выше на скриншоте программы в окне приема сообщений можно увидеть возвращенные команды.

Каждое ответное сообщение от модуля начинается и заканчивается символами <CR> и <LF>, где <LF> – символ перевода строки (шестнадцатеричное значение 0x0A, в языках программирования “\n”). Пример ответа на команду AT+IPR?:

<CR><LF>+IPR: 9600<CR><LF><CR><LF>OK<CR><LF>

Эквивалентом комбинации символов <CR><LF> является действие клавиши Enter, то есть переход в начало следующей строки. Поэтому в терминале структура ответа выглядит следующем образом:

На этой строке находилась позиция курсора до получения ответа
+IPR: 9600
Здесь пустая строка
OK
Здесь находится текущая позиция курсора после получения ответа

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

Ниже представлен список некоторых распространенных команд, используемых для разработки устройств на базе GSM модуля. Самая простая команда – AT, в ответ на которую модуль выдаст сообщение OK.

Команды настройки модуля:

Описание Команда настройки режима “эха”
Формат ATE<n>
Параметр <n>: 0 – выключить; 1 – включить
Ответ OK
Пример ATE0
 
OK

 

Описание Команда проверки модели и версии модуля
Формат ati
Пример ati
NEOWAY
M590
REVISION 01.30c
 
OK
 
Модель
 
Версия

 

Описание Команда чтения версии прошивки модуля
Формат at+getvers
Ответ <версия>
OK
или ERROR
Пример at+getvers
1103_C6C30000_V0130c
 
OK
Версия прошивки

 

Описание Команда сохранения текущей конфигурации настроек в EEPROM память
Формат AT&W<значение>
Параметр <значение>:
0 – сохранить настройки в  0-м профиле, параметр 0 можно не указывать;
1 – сохранить настройки в 1-м профиле
Ответ OK
Пример AT&W
 
OK

 

Описание Команда настройки скорости порта UART
Формат AT+IPR=<скорость предачи>
Параметр <скорость предачи>: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 бит/сек
Ответ OK или ERROR
Пример AT+IPR=9600
OK
Запрос параметра AT+IPR?
+IPR: 9600
 
OK
 
Скорость порта равна 9600 бит/сек

 

Описание Команда проверки статуса модуля
Формат AT+CPAS
Параметр <pas>:
0 – готов к работе
2 – неизвестно
3 – входящий звонок
4 – в режиме соединения
5 – спящий режим
Ответ +CPAS: <pas>
OK
(или ERROR)
Пример AT+CPAS
+CPAS: 0
 
OK
 
Модуль готов к работе

 

Описание Команда проверки регистрации модуля в сети
Формат AT+CREG: <mode>
Параметр <mode>:
0 – выключить уведомление о регистрации в сети
1 –  включить уведомление о регистрации в сети +CREG: <stat>
2 – включить уведомление о регистрации в сети и информацию о местоположении<
 
stat>:
0 – не зарегистрирован, поиск сети не выполняется
1 – зарегистрирован в домашней сети
2 – регистрация отклонена
3 – не зарегистрирован, выполняется поиск сети
4 – неизвестно
5 – зарегистрирован, зона роуминга
Ответ OK или ERROR

AT+CREG: <mode>,<stat>
OK

Пример AT+CREG=1
OK
Включить уведомление о регистрации в сети
Запрос параметров AT+CREG?
+CREG: 0,1
 
OK
 
Зарегистрирован в домашней сети

 

Описание Команда настройки спящего режима
Формат at+enpwrsave=<n>
Параметр <n>:
0 – спящий режим запрещен;
1 – спящий режим разрешен
Ответ OK или ERROR
Пример at+enpwrsave=1
OK
Примечание Значение параметра <n> не сохраняется после выключения модуля.

 

Описание Команда выключения модуля
Формат AT+CPWROFF
Ответ OK или ERROR
Пример AT+CPWROFF
OK
Примечание Не следует одновременно подавать команду и оперировать выводом ON/OFF модуля.

Команды управления вызовом:

Описание Команда настройки автоматического определения номера (АОН)
Формат AT+CLIP=<n>
Параметр <n>:
0 – АОН выключен;
1 – АОН включен
Ответ OK
Пример AT+CLIP=1
OK
Сообщение от модуля RING Входящий звонок (АОН отключен)
RING
 
+CLIP: “79XXXXXXXXX”,145,,,“”,0
Входящий звонок (АОН включен)
 
“79XXXXXXXXX” – номер вызывающего телефона
“” – имя абонента
Примечание Сообщение RING повторяется после каждого гудка

 

Описание Исходящий вызов для установления голосового соединения
Формат ATD+79XXXXXXXXX;
Параметр 79XXXXXXXXX – номер вызываемого телефона
Ответ OK
Пример ATD+79630749105;
OK
Сообщение от модуля CONNECT
BUSY
NO ANSWER
NO CARRIER
Соединение установлено
Занят другим сеансом связи
Нет ответа
Вызов сброшен

 

Описание Команда разъединения соединений (повесить трубку)
Формат ATH<n>
Параметр <n>:
0 – разъединить все вызовы, параметр 0 можно не указывать;
1 – разъединить исходящий вызов
Ответ OK
Пример ATH
OK

Команды для работы с SMS сообщениями:

Описание Команда настройки формата SMS сообщений
Формат AT+CMGF=<режим>
Параметр <режим>: 0 – PDU формат; 1 – текстовый формат
Ответ OK или ERROR
Пример AT+CMGF =1
OK
Примечание Если сообщение отправляется в PDU формате, необходимо установить кодировку UCS2 (при использовании кириллических символов), для текстового формата кодировку GSM, либо UCS2
 
В PDU формате, текст представлен в виде последовательности шестнадцатеричных чисел.

 

Описание Команда выбора кодировки текста
Формат AT+CSCS=<chset>
Параметр <chset>:
“GSM” – кодировка ASCII
“HEX” – кодировка шестнадцатеричными значениями
“IRA” – международный справочный алфавит
“PCCP437” – кодировка CP437 (IBM PC)
“8859-1” – кодовые страницы семейства ISO 8859
“UCS2” – кодировка Unicode (2 байта на символ)
Ответ OK или ERROR
Пример AT+CSCS=“GSM”
OK

 

Описание Команда чтения SMS сообщения
Формат AT+CMGR=<index>
Параметр <index>: номер считываемого сообщения
Ответ Для текстового формата (CMGF=1):
+CMGR: <stat>,<oa>,<alpha>,<scts><CR><LF><data>
OK
(или ERROR)
 
Для PDU формата (CMGF=0):
+CMGR: <stat>,<alpha>,<length>,<scts><CR><LF><pdu>
OK
(или ERROR)
 
<stat> — статус SMS сообщения:
0 – для PDU формата, REC UNREAD – для текстового формата: входящее непрочитанное сообщение
1 – для PDU формата, REC READ – для текстового формата: входящее прочитанное сообщение
2 – для PDU формата, STO UNSENT – для текстового формата: неотправленное (исходящее) сообщение
3 – для PDU формата, STO SENT – для текстового формата: отправленное сообщение
4 – для PDU формата, ALL – для текстового формата: все сообщения
 
<alpha> – имя отправителя
<scts> – отметка времени сервис-центра в формате:
год/месяц/день, часы: минуты: секунды ± часовой пояс
<data> –  текст сообщения в ASCII символах
<length> – количество символов сообщения (для PDU формата)
<pdu> – информация о SMS и текст сообщения в PDU формате
Пример AT+CMGR=1
+CMGR: “REC READ”,“+79123456789”,“”,“15/11/13,14:39:35+32”
GPS-START2
 
OK
Для текстового формата
кодировка ASCII (GSM)
Получено сообщение: GPS-START2
AT+CMGR=1
+CMGR: “REC READ”,“+79123456789”,“”,“15/11/13,14:39:35+32”
004700500053002D005300540041005200540032
 
OK
Для текстового формата
кодировка Unicode (UCS2)
Получено сообщение: GPS-START2
AT+CMGR=1
+CMGR: 1,,28
07919730071111F1040B919721436587F90000511131419353020
A47E8B435A506A55419
 
OK
Для PDU формата
специальная 7-ми битная
кодировка
Получено сообщение: GPS-START2

 

Описание Команда отправки SMS сообщения
Формат Для текстового формата (CMGF=1):
AT+CMGS=<da><CR><text><ctrl-Z>
 
Для PDU формата (CMGF=0):
AT+CMGS=<length><CR><pdu><ctrl-Z>
Параметр <da> – номер на который посылается сообщение (в ASCII символах)
<text> – текст сообщения в ASCII символах
<length> – количество байт сообщения в PDU формате
<pdu> – информация о SMS и текст сообщения в PDU формате
Ответ +CMGS: <mr>
OK
(или ERROR)
 
<mr> – условный номер, присваиваемый модулем
Пример AT+CMGS=“+79123456789”<CR>
> Perezvoni mne<ctrl-Z>
+CMGS: 2
 
OK
Для текстового формата
Отправка сообщения “Perezvoni mne”
AT+CMGS=27<CR>
> 07919740030900F001000B919721436587F900080E
041F044004380432043504420021<ctrl-Z>
>
+CMGS: 2
 
OK
Для PDU формата
кодировка Unicode (UCS2)
Отправка сообщения “Привет!”
AT+CMGS=22<CR>
> 07919740030900F001000B919721436587F900000A
47E8B435A506A55419<ctrl-Z>
>
+CMGS: 2
 
OK
Для PDU формата
специальная 7-ми битная
кодировка
Отправка сообщения “GPS-START2”
Примечание Сначала необходимо отправить команду AT+CMGS=“+79123456789”, затем дождаться приглашения в виде символов “> ” (> и пробел), после чего отправить текст сообщения. Для завершения процесса следует отправить символ <ctrl-Z> (шестнадцатеричное значение 0х1A)
 
Кириллические символы необходимо отправлять в кодировке Unicode (UCS2), только в формате PDU. Латинские символы можно отправлять в текстовом формате с кодировкой ASCII (GSM), либо в формате PDU с кодировкой Unicode (UCS2), или при помощи специальной 7-ми битной кодировки символами ASCII

 

Описание Команда удаления SMS сообщений
Формат AT+CMGD=<index>,<delflag>
Параметр <index> – порядковый номер удаляемого сообщения, для удаления одного сообщения <delflag> можно не указывать
 
<delflag>:
0 – удалить сообщение с номером <index>
1 – удалить все прочитанные сообщения
2 – удалить все прочитанные и отправленные сообщения
3 – удалить все прочитанные, отправленные и неотправленные сообщения
4 – удалить все сообщения
Ответ OK или ERROR
Пример AT+CMGD=1
OK
Удалить сообщение с номером 1
AT+CMGD=1,4
OK
Удалить все сообщения

 
Отправить сообщение в текстовом формате достаточно просто, а вот в PDU формате могут возникнуть трудности. В PDU формате SMS сообщение закодировано в виде последовательности шестнадцатеричных чисел, рассмотрим подробнее структуру этого формата:

Структура принятого SMS сообщения в формате PDU.

Обозначение SCA PDU Type OA PID DCS SCTS UDL UD
Длина, байты 1-12 1 2-12 1 1 7 1 0-140

Структура передаваемого SMS сообщения в формате PDU.

Обозначение SCA PDU Type MR DA PID DCS VP UDL UD
Длина, байты 1-12 1 1 2-12 1 1 0,1,7 1 0-140

SCA – номер SMS центра, DA – номер телефона на который отправляем сообщение, OA – номер телефона от которого получено сообщение. Каждое из этих полей состоит из 3-х частей:

SCA Размер поля SCA Тип номера Номер
1 байт 1 байт От 0 до 6 байт
DA, OA Длина номера Тип номер Номер
1 байт 1 байт От 0 до 6 байт

Тип номера представляет собой формат номера, например, международному формату соответствует шестнадцатеричное число 91h.

Номер формируется следующим образом (для примера возьмем +79123456789): если значение количества цифр номера нечетное, то дописываем в конце символ F, затем переставляем местами каждые две цифры, получим в итоге 9721436587F9.

“Размер поля SCA” равно количеству байт, которое занимают номер и его тип, для номера это 6 байт (9721436587F9) + тип 1 байт (91), итого 7 байт (07), в результате поле SCA будет выглядеть следующим образом: 07919721436587F9.

Для полей DA, OA, “длина номера” равна количеству цифр в номере, то есть 11 цифр для номера +79123456789, в шестнадцатеричном представлении получим 0Bh, В результате поля DA, OA будут иметь следующий вид:  0B919721436587F9.

Поле SCA можно не использовать, указав вместо него значение 00h, при этом модуль автоматически возьмет номер SMS центра из СИМ карты.

PDU Type – это байт с настройками сообщения:

Бит Название Назначение
7 RP 0 – путь для ответа не определен;
1 – путь для ответа определен
6 UDHI 0 – поле UD содержит сообщение;
1 – поле UD содержит сообщение и дополнительный заголовок.
5 SRR 0 – статус сообщения не запрашивается;
1 – статус сообщения запрашивается.
4,3 VPF 00 – поле VP отсутствует;
01 – зарезервировано;
10 – поле VP содержит время жизни сообщения в относительном формате;
11 – поле VP содержит время жизни сообщения в абсолютном формате.
2 RD 0 – сервисному центру  следует переслать сообщение
получателю, если оно имеет те же значения полей MR и DA, что и предыдущее сообщение;
1 – сервисному центру следует отклонить сообщение, если оно имеет те же значения полей MR и DA, что и предыдущее сообщение.
1,0 MTI 00 – если сообщение принято или подтверждение приема;
01 – если сообщение отправляется или подтверждение отправки;
10 — отчет о доставке или SMS-команда;
11 — зарезервировано.

Для успешной отправки сообщения, поле PDU Type в общем случае может иметь значение 01h (00000001). Поле MTI равно 01, это указывает что сообщение исходящее. Поле VPF равно 00, для упрощения, чтобы исключить поле VP из PDU сообщения. Для принятого сообщения поле MTI, как правило, равно 00.

MR – порядковый номер сообщения, определяется модулем. Для передачи сообщения необходимо установить значение 00h.
PID – идентификатор протокола. Для передачи сообщения необходимо установить значение 00h.

DCS – кодировка текста сообщения:
00h – кодировка 7-бит (символы ASCII, только латинские);
04h – кодировка 8-бит (символы ASCII, только латинские);
08h – кодировка Unicode (UCS2), используется 2 байта на символ;
10h – кодировка 7-бит, сообщение выводится сразу на экран;
14h – кодировка 8-бит, сообщение выводится сразу на экран;
18h – кодировка Unicode (UCS2), сообщение выводится сразу на экран.

Специальная 7-ми битная кодировка представляет собой сжатый вид 8-ми битной кодировки. В ASCII таблице каждый символ занимает 1 байт (8 бит), но латинские символы занимают только 7 бит, самый старший незначащий бит равен нулю. Исходя из этого, придумали метод сжатия данных, в котором этот старший бит тоже используется, то есть биты ASCII символов перераспределяются таким образом, чтобы занять все старшие свободные биты. Для 8-ми битной кодировки в одно SMS сообщение помещается 140 символов, а при 7-ми битной кодировке 160. Для этих кодировок можно использовать только латинские символы, для кириллических символов необходимо использовать кодировку Unicode (справедливо и для латинских символов), где каждый символ кодируется 2-мя байтами, в одно SMS сообщение при этом поместится 70 символов.

VP – время жизни сообщения, необходимо для центра SMS сообщений, по истечении этого времени сообщение удаляется, если оно не получено абонентом. Как было сказано выше, чтобы упростить PDU сообщение, поле VP можно исключить, установив значение VPF равным 00, в поле PDU Type.

SCTS – время получения сообщения SMS центром, может отсутствовать.
UDL – значение длины поля UD в байтах, то есть размер текста сообщения.
UD – текст сообщения.

Рассмотрим пример отправляемого сообщения “Привет” в PDU формате:

AT+CMGS=27
07919740030900F001000B919721436587F900080E041F044004380432043504420021

Число 27 после названия команды (CMGS) означает, что длина PDU сообщения без учета поля SCA равна 27 байт.

07919740030900F0 – закодированный номер SMS центра (+79043090000);
01 – байт с настройками PDU сообщения (PDU Byte);
00 – порядковый номер сообщения (MR);
0B919721436587F9 – закодированный номер, на который отправляем сообщение (+79123456789);
00 – идентификатор протокола (PID);
08 – кодировка текста сообщения (DCS), кодировка Unicode (UCS2);
0E – длина текстового сообщения (UDL), 14 байт.
041F044004380432043504420021 – текст сообщения (UD), “Привет”.

Как было сказано выше, поле SCA с номером SMS центра можно исключить из PDU сообщения, указав вместо него значение 00, модуль автоматически возьмет номер из СИМ карты.

Данный модуль также поддерживает пакетную передачу данных GPRS, то есть можно организовать связь с удаленным сервером, выход в интернет. В статье GSM модуль NEOWAY M590 – GPRS команды приведено описание GPRS команд и способы передачи данных на сервер. На базе модуля совместно с микроконтроллером можно разрабатывать различные охранные устройства, системы сбора информации и т.д. Полный список команд на модуль можно найти в даташите приведенный в архиве в конце статьи, также в архиве присутствует книги и документы по AT командам. На основе этого модуля я разработал GPS GSM трекер, подробнее в статье GPS GSM трекер.

GSM модуль NEOWAY M590

Даташит на GSM/GPRS модуль NEOWAY M590, документы по AT командам
Печатная плата GSM модуля Neoway M590 с обвязкой, в формате Sprint Layout 6

Последние записи:

Комментариев 157 на “GSM модуль NEOWAY M590 – описание и команды управления

  1. Я ввожу эту команду: AT+CMGS=
    Но после нажатия ctrl-Z выскакивает ERROR.
    Может еще какие то настройки не выполнил?
    И еще вопрос. Как Вы вводите ctrl-Z в программе Terminal v1.9?

    • Если вы собираетесь отправлять SMS в текстовом виде и латинскими символами, сначала надо настроить формат сообщений командой AT+CMGF=1$0D (1=текстовый формат, $0D это возврат каретки в программе Terminal v1.9, ну то есть символ ), потом настраиваем кодировку текста сообщения командой AT+CSCS=»GSM»$0D (GSM — кодировка ASCII). Далее вводим команду для отправки сообщения: AT+CMGS=»+79XXXXXXXXX»$0D (+79XXXXXXXXX — номер абонента кому шлем SMS), после этого модуль выдаст приглашение в виде символов > (> и пробел), далее вводим текст сообщения в конце которого вводим символы $1A (то есть символ ctrl-Z), тем самым говоря модулю что сообщение окончено, после этого в случае успеха модуль выдаст сообщение +CMGS: и OK.

  2. У меня выдается ошибка на этапе настройки кодировки текста сообщения командой AT+CSCS=”GSM”$0D

    • А как вы вводите символ ” ? если копируете со страницы сайта, то он будет неверным, наберите этот символ на клавиатуре в терминале, символ выглядит как две короткие вертикальные линии

  3. Заменил символы. Второй этап прошел успешно. Но на последнем, после ввода текста сообщения и символа $1A выводится ошибка.

  4. Отправил в тексте смс только латинские буквы, смска отправилась и дошла до адресата!!! Спасибо огромное за помощь!
    Но, почему-то не ушла смска содержащая только цифры.

    • в текстовом формате можно отправлять только латинские символы, это несколько раз упоминается в статье, цифры тоже должны отправляться, кстати я сам не пробовал отправлять чисто цифры, только символы вместе с цифрами.

  5. Наблюдается некая нестабильность работы. Пропадает сеть. Может и ошибки по этой причине. Буду дальше ковырять. О результатах отпишусь.

  6. здравствуйте, не могу разобраться, только осваиваю программирование в целом, хочу сделать gsm сигнализацию ,приобрел это чудо, отправлять смс, получать звонки научился, а как читать смс понять не могу, имею arduino nano и m590.
    1. можно читать сообщение только под определенным номером? т.е.
    Формат AT+CMGR=
    Параметр : номер считываемого сообщения.
    2. как это вообще оформить в ардуино…
    т.е. я понял надо в setup задать режим кодировки и формата текста. а в loop уже начинать читать сообщение?
    спасибо огромное, очень жду вашего ответа сенсей)

    • С помощью команды AT+CMGR=index можно считывать только определенные сообщения, но есть и другая команда для чтения группы сообщений: AT+CMGL=index
      index:
      0 или «REC UNREAD» — прочитать принятые (непрочитанные) сообщения;
      1 или «REC READ» — прочитать принятые (прочитанные) сообщения;
      2 или «STO UNSENT» — прочитать сохраненные (неотправленные) сообщения;
      3 или «STO SENT» — прочитать сохраненные (отправленные) сообщения;
      4 или «ALL» — прочитать все сообщения;

      Я ардуино не программирую, так что подсказать ничего не могу…

      • т.е. если я ему введу команду AT+CMGL=“REC UNREAD” в ответ должен получить что то типа «AT+CMGR=1
        +CMGR: “REC UNREAD”,”+79123456789″,””,”15/11/13,14:39:35+32″
        ON1

        OK
        «ON1» — это если я послал на модуль смс с текстом ON1 c номера +79123456789?

        • отправив команду AT+CMGL=“REC UNREAD”, модуль выдаст все непрочитанные сообщения по порядку

  7. Почему-то модуль не всегда регистрируется в сети, поэтому часть команд не воспринимает, сообщает об ошибке. Но когда регистрируется в сети, то смски отправляются нормально. И цифры и латиница.
    Спасибо за помощь!
    Буду дальше его осваивать. О результатах сообщу.

    • Попробуйте СИМ карту другого оператора, может в этом дело, проверьте конденсатор по цепи питания, емкость должна быть не менее 1000 мкФ

  8. Добрый день.
    Будет очень интересна статья про пакетную передачу данных GPRS.
    Пишите еще.

  9. Огромное спасибо за инфу. Собираюсь сделать проект для контроля температуры на даче, чтоб я отправлял команду в смс на дачу, на ардуино и обратно получал смс с температурой. Скетч для термодатчика с помощью ютуба написал, залил и он работает. Скиньте пожалуйста ссылку на библиотеку для модуля NEOWAY M590 и помогите со скетчем, укажите хотя бы направление в какой структуре писать. Заранее огромное СПАСИБО.

    • http://forum.amperka.ru/threads/sms-модуль.5658/page-2 это на ардуино скетч для отправки и получения смс

  10. Доброго времени суток.
    Имеется ли схема объвязки для ЛУТ? если есть, то поделитесь, пожалуйста.

  11. День добрый уважаемый админ.Я новичок, так что прошу строго не судить))) Купил данный модуль…завел питание, подключил. В итоге — звонок проходит, закачал скетч тут. В итоге -модуль начал реагировать только на скорости 115200…в итоге в com порте сообщения от модуля приходят с ошибками (есть непонятные символы) определение номера по скетчу также работает с ошибками…(1-2 цифры ошибочны)..в общем работа не стабильная((( Поэтому прошу помощи и ответов на вопросы:
    1.У всех модулей такого типа можно поменять скорость?Или мне попался такой экземпляр где четко фиксированная скорость в 115200?
    2.Как подключить модуль и ардуину к программе Терминал? (кабаля у меня нет)
    3.Что ещё можно сделать для налаживания работы капризного модуля?
    Заранее благодарен.

    • У всех модемов скорость можно менять командой AT+IPR=9600 (9600 Бит/сек). Данная скорость автоматически сохраняется после отключения питания. Вам необходимо предварительно настроить скорость модема в соответствии со скоростью указанной в скетче (я не программирую Arduino, но предполагаю что в скетче нет автоматической подстройки скорости). Для предварительной настройки модуля необходимо подключить его к компьютеру через стандартный преобразователь USB-COM, и в программе Терминал подобрать скорость при которой от модема будут приходить правильные ответы, а затем изменить скорость на нужную.

  12. Да,забыл уточнить — модуль вот такой (немного отличается от Вашего)http://ru.aliexpress.com/item/GPRS-SIM900-GSM-SMS-GPRS-communication-flip-card-slot-replace-SIM900-Through-extension-module/32475525911.html?spm=2114.03010208.3.19.zHwSis&ws_ab_test=searchweb201556_3,searchweb201644_2_505_506_503_504_301_502_10001_10002_10017_10010_10005_10011_10006_10012_10003_10004_401_10009_10007_10008,searchweb201560_3,searchweb1451318400_-1,searchweb1451318411_6451&btsid=d38b5b7d-c74a-4db3-b745-691f36edb9c9

  13. Благодарю за оперативный ответ!Про скорость в скетче Вы абсолютно правы(там нет подстройки).
    Буду пробовать.По результату-отпишусь.

  14. Аллилуя! Получилось! Перевел модуль на 9600!!! Бился почти неделю-ключ был в том, чтоб отключить питание для запоминания скорости!! Спасибо!!!!!

  15. Повторяю плату. Стал смотреть, куда какой элемент и обнаружил несоответствие с принципиальной схемой. Конденсатор С3 на схеме между Е и К VT2, а на плате от 18 вывода на землю. Как правильно?

    • На схеме ошибка (позже исправлю, ошибка не критичная), конденсатор C3 подключается к 18-у выводу модуля, на печатной плате все правильно.

  16. От внешнего питания не хочет отправлять смс, при подключении к компьютеру все работает arduino nano

  17. Здравствуйте, помогите пожалуйста. NEOWAY M590 «общается» со мной через монитор порта ардуино иероглифами. Например когда я дозваниваюсь на NEOWAY монитор пишет ä такой символ.

    • Скорость UART не совпадает скорее всего, с помощью команды AT+IPR=9600 (где 9600 Бит/сек скорость передачи данных по UART) необходимо выставить скорость порта на модуле.

  18. Благодарю за статью. Пока ещё холодно, собрал на скорую руку всё в комок, запихал в асбоцементную трубу (кроме антенны), подключил к электро — котлу на даче. Теперь просто звоню и включаю отопление за пару дней до «пикника» Тестяга флян коньяку выкатил! Ещё раз — спасибо!!!

  19. Оператор Киевстар — Украина. Команда дозвона atd+0932298823; дает ошибку. Модуль запускается только тогда, когда держу влажными пальцами(не мокрыми) за вывод boot.
    Почему так???

    • Команду ATD набирайте прописными буквами, если набираете в программе Terminal v1.9b by Bray необходимо добавить в конце $0D (ATD+0932298823;$0D), если не помогло попробуйте убрать символ + (ATD0932298823;$0D), или поставить пробел вместо + (ATD 0932298823;$0D).
      Что за вывод boot? Для устойчивого запуска, удерживайте низкий логический уровень на выводе 19 модуля (ON/OFF) или высокий логический уровень на базе транзистора VT1, если он имеется в цепи запуска, бывает что после запуска с помощью короткого импульса через некоторое время модуль выключается, вывод ON/OFF чувствителен к помехам (чем больше длина линии тем выше вероятность отключения). Поэтому вместо короткого импульса лучше удерживать логический уровень, просто замкнуть вывод ON/OFF на общий провод.

      • В некоторых разновидностях модуля вывод ON/OFF выведен на линейку как BOOT/ Просто замкнуть его на землю и модуль включится.

  20. Большое спасибо. Заработал, как только я посадил на ноль boot и набрал команду atd0679735581;

  21. У вас ошибка в команде включения и отключения эха, пропущен символ «E»
    ATE1 — включить эхо;
    ATE0 — отключить эхо.

  22. Есть такая хорошая АТ команда, ATD>1; позвонить по 1 номеру из сим карты,
    Скажите пожалуйста есть команда который отправит смс на номер 1 из сим карты

    • Мне не известна такая команда, но попробуйте посмотреть в книге по AT командам, которая приведена в конце статьи.

      • Я читаю первый номер из симки, и потом на него отправляю смс. Но если такая команда есть, то тоже буду рад.

        • Я читаю первый номер из симки, и потом на него отправляю смс.
          Скажите пожалуйста КАК??

          • AT+CPBR=1
            Читаем первую запись из телефонной книги, парсим номер, сохраняем в символьную переменную.
            А затем подставляем символьную переменную в команду отправки смс.
            Скажу сразу — с Ардуино я не работаю, пользую CVAVR.
            Для начала рекомендую подключить модуль по UART к ккомпьютеру, и вручную погонять команды. Как начнет получаться — пробуйте вместо себя заставить контроллер это делать.

            • Я тоже работаю на CVAVR, printf(«AT+CPBR=1\r»); А потом не знаю что сделать?
              Если не трудно можно посмотрет source code на cvavr, или на мейл artakas@list.ru. заранее большое спасибо.

              • У меня так:
                char i;
                char telefon[12]={»,»,»,»,»,»,»,»,»,»,»,»};
                char a;
                char UDP_telefon[12]={»,»,»,»,»,»,»,»,»,»,»,»};
                void read_nomer(void){
                char i = 0;
                puts(«AT+CPBR=1\r»);//читаю первый номер с симки (ответ: +CPBR: 1,»8920679хххх»,129,»0410″)
                for (i=0;i<22;i++) {//ищу кавычку
                telefon[a] = getchar();
                if(telefon[a]=='"'){
                goto m1;};
                };
                m1:
                for (i=0;i<11;i++) {//считываю то,что после кавычки — номер телефона
                telefon[a] = getchar();
                a++;
                };
                a = 0;
                UDP_telefon[0] = telefon[1];//преобразую номер в UDP-формат
                UDP_telefon[1] = telefon[0];
                UDP_telefon[2] = telefon[3];
                UDP_telefon[3] = telefon[2];
                UDP_telefon[4] = telefon[5];
                UDP_telefon[5] = telefon[4];
                UDP_telefon[6] = telefon[7];
                UDP_telefon[7] = telefon[6];
                UDP_telefon[8] = telefon[9];
                UDP_telefon[9] = telefon[8];
                UDP_telefon[10] = 'F';
                UDP_telefon[11] = telefon[10];
                }

  23. Прошу помощи подружить этот модуль с arduino pro micro (leonardo) Rx, Tx у нее 5 вольт. Rx модуля согласованна по указанной выше схеме. питание обоих от батареи 3.7 масса общая+ ардуинка через usb.

  24. Ахтунг для тех,кто добрался до подключения модуля к уарту микроконтроллера! Команды putchar(),puts() и т.п из библиотеки stdio.h не подходят,потому что втыкают в конец вашей команды модулю не видимый символ ‘0’.Так что нужно управлять регистрами уарт модуля руками,ну или использовать программный уарт.И еще не приятный момент.Модуль не умеет звонить,вернее команду он выполняет,набирает номер и выдает сообщение no carrier.Жаль,хотел сделать автосигу с автозапуском,а тут такой сюрприз!

    • Модуль умеет звонить, я проверял у себя, в комментариях выше у пользователя alex тоже были проблемы, но в итоге модуль начал звонить.

      • Тот самый boot у меня изначально на земле. Посылаю команду ATD+7xxxxxxxxxx$0D, модуль говорит OK, а через секунду NO CARRIER. Может команду как-то изменить,сейчас его нет под рукой… С СМС всё в порядке и РУС и ЛАТ.

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

  25. Подтверждаю — модуль звонит.
    По UART — пользуйтесь готовыми библиотеками! Допустим, библиотекой кольцевого буфера от Паши Бобкова:
    http://chipenable.ru/index.php/programming-avr/item/44-uchebnyy-kurs-organizatsiya-obmena-po-usart-u-s-ispolzovaniem-koltsevogo-bufera.html#comment-3357

    • Заработали звоночки! я сам не внимательный — после номера точку с запятой не ставил!
      ATD можно писать хоть так, хоть прописными.

  26. Классная статья, спасибо, очень пригодится….
    Попробую тоже побаловаться с данными модулями, пришли недавно 4 комплекта…

  27. Спасибо , за статью!
    Посылаю на модуль SMS , он ее получает , но выдает в зашифрованном виде «специальная 7-ми битная кодировка». Не нашёл в командах , как заставить его выдавать текст не зашифрованный.
    Текст — латиница. Подскажите.

  28. AT+CSCB=1, прием широковещательных сообщений. Это та гадость, через которую сейчас срут все операторы. Эта команда исправляет их ошибку

  29. Спасибо за столь развернутый и доходчивый материал. Скажите, в команде удаления у вас опечатка? Формат AT+CMGS=,, а в примере AT+CMGD=1. CMGS и CMGS.
    Спасибо

        • Спасибо. Кстати, команда ATH почему-то через раз срабатывает. Как лучше выкрутиться, дублировать ее, или что подскажете? Просто по событию RING у меня смс в ответ отправляет, а если связь не разрывается, то череда смсок летит.

          • А что именно происходит когда команда не срабатывает, какие сообщения выдает модуль при этом? У меня например команда ATH всегда четко срабатывала.

            • Уже решил. Проблема была с местом данной команды в скетче, по ходу порт был занят подготовкой смс и через раз принимал команду.

  30. Никто с командой «AT+CNMI=0,0,0,0,0» не задавался вопросом? Даташит рекомендует «Suggested to set to +CNMI: 2,1,0,0,0 or +CNMI: 2,2,0,0,0.»
    У меня на входящие СМС вывод RING молчит, с вызовами работает…

    • Я когда-то пробовал вводить эту команду, для включения оповещения об SMS я отправлял команду AT+CNMI=2,1,0,0,0
      При поступлении SMS модуль выдает сообщение типа: +CMTI: «SM»,n где n-номер сообщения
      Кроме этого на линии RING появляется однократный короткий импульс

  31. Именно этого импульса и не хватает микроконтроллеру, что б выполнить прилетевшую по смс команду, буду попробовать, по результату отпишу

    • напомню, что активный уровень линии RING низкий, в нормальном состоянии на линии высокий логический уровень (2,85 В). Можно подтянуть линию RING к линии VCCIO модуля, через резистор 10 кОм, хотя думаю будет работать и без этого.

      • Да, теперь есть этот импульс! Работает и без подтяжки, она внутри контроллера включена. Спасибо!

  32. При включении в терминале иероглифы. И CTS,DSR,CD и RI не горят зеленым цветом как у вас на скриншоте.

  33. Приветствую. Закидал модуль СМС-ками, теперь он говорит «Абонент вне зоны действия сети», видимо он завис… А как это должен понять микроконтроллер, что бы передёрнуть вывод EMERGOFF?

    • Наверное нужно запустить таймер, и скажем, через каждые 5 минут опрашивать модуль командой AT+CPAS, и если там не 0 (готов к работе) или не 5 (спящий режим) — то дёргать EMERGOFF, так ли рассуждаю?

      • Можно и так, по идее если модуль завис, то он не будет отвечать на любые команды, можно время от времени отправлять простую команду AT, на которую модуль должен ответить OK.

  34. а не подскажете как можно сделать прерываний в управляющем устройстве
    «….линии RING появляются импульсы….Данную линию можно использовать для генерации прерываний в управляющем устройстве.»

    • ето я и имел ввиду — не знаю какое устройство… что за устройство можно използувать … для прерывания

      • Intel,AVR,ST,Microchip и ещё большая кучка фирм производящие микроконтроллеры . Боюсь спросить , Вы знаете что такое Cи , asm ?

        • У меня все хорошо с C и asm , но с электроники плохо. (как и с русском — это не мой родной язык, так что не судите строго)
          Я хочу, чтобы иметь возможность перезапустить какое-то устройство с помощью этого модуля
          мне нужно, к примеру, когда я позвоню, чтобы включить реле, которое будет прерывать питание оборудования, которое находится очень далеко , чтобы перезапустить его и все …
          Лучший вариант будет если подскажите примерная схема с какого-то микроконтроллера

          • я понимаю что примерно ардуино + релемодул + модем и включай реле сколько хочешь, но реч идет в използувание RING pin, так что можно ли с етого пина подавать «сигнал» на Ардуино примерно ?

            • Можно. К сожалению, я не программирую в Ардуино, работаю с CodeVisionAVR напрямую с контроллером.
              Например, используя Atmega8535, подключаем сигнал RING к входу прерывания INT0 (PD2).
              В процедуре инициализации сообщаем контроллеру, что мы ожидаем низкий уровень сигнала
              // External Interrupt(s) initialization
              // INT0: On
              // INT0 Mode: Falling Edge
              // INT1: Off
              // INT2: Off
              GICR|=0x40;
              MCUCR=0x02;
              MCUCSR=0x00;
              GIFR=0x40;

              В начале программы помещаем обработчик прерываний

              // External Interrupt 0 service routine
              interrupt [EXT_INT0] void ext_int0_isr(void)
              {
              // Place your code here
              counter++;
              }

              После этого с каждым звонком переменная «counter» будет увеличиваться на единицу. А дальше делайте с ней что вам угодно.

              Процесс применительно к CVAVR расписан тут

              Буду рад, если помог вам.

      • Вы изложите в 3 фразах чего вы хотите достичь, и с помощью чего. Аппаратное прерывание легко реализуется на всех микроконтроллерах, но надо знать куда вас направить.

  35. схема собрана так
    вывод GRD с платы модуля подпаял на вывод 5 разъема DB9, вывод ring на 9, Tx на 2й, Rx на 3й, и вывод Boot подпаял так же на 5й контакт разъема
    пробовал менять местами tx и rx в результате даже ноль не получаю что в общем и логично, т.е. схема собраны как бы верно, остается три варианта, неисправность модуля, проблема в шнурке и третий вариант проблема по

    • то есть вы подключили модуль напрямую к COM порту компьютера? там же уровни сигналов +12В и -12В, причем логика инвертирована, модуль и не будет работать, и к тому же может выйти из строя. Нужно использовать переходник USB-COM.

      • Да нет, не может такого быть, чтобы взять вот так и напрямую воткнуть модуль в комп… Это гарантировано его спалить, там даже 5,5 вольт опасно на выводы подавать, недаром в питании пол вольта всегда диодом гасят.

        • так же как и все использовал переходник
          комментарии ниже должен быть первым ) он еще ждет модерации. но из -за ссылок на карт хостинге ваш сайт комментарий не пропустил, чего я не сразу заметил, ниже ссылки на фотографии и скриншоты

          • вот часть текста без ссылок

            Здравствуйте.
            возникла проблема на этапе инициализации устройства, переходник USB-COM использовал мохавский, на шнурке при включении горит светодиод RxD что намекает на то что какие то данные от gsm модуля идут но дойти ни как не могут ) на терминате в момент инициализации получаю [0] [любой символ] [0], при передаче любой команды ответ [0]. помогите пож. разобраться, другой шнурок придет только через месяц, да и не факт что дело в шнурке(

          • Схему подключения увидеть как-то можно? Смущает «подпаял на вывод 5 разъема DB9»

            • Максим
              ссылки ждут модерации без нее вы не увидите схему подключения

              • А что это за переходник такой «мохавский»? На терминале скорость попробуйте переключать. Там при неправильном выборе кракозябры пойдут в окно приема. Неискушенным становится не по себе )))

                • перепровбовал все настроки даже те которые никак не должны влиять на прием/передачу

                  нужно ждать когда администратор поглядит мои ссылки, он не обратил внимание на то что комментарий ждет модерации(
                  все это гадание на кофейной гуще нужны фоты а их нет пока админ не глянет )

                  11
                  22

                • переходник MOXA латинские буквы в народе моха

  36. Я, видимо туго соображаю сегодня (жара у нас). Если судить по результатам поиска, МОХА этот не просто переходник, а согласователь уровней и эмулятор COM-порта для ноутбуков? Т.е. вы в комп втыкаете шнурок USB, у вас появляется порт COM5, допустим. Потом вы к разъему DB9, т.е. уже к полноценному физическому COM-порту напрямую подключаете ноги чипа? Если так, то у вас гарантированно ничего не заработает.
    Вот что вам надо, или на PL2303
    картинка переходника

  37. Картинки Константина выложил, как я понял МОХА это преобразователь USB — RS232, он не годится для модуля, модуль не может работать напрямую с интерфейсом RS232, я писал выше что уровни напряжения в этом интерфейсе могут достигать +12В и -12В, и логика инвертирована, то есть -12В это лог «1», +12В лог «0».

    Нужен преобразователь USB-COM где уровни напряжения ответствуют стандарту TTL (+5В, 0В), кроме этого как в схеме из статьи нужна обвязка (диод VD2 ) по входу RX модуля, чтобы не допустить перенапряжения.

    • Ровно то же, но другими словами. То, что на картинке, работать не будет 100%
      Нужен вот такой

  38. Спасибо за разъяснения.
    Максим вы нормально соображаете, на этот счет не волнуйтесь )
    ну судя по тому что модуль отвечает пусть даже и нулем то ничего не сгорело, светодиод по прежнему моргает в 1 гц ) буду ждать переходника

    • Я не волнуюсь, но — спасибо за заботу.
      Поищите у кого-то «за просто так» шнурок к телефону, постарше. Самсунги были в этом отношении молодцы, у них TTL-логика была у целой серии телефонов выведена на разъем. Но уровни были или инвертированы, или как-то зашифрованы. Рецепт очень простой: срезаем резину с разъема, снимаем с платки все, что кроме самого чипа USB-TTL, и припаиваем проводники прям к выводам микросхемы. А их — уже к чипу GSM. И в термоусадку все. Пару десятков кабелей так сделал, пока не пошли косяком от китайцев переходники по цене навоза.
      И не факт, что ваш чип исправен, то что он мигает еще не говорит об исправности входных и выходных сигнальных цепей. 12-ю вольтами их испортить можно легко.

        • Именно так устроен программатор «PonyProg», но у него нет на ПК COM-порта, как я понял.

          • Зачем COM порт, у него преобразователь выдает полноценный RS232, так что к нему и можно приделать схемку согласования

              • Нет, не нужен, при лог. «1» на базе транзистора он закрыт, линия RX при этом притянута к общему проводу (Gnd) резистором, что означает лог «1» для интерфейса RS232. При подаче лог. «0» на базу, транзистор открывается и на линии RX появляется +5В, что соответствует лог. «0» для интерфейса RS232.

                • Не успел написать, примерно то же самое.

  39. Добрый день. Подскажите такой вопрос плиз. Включаю модуль M590e без симки и БУТ на землю сажу. АТ-команды принимает. Вставляю симку любую и модуль постоянно перезапускается. Пишет стартат циклично. Один раз только был написал что стартанул PEREADY вроде и сразу перезапуск. Запросил статус регистрации в сети — +CREG: 0,3. То есть поиск сети…. Подскажите что может быть не так….?

  40. если без симки запускаю то работает от короткого импульса на БУТ ножке. А с симкой не хочет…..

    • Возможно питание слабое, блок питания должен обеспечивать ток не менее 1,5-2А, кто-то запитывает от USB порта компьютера, который не способен обеспечить достаточный ток для запуска модуля. И обязательно наличие конденсатора по питанию не менее 1000мкФ.

      • у меня 12 В 1 А заходит на кренку 7805. На входе 330 мФ. На выходе где 5 вольт 1000 мФ кондер. Должно хватать вроде? Я сейчас осциллографом гляну еще. …

        • по осциллографу на SIMCLK импульс не прямоугольные, а закругленные….. Частота 3.27 МГц. Это наверно правильно…..теперь и незнаю что делать. EMERGOFF — при перезапуске на ней появляется низкий лог уровень кратковременно….. То есть почемуто аварийный перезапуск.

          • Подключите модуль к более мощному блок питания (2А), все таки это может повлиять на включение. При включении модуля вывод ON/OFF лучше удерживать на низком лог. уровне, то есть на GND. Если проблема останется, то скорее всего неисправен модуль.

            • Попробую блок питания поменять. Пока нет 5 вольт 2 А. Но думаю модуль рабочий. Он же все АТ команды выполняет….. Вот даже Get SIM card Identification:+CCID — выполняет между перезагрузками….. Модуль я купил как надор для самостоятельной пайки. На готовую зеленую плату всё впаял правильно…. Буду разбираться еще…..

              • думаю что neoway М590Е и neowayМ590 разные, купил 5 штук M590E, не один не работает, А вот М590 без проблем, даже цена у них разные, М590 дороже

  41. Разобрался. Антенна которая в комплекте похоже не рабочая что ли….. Пальцем прижимаю разъем для внешней антенны и модуль запускается, звонит, принимает звонки… Буду искать антеннку внешнюю…

  42. такое ощущение что модем при соединении отключается! Что может быть?

    Антенный вход и сама антенна должна на землю звониться?

    • Сопротивление между антенным входом и общим проводом низкое, менее 1 Ом. При каком именно соединении модем отключается? при звонке, регистрации в сети?

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

    • Скорее всего проблемы с питанием, блок питания должен обеспечивать ток не менее 1,5А, бывает кто-то запитывает с USB порта компьютера, этого делать не стоит, там ток недостаточный. И конденсатор по питанию должен быть не менее 1000 мкФ.

    • Попробуйте найти другой блок питания, эти зарядки для сотовых не внушают доверия, могут и не выдавать ток указанный на этикетке. Или запитайте от 3 последовательно соединенных пальчиковых батареек (1,5В), только не используйте полудохлые, иначе тоже не хватит тока.

  43. модуль работает ,но не видит ни одну сику, заменил симки на новые проблема не снялась модуль не видит симку.
    MODEM:STARTUP
    at+xbandsel?

    +XBANDSEL: 900,1800

    OK
    at+cops?

    ERROR
    AT+CREG?

    +CREG: 0,3

    OK
    AT+CPAS

    +CPAS: 1

    OK

    • Проверьте напряжение питания СИМ карты, на линии SIMVCC модуля (14 вывод), там должно быть 3В или 1,8В, также проверьте резистор (на схеме R9, 4,7кОм) между выводами Vcc и I/O СИМ карты, и целостность линии до 11 вывода модуля (SIMIO).
      Может быть имеются проблемы с антенной?

      • Перепробовал 5 симок, получены 2 года назад. на 1 модем зарегистрировался в сети. но симка не моя. Заменил свои симки на новые 09.2016, но модем не видит новые симки. Напряжение на симкурие (вывод 14 ) есть, но с RST и CLK не появляется. Нет проблемы с антенной, при рабочей симке послал 6 SMS. Версия прошивки 1103_C6C30000_V0130d. Те же проблемы и с прошивкой 1103_C6C30000_V0120d Может можно перепрошить модуль? Где взять прошивку и как прошить?

  44. Здравствуйте, у меня ситуация аналогичная с теми, что ранее столкнулись Михаил с Серж. Ни с того ни с сего стал перезагружаться модуль SIM900. Питание на него подаётся через кренку, на входе и выходе которой стоят электролиты по 4700мкФ. Думал не хватает тока в БП, запитал напрямую, без кренки от компьютерного блока питания — результат тот же. Перезагружается через секунду — две после регистрации в сети (светодиод сначала горит, после мигает часто, пауза, 2 раза мигнёт редко, потом гаснет вместе с диодом питания, и всё сначала). Это в случае, если я вывод включения модема сажаю на землю, а если просто включаю, то после перезагрузки нужно снова подавать сигнал на запуск. Осциллограф показал что примерно через секунду после того, как модуль зарегистрировался в сети на всех выходах падает напряжение до 2v, а на выходе, к которому подключён светодиод питания до 2,8v, еще через секунду на выводе EMERGOFF появляется лог. 0 и модуль перезагружается. Но что вообще интересно, перезагружается он не всегда, а примерно в 80%, в остальных же 20% работает нормально (отправляет данные на сервер).

    • Труп! Аналогичная ситуация у меня была с M590E — он не хотел отвечать на мои команды при нормальном напряжении питания 4,2В. Заработал только при 4,8 и проработал ровно неделю, нагрелся и увёл в защиту лабораторный БП. Не превышайте питание и не обращайте внимание на надписи на этих китай платах.

    • Так у вас модуль то SIM900 или все таки Neoway M590?
      Я тоже замечал перезагрузку модуля M590 в режиме GPRS, склоняюсь к мнению что некоторые версии прошивок не до конца доработаны производителем для полноценной передачи данных GPRS .

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

      Ну а вообще GSM модуль штука довольна сложная, так что глюки вполне возможны (особенно в режиме GPRS).

      • Да, Вы были правы. Только что написал для контроллера прогу, которая должна отправлять СМС с текстом «I’m a dead module». СМСки доходят исправно, модуль ещё ни разу не ребутнулся. А при GPRS режиме спотыкается на команде AT+SAPBR=3,1,»CONTYPE», «GPRS» отвечает яяяяяAT+SAPBR=3,1,»CONTYPE», «GPRS» и ребутится. яяяяя или ещё какие символы обычно появляются в ответе если не хватает питания. А его в этот момент судя по тому что светодиод питания меркнет, правда не хватает. Хотя ток потребления модуля в целом в этот момент не растёт.

  45. Модуль у меня Neoway M590 который начал глючить. Я просто ошибся, до этого имел дело только с SIM900, вот и написал. Модуль приобрёл на алиэкспресс, без платы. Плату разводил сам. Работает модуль в режиме GPRS, отправляет данные на сервер.

  46. Столкнулся с проблемой: модем не удаляет смс.
    по факту перепробовал разные варианты:
    AT+CMGD=0,4
    AT+CMGD=1,4
    AT+CMGD=4
    Счетчик сообщений +CMGS: после каждой смс все равно увеличивается на единицу

    • Если после сообщения AT+CMGD получаем ответ OK, значит модуль все удаляет.

      Ответ вида +CMGS: это не счетчик сообщений на СИМ карте, этот счетчик просто инкрементируется при каждом отправленном (или неотправленном) сообщении, это условный счетчик, и к нему не надо привязываться.

      Количество сообщений на СИМ карте проверяется командой AT+CPMS? В ответ получаем +CPMS: «SM»,1,25,»SM»,1,25,»SM»,1,25

      Что означает что на СИМ карте есть одно сообщение, а всего на СИМ помещается 25 сообщений.

  47. с этим всё более-менее устаканилось, но аппетит растет во время еды. есть такая АТ команда AT+CCLK?, которая считывает дату и время с модуля, в ответ на нее получаем строку следующего вида: +CCLK: «05/01/01,00:09:48»
    Как её распарсить на составляющие? допустим хочу присваивать день, месяц и год переменным day, mon, yy соответственно; часы, минуты, секунды соответственно переменным hh, mm, ss.

    если можно, то куском кода для ардуино, потому как в парсинге полный ноль.

    • Я конечно Arduino не программирую, могу только подсказать по преобразованию, модуль выдает данные ASCII символами, например возьмем секунды (48), это два ASCII символа ‘4’ и ‘8’ (десятичные значения 52 и 56), для получения десятичного числа секунд, надо вычесть из каждого символа число 48. Далее результат вычитания из первого символа умножаем на 10, и к нему прибавляем результат вычитания из второго символа, в итоге получим искомое десятичное число (52-48)*10+(56-48)=48.

  48. несколько модула уже не работают — при етом диод очень силно греется …. , вообще включаеш и ничего не произходит , как будто короткое замыкание
    возник вопрос у меня ( к сожаление не знаю правилно ли выражус на русский)
    появилас у меня идея тестироват все модули , которые получаю , прежде чем поят их , есть ли такое «крепление» где можно «закрепить» сам модул М590 … цоколь , что то такое … ? есть идеи ?

    • Какие именно модули у вас не работают M590 или M590E ? Обычно у модулей M590E бывают короткое замыкание по питанию, у меня был такой случай, видимо китайцы когда их выпаивают феном, то перегревают и возникает замыкание, проверяйте модули перед пайкой мультиметром на КЗ между выводами Vbat и Gnd, лучше покупать модуль M590 с изначально запаянными выводами.

        • Да именно такой модуль имею в виду, Vbat это 3,4 выводы, а GND — 1,4,15,20 выводы, вот между этими группами выводов и надо проверять короткое замыкание.

  49. Перепробовал 5 симок, получены 2 года назад. на 1 модем зарегистрировался в сети. но симка не моя. Заменил свои симки на новые 09.2016, но модем не видит новые симки. Напряжение на симкурие (вывод 14 ) есть, но с RST и CLK не появляется. Нет проблемы с антенной, при рабочей симке послал 6 SMS. Версия прошивки 1103_C6C30000_V0130d. Те же проблемы и с прошивкой 1103_C6C30000_V0120d Может можно перепрошить модуль? Где взять прошивку и как прошить?

    • У меня были модули с прошивками 1103_C6C10000_V0111n, 1103_C6C30000_V0130c, 1103_C6C30000_V0120n и все работают с СИМ картой. У меня нет информации по поводу перепрошивки модулей.

  50. Уважаемый автор. Объясните пожалуйста. Нет ли в схеме ошибки c полярностью диодов Шоттки VD1 и VD2 SS14? Заранее спасибо.

    • Здравствуйте, в схеме все правильно, диоды стоят для защиты выводов модуля от повышенного напряжения со стороны микроконтроллера, эти выводы подтянуты резисторами к внутреннему источнику напряжения модуля 2,85 В, если с вывода микроконтроллера поступит лог.1 например 5В, то диод закроется и превышение напряжения на выводе модуля не произойдет, при подаче лог.0 со стороны микроконтроллера вывод модуля через открытый диод подтянется к низкому лог. уровню.

  51. 2 дня игрался с этими модулями (проблемы с регистрацией и потеря сети).
    Так вот дело тут не в модулях а в сим-карте, все новые симки с sim toolkit (это зашитая в симку програмка-меню сим). симка отдает М590 этот код но по умолчанию модуль его не обрабатывает соотв. симка отпадает и сеть тоже. sim toolkit аппаратно модем поддерживает для этого нужно включить at+cfun=6, но вот все ответы нужно писать самому, а это непросто.

  52. Добавлю, это более чем не просто, т.к. разные операторы имеют разные меню, более того разные партии карточек одного и того же оператора имеют разные меню, т.е. лично я не могу представить как реализовать универсальный программный подход для обхода (т.е. выхода) из этого меню. Думаю именно поэтому китайцы их и продают б/у и за копейки.
    Чисто «под себя» под конкретную симку намутить что то можно, но для массового производства они не придатны.

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

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