Купить модуль neoway m590 можно тут: http://ali.pub/1etjdu
Для подключения модуля к компьютеру нам понадобится:
Конвертер rs485 FTD232: http://ali.pub/1etju6
Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.
1. Модулей Neoway m590 на Aliexpress очень много, и все разные, поэтому будьте очень внимательны при заказе, так как на моем модуле, не было распиновки, и было непонятно где на модуле VCC, а где GND. Поэтому прежде чем заказать убедитесь, в наличии распиновки хотя бы на картинке у продавца.
Распиновка именно на мой модуль Neoway m590 GPRS100622:
Извиняюсь за мелкий шрифт на картинке, сам нашел эту распиновку случайно.
2.Важно понимать что модуль Neoway m590 самый дешевый, но и самый “прожерливый” по питанию. В пике своей активности потребление тока может достигать на 2А. Поэтому нужно запастись стабильным мощным питанием или припаять конденсатор в разрыв питания и самого модуля, чтоб просадка была поменьше для источника питания. Как я собственно и сделал в Видео ниже это наглядно видно.
3. Убедитесь что у Вас имеется в комплекте с заказываемым модулем антенна, ну или закажите ее отдельно к модулю. Так-как мой модуль пришел без антенны и он не связывается с оператором без нее.
4. Если все-же, Вам удалось подключиться к модуль через компьютер, то Вам необходимо знать список AT команд, чтобы общаться с модулем по средствам этих команд. Ссылку на файл со всеми АТ командами к модему я оставлю в конце этой статьи. Но Некоторые из этих команд я приведу в статье:
Описание | Команда настройки режима “эха” | |
Формат | ATE<n> | |
Параметр | <n>: 0 – выключить; 1 – включить | |
Ответ | OK | |
Пример | ATE0
OK |
Описание | Команда проверки модели и версии модуля | |
Формат | ati | |
Пример | ati NEOWAY M590 REVISION 01.30cOK |
МодельВерсия |
Описание | Команда чтения версии прошивки модуля | |
Формат | at+getvers | |
Ответ | <версия> OK или ERROR |
|
Пример | at+getvers 1103_C6C30000_V0130cOK |
Версия прошивки |
Описание | Команда сохранения текущей конфигурации настроек в 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: 9600OK |
Скорость порта равна 9600 бит/сек |
Описание | Команда проверки статуса модуля | |
Формат | AT+CPAS | |
Параметр | <pas>: 0 – готов к работе 2 – неизвестно 3 – входящий звонок 4 – в режиме соединения 5 – спящий режим |
|
Ответ | +CPAS: <pas> OK (или ERROR) |
|
Пример | AT+CPAS +CPAS: 0OK |
Модуль готов к работе |
Описание | Команда проверки регистрации модуля в сети | |
Формат | AT+CREG: <mode> | |
Параметр | <mode>: 0 – выключить уведомление о регистрации в сети 1 – включить уведомление о регистрации в сети +CREG: <stat> 2 – включить уведомление о регистрации в сети и информацию о местоположении<stat>: 0 – не зарегистрирован, поиск сети не выполняется 1 – зарегистрирован в домашней сети 2 – регистрация отклонена 3 – не зарегистрирован, выполняется поиск сети 4 – неизвестно 5 – зарегистрирован, зона роуминга |
|
Ответ | OK или ERRORAT+CREG: <mode>,<stat> OK |
|
Пример | AT+CREG=1 OK |
Включить уведомление о регистрации в сети |
Запрос параметров | AT+CREG? +CREG: 0,1OK |
Зарегистрирован в домашней сети |
Описание | Команда настройки спящего режима | |
Формат | 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 формате, текст представлен в виде последовательности шестнадцатеричных чисел. |
Для нормальной кодировки английского текста я выбирал “GSM”
Описание | Команда выбора кодировки текста | |
Формат | 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-START2OK |
Для текстового формата кодировка ASCII (GSM) Получено сообщение: GPS-START2 |
AT+CMGR=1 +CMGR: “REC READ”,“+79123456789”,“”,“15/11/13,14:39:35+32” 004700500053002D005300540041005200540032OK |
Для текстового формата кодировка Unicode (UCS2) Получено сообщение: GPS-START2 |
|
AT+CMGR=1 +CMGR: 1,,28 07919730071111F1040B919721436587F90000511131419353020 A47E8B435A506A55419OK |
Для 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: 2OK |
Для текстового формата Отправка сообщения “Perezvoni mne” |
AT+CMGS=27<CR> > 07919740030900F001000B919721436587F900080E 041F044004380432043504420021<ctrl-Z> > +CMGS: 2OK |
Для PDU формата кодировка Unicode (UCS2) Отправка сообщения “Привет!” |
|
AT+CMGS=22<CR> > 07919740030900F001000B919721436587F900000A 47E8B435A506A55419<ctrl-Z> > +CMGS: 2OK |
Для 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>: |
|
Ответ | 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, модуль автоматически возьмет номер из СИМ карты.