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.

ОбозначениеSCAPDU TypeOAPIDDCSSCTSUDLUD
Длина, байты1-1212-1211710-140

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

ОбозначениеSCAPDU TypeMRDAPIDDCSVPUDLUD
Длина, байты1-12112-12110,1,710-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 – это байт с настройками сообщения:

БитНазваниеНазначение
7RP0 – путь для ответа не определен;
1 – путь для ответа определен
6UDHI0 – поле UD содержит сообщение;
1 – поле UD содержит сообщение и дополнительный заголовок.
5SRR0 – статус сообщения не запрашивается;
1 – статус сообщения запрашивается.
4,3VPF00 – поле VP отсутствует;
01 – зарезервировано;
10 – поле VP содержит время жизни сообщения в относительном формате;
11 – поле VP содержит время жизни сообщения в абсолютном формате.
2RD0 – сервисному центру  следует переслать сообщение
получателю, если оно имеет те же значения полей MR и DA, что и предыдущее сообщение;
1 – сервисному центру следует отклонить сообщение, если оно имеет те же значения полей MR и DA, что и предыдущее сообщение.
1,0MTI00 – если сообщение принято или подтверждение приема;
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

У этой записи 257 комментариев

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

    1. Если вы собираетесь отправлять 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

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

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

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

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

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

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

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

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

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

        OK
        “ON1” – это если я послал на модуль смс с текстом ON1 c номера +79123456789?

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

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

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

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

    1. поддерживаю, gprs вообще отлично было бы по AT командам.

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

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

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

    1. Печатную плату выложил в конце статьи, она под смд элементы

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

    1. У всех модемов скорость можно менять командой 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 вывода на землю. Как правильно?

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

  16. Спасибо, а то уже плату сделал, паять начал.

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

    1. Просто выдает ошибку? или что то другое?

      1. Разобрался, была не правильная кодировка текста.

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

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

      1. Большое спасибо!!! Все работает.

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

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

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

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

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

  22. У вас ошибка в команде включения и отключения эха, пропущен символ “E”
    ATE1 – включить эхо;
    ATE0 – отключить эхо.

    1. Ошибку исправил, спасибо.

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

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

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

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

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

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

            2. Скажите пожалуйста как <> ??????

            3. Скажите пожалуйста как ??????
              парсим номер_как???

              1. У меня так:
                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];
                }

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

    1. Мой совет – научитесь с начала мыргать светодиодом

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

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

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

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

          1. Спасибо за совет, попробую на днях, модуля нет под рукой…

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

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

    2. Привет, не подкинете свои наработки по отправке смс на номер из сим карты?? Спасибо

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

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

    1. Надо выбрать кодировку текста командой AT+CSCS=”GSM”

  29. Спасибо ! Попробую , хотя считал , что это только для отсылки SMS c модуля.

  30. AT+CLIP=1 – работает. Хорошая команда.АОН

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

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

    1. сам опечатался CMGS и CMGD

      1. да, опечатка, правильно AT+CMGD, сейчас исправлю, спасибо.

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

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

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

  33. Никто с командой “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 молчит, с вызовами работает…

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

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

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

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

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

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

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

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

  37. Ну и SMS периодически удаляй из памяти

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

  39. Заводишь на вход внешнего прерывания управляющего устройства и ……

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

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

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

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

            1. Можно. К сожалению, я не программирую в Ардуино, работаю с 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 расписан тут

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

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

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

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

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

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

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

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

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

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

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

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

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

                  11
                  22

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

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

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

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

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

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

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

        1. Именно так устроен программатор “PonyProg”, но у него нет на ПК COM-порта, как я понял.

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

            1. а в цепи коллектор-эммитер 361го разве не нужен резистор?

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

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

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

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

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

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

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

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

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

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

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

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

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

  48. то есть индикатор не мигает АТ молчит

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

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

  49. линию включения замкнул на землю. теперь при регистрации перезапускается

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

  50. кондер 1000мкф питание 5в 2А зарядка от сотого

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

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

    +XBANDSEL: 900,1800

    OK
    at+cops?

    ERROR
    AT+CREG?

    +CREG: 0,3

    OK
    AT+CPAS

    +CPAS: 1

    OK

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      1. да у меня M590E и часто не работают , примерно 20% … наверно просто не повезло !
        А когда говорите м590 имеете ввиду чтото такое ? http://help40.com/other/modem/modemM590.jpg
        Vbat и Gnd ето примерно 3 и 4 пин ?

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

    2. У меня первый такой модуль и сразу коротыш. Спаял экран с платы , а потом подал питание 1 Вольт с хорошим током в результате коротыш выгорел и модуль заработал.

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

  58. С какими версиями прошивок используются модули?

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

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

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

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

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

    1. (проблемы с регистрацией и потеря сети). что нам даст это команда at+cfun=6??
      но вот все ответы нужно писать самому
      что нужно писать самому??
      в даташите написана
      enables the SIM-toolkit interface and fetching of proactive commands by SIM-APPL from the SIM-card

  62. Уважаемый автор, помогите разобраться с проблемой: после включения модуль сообщает MODEM;STARTUP и через несколько минут выключается (+PBSEADY не пишет). Включаю снова – та же картина. Так несколько раз. После очередного включения наконец-то пишет +PBSEADY и остается включенным. В чем может быть проблема?

    1. Приветствую, каким образом включаете модуль, подаете кратковременный отрицательный импульс на линию ON/OFF? Лучше удерживать низкий уровень на линии, чтобы избежать повторных выключений. Если оставить на линии высокий уровень, возможны срабатывания под влиянием помех.

      1. Приветствую. Включал замыканием boot и земли. Про помехи думал, т.к. on/off срабатывал даже от касания проводом прижатым к пальцу – как сенсор))) Ситуация несколько прояснилась – такое поведение наблюдается только при внешнем питании. При питании полностью от ардуины – все ок. Так же не очень понятно поведение со спящим режимом – при команде “разрешить спящий режим” моментально уходит в него (гаснет led2), но на AT команды реагирует, в т.ч. и выводится из спячки (at+enpwrsave=0), а вот хардварно будится через boot. Не сталкивались с таким?

      2. И подскажите еще, плз, в какой момент модуль должен уведомлять о регистрации в сети? Я отправил AT+CREG=1 получил ОК, но сообщение о регистрации при включении модуля или в процессе работы не получил. Принудительный запрос о статусе регистрации ( AT+CREG?) срабатывает корректно.

        1. Возможно у вас было некачественное внешнее питание, блок питания должен обеспечивать ток не менее 1,5А. Я не знаю какой ток выдает Arduino, но думаю 1,5А не выдаст, поэтому запитываться от нее не стоит.

          Уходи в спящий режим после команды возможен если у вас вывод DTR (9-й вывод) модуля посажен на общий провод. Линия ON/OFF (boot) не предназначена для пробуждения. Я в статье писал про спящий режим, почитайте.

          По команде регистрации, скорее всего модуль не запоминает нового заданного параметра команды после выключения, поэтому при включении не выдает ничего, проверьте параметр команды после перезагрузки с помощью АТ+CREG=?.

  63. У меня вопрос к автору статьи. М.Б. Вы пробовали GSM модуль вот такой https://ru.aliexpress.com/item/mini-A6-GPRS-GSM-Module-Kit-Wireless-Extension-Module-Board-Antenna-Tested-Worldwide-Store-for-SIM800L/32716931662.html?spm=2114.13010308.0.0.DR8GLQ По цене – дешевле SIM800L, по функционалу – та же голосовая связь, по не многочисленным обзорам с ютуба – не так требователен к питанию и не глючен. Просто эти б/у м590 уже изрядно людям мозг потрепали и мне в том числе. Тестил несколько месяцев в езде по городу (GPS трекинг), связь теряется при идеальном покрытии, а стоит выехать за пределы дом. региона, часами нужно ждать регистрации в чужой сети. Плюс дикая помехо незащищённость, к тому же один из модулей помер по не понятной причине, начал греться и кушать 800мА. В общем бросаю я эти neoway, буду заказывать и пробовать не известные А6, чего и всем “наигравшимся” желаю! Приношу извинения автору за офтоп и пожелание изучить и осветить новые А6…

    1. Нашёл его название – Ai-Thinker A6, а в А7 ещё и GPS есть – я в шоке, вкуснотища!

      1. Я заказал пару недель назад модуль про который вы говорите A6, еще не пришел, буду пробовать тестировать, статью постараюсь написать.

          1. Лёд тронулся, тоже заказал!

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

    2. Заказал такой модульGSM/GPRS модуль AiThinker А6. http://www.dx.com/ru/p/gprs-a6-mini-serial-gprs-gsm-module-core-developemnt-board-for-arduino-443770#.WItoZ1OLTcs. Приехал быстро. при подаче питания горит светодиод. А вот, запустить не удается . Подал +5 на вход PWR для включения. Не включается. В чем проблема не пойму

      1. Я тоже заказывал, 43 дня прождал, так и не приехал, вернули деньги. На сколько я знаю, после включения он кучу информации в терминал выдает, подключал к компу?

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

          1. Подозреваю, что у тебя не порядок с usb-uart преобразователем что то не то… Уровни какие выдает, надеюсь 3,3? Задержку между подачей питания на Vcc и pwr попробуй сделать, ножку reset куда нибудь притяни… Да и лучше тему где нибудь на форуме сделать, а то тема не по теме и общаться в этих коментах не возможно.

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

  65. номер и имя заранее прописаны на сим кару

  66. Имя д.б. латинскими буквами, у меня выводилось…

  67. все перепробовал не выводит

  68. может команда нужна?

  69. я просто за.е…. ((( все перепробовал не могу подключиться к порту, питание разное регулировал от 3,7 до 5,2 ( единственное конденсатор на 10мКф, сейчас поставлю на 1000) но в любом случае, звонок на сим карту проходит, то есть сим в сети зарегалась, но вот по порту не могу получить доступ, что я делаю блин не так, подскажи пожалуйста https://vk.com/tahk_b_kybete это я в контакте, автор помоги пожалуйста, сил моих больше нет

    1. Николай, скорее всего может быть три причины:
      1. Не совпадает Baud Rate в модеме и у Вас в терминале.
      2. Перепутаны местами Rx u Tx
      3. Что то не в модеме, а в Вашем компе, терминале, не тот ком. порт выбран

      1. У меня уже поздный вечер, 19:35, после того как написал это сообщение принчлся за есп модуль вайфай, с ним тоже напортачил, но при разборе этого модуля обратил внимание что если модуль вайфай подключать не к USB програматору, а к ардуино, то там нужно наоборот: RX>>> TX , TX>>RX, а если через юсб, то рх>>рх тх>>тх, сейчас проверить нет возможности, но пришла мысль что с этим модулем GSM по аналогии подключение??? И просьба, напешите мне в контакте, дабы живой чат обрести , заранее спасибо

        1. Ну это же логично. Если один говорит, другой слушает. Говорящая нога модема(8-Тх) подключается к слушающей ноге другого девайса и наоборот, слушающая нога модема(7-Rх) подключается к говорящая ноге другого девайса. Если у Вас Ардуинина, к примеру, настроена, что 2 нога – Rх, получает(слушает), а 3 – Тх, посылает(говорит), то подключаете:
          2 7;
          В USB конвертере, аналогично. Найдите, какая нога на прием, а какая на передачу. Если Вы подключили не правильно, то у Вас выбор невелик – поменяйте местами.

          1. Чего то сбилось, а редактировать не дает.
            2 ногу ардуино(Rх) подключаете к 8(Тх) ноге модема;
            3 ногу ардуино(Тх) подключаете к 7(Rх) ноге модема;

            1. Нифига так и не получилось 🙂 сим карта МТС, гудок на сим проходит, а связи с модулем так и нет, что делать?

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

                1. Я уже 3 недели делаю одно и тоже, танцы с бубнами, поменял три ардуинки, блоки питания, в итоге вот какая схема, питание через преобразователб, 4.9 вольт, на выходе кондер на 1000 мкф,( если дать ниже напряжение, не включается), подключение к 5 в, гнд к минусу, boot,тоже замыкаю на гнд, все, приход смс, абонент вновь в сети, подключаю рх и тх к разным входам на ардуинко крест на крест, рх >>тх, тх>>рх, ардуинку тоже привязываю минусом к модулю, и все… что только не пробывал, на разных скоростях, разными редакторами, нет связи с модулем по порту, хоть ты тресни, я ему ат, а он 0 эмоций, заонок принимает, гудки идут…
                  Последняя надежда что стм карта от МТС, не подходит, завтра попробую от билайна, если нет то выкину, сил нет моих больше, ждал 65 дней, и дождался…….

  70. Вопрос? Имеется ли возможность настройки модуля удаленно через GPRS?

  71. Дополнение. Например запрещать некоторые входящие звонки.

    1. Через GPRS настраивать модуль не получится, настройка возможна только внешним устройством, микроконтроллером например.

  72. Кто-нибудь питал его от батареек? Расскажите, пожалуйста. Интересуют именно батарейки (не блоки питания, не аккумы, не юсб и др.)

      1. Интересно. Сейчас посмотрю. Скажите, а вы батарейки эти последовательно же соединяли, да?

  73. Спасибо большое!!! Просто отличная статья!!!!
    Вот, для связи в Bascom (уберёте лишнее):

    $regfile = “m328pdef.dat”
    $crystal = 16000000
    $hwstack = 98
    $swstack = 80
    $framesize = 100

    $baud = 9600
    Config Com1 = Baud , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
    Open “com1:” For Binary As #1
    Config Portd.1 = Output
    Config Portd.0 = Input

    Echo Off

    ‘Конфигурация Подключения Дисплея К Портам Мк
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Rs = Portc.1 , E = Portc.0 , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
    Cursor Off
    Led Alias Portb.5

    Config Led = Output
    Led = 0

    Config Portd.2 = Input
    Signal Alias Pinb.2

    Config Portd.3 = Input

    Dim B As Byte ‘принимаемый байт
    Dim S As String * 20 ‘принимаемые данные
    Dim Priem As Bit ‘принята команда
    On Urxc Redx
    Enable Urxc
    Enable Interrupts

    ‘Порты датчиков влажности/температуры

    Cls
    Print #1 , “AT+IPR?” ; Chr(13) ; Chr(10) ‘для проверки отсылаем команду
    Do

    If Priem = 1 Then ‘если приняли, выводим
    Cls
    Locate 1 , 1
    Lcd S
    S = “”
    End If
    Waitms 100

    Loop
    End

    Redx: ‘прерывание по получению
    B = Inkey(#1)
    If B > 31 Then ‘запоминаем только видимый текст
    S = S + Chr(b)
    Elseif B = 13 Or B = 10 Then ‘ если конец строки, то мы приняли команду.
    Priem = 1
    End If

    Return

    1. Тормознул, вот в это:


      Lcd S
      S = «»
      End If
      Waitms 100
      ….
      Добавьте:
      Priem=0

  74. Есть ПК и плата с М590, что ещё нужно для их подключения? На схеме подключения ноги не по порядку, как подключать к контактам на плате М590? Там они по порядку.

  75. Добрый день! Помогите, пожалуйста, разобраться с одной проблемой. (уже несколько недель не получается решения найти)
    Проблема вот в чём: Номер телефона ввожу с клавиатуры Ардуино и записываю его в ЕЕПРОМ. При каждом цикле переменная считывает номер с ЕЕПРОМ и присваивает себе это значение.
    Необходимо: Совершать звонок на этот номер из переменной. Проблема в том, что не могу разобраться, как его прописать строку: gsm.println(“ATD+”); Дело в том, что кавычек “” то в переменной нет и знака “;” тоже нет. Приведенные ниже строки тоже результата не дают…
    Long TEL = 834052454 // номер телефона без +79
    gsm.println(“ATD+”);
    gsm.write(char(34));
    gsm.print(“+”);
    gsm.print(“7”);
    gsm.print(“9”);
    gsm.print(TEL);
    gsm.print(“;”);
    gsm.write(char(34));

  76. в место переменной создайте массив символов

  77. А отправлять их в GSM модуль поочередно?
    после gsm.println(«ATD+»); ?

    1. отправить нужно за один присест и с символом “\r” в конце. если отправлять поочерёдно командой print, то модуль выдаст ERROR, потому что print в след за командой посылает ещё и не видимый “\0”. такие дела.

  78. Мне вот интерес один момент. Есть команда проверки статуса модуля AT+CPAS. Одним из ответов на команду есть +CPAS: 5 , т.е. модуль в спящем режиме. НО! В описании спящего режима написано – “Во время “сна” модуль не реагирует на команды, поступающие по UART”. Как-то не логично выходит. Кто что знает по этому поводу?

    1. После отправки команды спящего режима модуль не сразу засыпает, а после того как вывод SLEEP установится в 0, вот после получения команды и до сброса линии в 0, модуль и будет выдавать ответ +CPAS: 5 на запрос проверки статуса.

  79. Привет!У меня такая проблема с этим модулем. СМСки отправляет, принимает, звонит и принимает звонки, с этим проблем нет. НООО он никак не хочет спать!!! Пишу at+enpwrsave=1 в ответ ОК, светодиод перестает моргать, гаснет, на линию sleep подаю низкий логический уровень, но (даже спустя минуту) на команды по юарту он отвечает и токопотребление не снижается. В чем может быть проблема? может есть какой секрет по его усыплению???

    P.S. дабы избежать проблем с ,,китайской платой,, развел свою по даташиту, результат ровно тайкой же

    P.P.S. не сохраняются настройки AT&W
    P.P.P.S модуля 2 от разных продавцов, результат одинаковый

    1. Здравствуйте, вы делали все правильно, а пробовали ждать больше минуты? Я замечал что нет какого-то определенного времени на уход в сон, всегда по разному.

      1. Пробовал и 10 минут ждать, все тоже самое. Причем когда я перевожу СЛИИП в высокий уровень во время ,,сна,, (когда светодиод не моргает) модуль не ,,просыпается,,. Светодиод по прежнему не мигает. Как будто он вообще не реагирует на линию СЛИП

        1. Светодиод должен включится если послать команду at+enpwrsave=0, проверьте уровень сигнала на 9-ом выводе (DTR) модуля, на факт наличия низкого уровня. Возможно со стороны управляющего устройства идет передача данных, из-за чего модуль не засыпает, проверьте 7-ой вывод RXD на модуле, там должен быть высокий уровень при отсутствии передачи данных.

          1. Добрый день! У меня такая же проблема. На команду at+enpwrsave=1 реагирует, диод перестает моргать, потребляемый ток 25-30 мА. На подачу низкого и высокого уровня на DTR никак не реагирует, как находился в режиме ожидания (25-30 мА), так и остается в нем. UART модема остается в работе, принимает команды и отвечает на них. На 7 выводе (RXD) высокий уровень.
            Команда at+enpwrsave=0 включает диод, потребление тока такое же 25-30 мА.
            (В общем, блинкать светодиодом GSM-модема научился!)
            Пробовал и SoftwareSerial, и AltSoftSerial, и аппаратный UART, и напрямую от TTL-конвертера, – результат один и тот же. Длительное ожидание “усыпления” ничем новым не обернулось. Добиться 2,5-2,8 мА так и не удается.
            Подскажите, пожалуйста, что я делаю не правильно?

  80. всем привет подскажите пожалуйста на м590 приходят звонки приходят смс всё читается отправить пробовал ошибка звонить с него не получается отвечает сброшен
    отправляю звонок так ATD+77057x7x0x0 отвечает так NO CARRIER
    отправляю команду AT+CSCS=”GSM” ответ ok
    отправляю смс AT+CMGS=“+77057x7x0x0” ответ >
    отправляю > Perezvoni mne ответ ERROR
    даже отправить не успеваю

    1. Будьте внимательнее, в команде ATD+77057x7x0x0; в самом конце есть символ – ;

      Для sms, после отправки текста сообщения, для завершения процесса следует отправить символ (шестнадцатеричное значение 0х1A)

  81. Здравствуйте, подскажите команда сохранения текущей конфигурации настроек в EEPROM память AT&W, какие параметры сохраняет в eeprom, и как их потом загрузить, очень хочется аон и текстовый формат сообщений не устанавливать посылая команду при каждом включении питания

  82. С модуля не уходит СМС но только с сим картой МТС (эту карту вставлял в телефон – смс работает). И в модуль вставлял мегафоновскую симку – смс уходит. Но нужно, чтобы модуль работал с мтс симкой. Вопрос: в чём проблема?

    1. Приветствую, а какую ошибку пишет модуль? У меня с сим картой МТС все работало.

      1. Я сейчас только начинаю с ними разбираться. Охранная система гаража ( в которой стоит данный модуль) уже была готовая. Посоветуйте с чего начать. По своей глупости купил симку МТС и оплатил 500 р. по тарифу “умное устройство” на год вперёд. Да и все мои на МТС. В общем советы вроде “смени симку не желательны.

        1. Если это готовое устройство, как вы собираетесь в нем что-то менять? вы будете переделывать программу?

          1. Это «готовое устройство» я сделал полностью своими руками, но с готовых схем и программы на ардуино

  83. Это “готовое устройство” я сделал полностью своими руками, но с готовых схем и программы на ардуино

    1. Сложно сказать что не так, надо бы посмотреть какие команды отправляются на модуль во время отправки SMS, подключите к линии RX модуля USB-COM преобразователь и посмотрите на компьютере в терминальной программе что там происходит. А пробовали другую симку от того же МТС?

      1. Пробовал со своего телефона, даже связь не установила с базовой станцией оператора. Сплошные вопросы. Буду пробовать заходить в неё. Да, ещё, это китайский девайс М590Е не NEOWEY а безродный.

  84. Получилось почти всё. Но дохожу до отправки смс , дальше не знаю что делать? Какая команда для отправки смс?
    AT+CMGF =1

    OK
    AT+CSCS=”GSM”

    OK
    AT+CMGS=\”79138801431\”

    > vvv

    1. Для отправки сообщения надо ввести команду: AT+CMGS=“+79XXXXXXXXX”$0D (+79XXXXXXXXX — номер абонента кому шлем SMS, номер должен быть заключен в кавычки), после этого модуль выдаст приглашение в виде символов > (> и пробел), далее вводим текст сообщения в конце которого вводим символы $1A (то есть символ ctrl-Z), тем самым говоря модулю что сообщение окончено, после этого в случае успеха модуль выдаст сообщение +CMGS: и OK.

  85. OK
    AT+CSCS?

    +CSCS: “GSM”

    OK
    AT+CMGS=“+79138801431”

    > Perezvoni mne
    ERROR

    что не так?

  86. символы $1A (то есть символ ctrl-Z) конечно вводил

    1. А ошибку ERROR модуль выдает сразу же или с паузой? в какой терминальной программе отправляете команды? Попробуйте с другой симкой отправлять сообщения.

  87. хочу сделать звонилку 1 – 2 номера с использованием M590 и attiny2313. Может кто подскажет чего? Исходники может или готовый hex со схемой

  88. Не регистрируется в сети (код 2 – регистрация отклонена). Питание подаю с зарядки на 2А.
    MODEM:STARTUP
    at

    OK

    +PBREADY
    at+creg=1

    OK

    +CREG: 0

    +CREG: 2

    +CREG: 0

    +CREG: 2

    +CREG: 0

    +CREG: 2

    +CREG: 0

    +CREG: 2

  89. Скажите пожалуйста SIM IO и SIM VCC надо поставить 4,7 к, или 10 к?
    на даташите написана SIMIO Need to pull up SIMVCC by external resistance 10K

  90. на схеме ( R9, 4,7кОм) между выводами Vcc и I/O СИМ карты, можно поставить 10 к?

  91. скажите пожалуйста можно без транзистора VT1, с вывода микроконтроллера через 1к, на контакт 19 (ON/OFF), и поставит PORT на выход, лог.1 например 4.2В. Когда понадобится сделать ресет то поставит PORT лог 0 300 млсикунд?

    1. извините не 19 а на 18 Emergency OFF

        1. Вывод Emergency OFF подтянут к высокому лог. уровню внутри модуля, не стоит подавать туда внешнее напряжение с микроконтроллера. Надо сделать по другому, линию микроконтроллера настроить на вход в режиме нормальной работы, если надо перезагрузить модуль, то перенастроить линию МК на выход с лог.0, затем заново на вход, чтобы исключить подачу внешнего напряжения.

          1. когда сделаю так (линию микроконтроллера настроить на вход в режиме нормальной работы) модуль не стартует MODEM:STARTUP, как будто в ножке 18 модуля лог.0. в чем причина не знаю??

              1. Можно и с диодом, тогда линию МК на вход можно не перенастраивать, а устанавливать лог.1
                Я не понял у вас модуль не стартует чтоле? на выводе Emergency_OFF в нормальном режиме работы должна быть лог.1

                1. когда линию микроконтроллера настрою на вход, для нормальной работы модуль не стартует MODEM:STARTUP.

  92. жаль что нету редактировать сообщение.
    скажите пожалуйста можно без транзистора VT2, с вывода микроконтроллера через 1к, на контакт 18 (Emergency OFF), и поставит PORT на выход, лог.1 например 4.2В. Когда понадобится сделать ресет то поставит PORT лог 0 , 300 млсикунд?

    1. Masis, вы писали: когда линию микроконтроллера настрою на вход, для нормальной работы модуль не стартует MODEM:STARTUP.

      Значит у вас линия настраивается не на вход, а скорее на выход, отключите вывод модуля Emergency OFF от микроконтроллера и попробуйте запустить модуль, если запускается, значит проблема в неправильно настроенных линиях МК.

  93. что сделать если на команду AT+COPS?
    ответ вот такой
    +COPS: 2

  94. что сделать если на команду AT+COPS?
    ответ вот такой
    +COPS: 2
    удивительно что на команду AT+CSQ
    ответ вот такой
    +CSQ: 12,3
    симку тоже видит.

    1. Видимо модуль не может зарегестрировать сим-карту в домашней сети. Может вы находитесь в роуминге? Попробуйте другую Сим-карту.

      1. A на команду AT+CREG?
        ответ вот такой
        +CREG: 0,3
        Первый параметр: 0 нет кода регистрации сети
        Второй параметр: 3 регистрация отклонена
        У меня таких модулей (neoway m590) уже 8 штук. Симку видит на команду AT+CPBR=1
        дает ответ
        +CPBR: 1,”номер”,129,”имя” ,
        сигнал антены ест +CSQ: 17,2
        НО +COPS: 2, +CREG: 0,3
        попробовал другой модуль neoway m590, на том же сим карте, нормально работает.

  95. Neoway M590 работает нормально, Sleep режим отключаю at+enpwrsave=0, после 1-2 час когда звоню на этот номер (который находится в модуле), абонент временно недоступен. в чем проблема??

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

      1. да качество хороший, +CSQ: 20,2, в этот момент когда абонент не доступен, на команду AT+COPS, ответ вот такой +COPS: 2

  96. посоветуйте пожалуйста что лучше
    для питании поставить 7805 с радиатором(5 вольт)
    или DC DC step down на 4.2 вольт

    1. Напряжение в 5В многовато для модуля, максимум 4,5В. Лучше в таком случае запитать от импульсного DC-DC на 4.2 вольт.

  97. может кто нибудь знает? есть модули neoway m590e а есть Sinowell G590 так вот вопрос, второй не запускается, никогда сеть не может найти, хотя даташит одинаковый, параметры одинаковые, вообщем копия

  98. При работе с данным модулем необходимо учесть ряд особенностей его процессор питается от напряжения 3,3 вольт, чтобы он подключался к ардуино у которого питание 5 вольт, ставят последовательно по питанию диод, который понижает напряжение до 5-0,8=4,2вольта, источник питания должно обеспечивать возможность повышения тока до 2 ампер, во время включения модуля ток большой. Но самое главное это сопряжения модуля с ардуино по каналу обмена данными Rx Tx, основное это канал Rx на модуле, на его входе уровень импульсов должен быть 3,3 вольта, а с ардуино идет 5 вольт это приводит к зависанию обмена данными межу ардуино и модулем, ну соответственно ничего не работает после этого, приходится перезагружать ардуино , хотя поначалу кажется все прекрасно работает, необходимо в схему добавлять два развязывающих сопротивления чтобы снизить уровень сигнала от ардуино на входе Rx модуля и все прекрасно работает! Схема представлена по ссылке, другие модули типа SIM 900 имеют ту же проблему, довольно много пришлось помучиться, может кому опыт пригодится.
    https://www.drive2.ru/c/501088956415214410/ смотрите два сопротивления по 10 ком, одно идет на Rx модуля, второе соединяет Tx ардуино с землей. А если не ставить эти сопротивления получается Tx ардуино и Rx модуля соединяются напрямую.

  99. Проще всего, питать всю схему от 3.3 вольт. Я так постоянно делаю, проблем нет.

  100. Скажите пожалуйста, почему на 5 ножке поставили 4,7к ?? светодиод ели ели светится. может есть смысл. Я видел на заводском плата где для светодиода поставили транзистор.

  101. Добрый день!
    Уважаемый Admin, почему не сохраняется настройка АОН после перегрузки по питанию? AT&W после включения АОН делал. Может ли быть какая либо усеченная возможность у модуля? И как поправить?

    1. Конкретизирую вопрос.
      Команда AT&W сохраняет текущий профиль.
      Команда AT&V показывает текущий и сохраненные профили.
      Я не нашел команды загрузки текущего профиля из сохраненных.
      Это, вообще предусмотрено?

  102. Как отправить СМС на Русский??

Имя (обязательно)Email (обязательно)Веб-сайт

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