GSM модуль NEOWAY M590 – GPRS команды

NEOWAY M590 – GPRS команды
Модуль NEOWAY M590 приобретает все большую популярность среди радиолюбителей, и в этой статье я расскажу про GPRS команды модуля. GPRS представляет собой пакетную передачу данных на основе мобильной связи GSM, и дает возможность обмена данными между устройствами сети GSM, а также выход в Интернет. Для передачи данных по GPRS используется протокол TCP/IP, кроме этого модуль поддерживает стандарт FTP.

Модуль можно заказать здесь. В статье про GSM модуль NEOWAY M590 я приводил описание модуля и команды, касающиеся настройки модуля, а также команды для работы с SMS сообщениями, ниже представлены основные команды для работы с GPRS:

ОписаниеКоманда задания параметров PDP контекста
ФорматAT+CGDCONT=<cid>,<type>,<APN>
Параметр<cid> – идентификатор PDP контекста, минимальное значение 1
<type> – тип протокола передачи данных, “IP” – использовать протокол TCP/IP
<APN> – имя точки доступа
ОтветOK или ERROR
ПримерAT+CGDCONT=1,“IP”,“internet.mts.ru”
OK
“internet.mts.ru” – имя точки доступа

 

ОписаниеКоманда аутентификации PDP
ФорматAT+XGAUTH=<cid>,<auth>,<name>,<pwd>
Параметр<cid> – идентификатор PDP контекста
<auth>:
0 – не использовать протокол аутентификации
1 – использовать протокол аутентификации PAP (передача имени и пароля для проверки подлинности)
2 – использовать протокол аутентификации CHAP (для проверки подлинности пароль не передается)
<name> – имя пользователя
<pwd> – пароль
ОтветOK или ERROR
ПримерAT+XGAUTH=1,1,“mts”,“mts”
OK
Запрос
разрешенных
значений
параметров
AT+XGAUTH=?
+XGAUTH: (1-255),(0-2),20,32
 
OK
 
Максимальная длина
имени 20 символов,
для пароля 32 символа
ПримечаниеКоманда должна быть задана после выполнения команды AT+CGDCONT

 

ОписаниеКоманда выбора внутреннего/внешнего стека протоколов
ФорматAT+XISP=<n>
Параметр<n>:
0 – использовать внутренний стек протоколов TCP/IP
1 – использовать внешний стек протоколов (по умолчанию)
ОтветOK
ПримерAT+XISP=0
OK
Запрос
текущего
значения
параметра
AT+XISP?
+ XISP:     0
 
OK
 
Между “:” и “0” четыре пробела

 

ОписаниеКоманда установки соединения по протоколу PPP
ФорматAT+XIIC=<n>
Параметр<n>: 1 – установить соединение по протоколу PPP
ОтветOK
ПримерAT+XIIC=1
OK
Запрос
текущего
значения
параметра
AT+XIIC?
+XIIC:    1, 10.63.44.105
 
OK
Проверка PPP соединения
Соединение установлено,
присвоен IP адрес 10.63.44.105
Между “:” и “1” четыре пробела
AT+XIIC?
+XIIC:    0, 0.0.0.0
 
OK
Проверка PPP соединения
Соединение не установлено
Между “:” и “0” четыре пробела
ПримечаниеДо установления PPP соединения необходимо выполнить команду AT+CGDCONT
Команду AT+XISP=0 необходимо выполнить до команды AT+CGDCONT

 

ОписаниеКоманда установки соединения по протоколу TCP
ФорматAT+TCPSETUP= <n>,<ip>,<port>
Параметр<n> – идентификатор соединения, может принимать значения только 0 и 1
<ip> – IP адрес узла, с которым устанавливается соединение
<port> – номер порта, через который устанавливается соединение
ПримерAT+TCPSETUP=0,213.180.193.3,80
OK
 
+TCPSETUP:0,OK
Соединение с узлом 213.180.193.3 успешно установлено
AT+TCPSETUP=0,213.180.193.3,80
OK
 
+TCPSETUP:0,FAIL
Попытка соединения с узлом 213.180.193.3 не удалась
AT+TCPSETUP=2, 213.180.193.3,80
+TCPSETUP:Error
Синтаксическая ошибка в команде
ПримечаниеПеред установлением TCP соединения необходимо убедиться в активности PPP соединения
Если получен ответ OK, то введенная команда правильная, в противном случае будет выдан ответ +TCPSETUP:Error

 

ОписаниеКоманда передачи данных по протоколу TCP
ФорматAT+TCPSEND=<n>,<length>
Параметр<n> – идентификатор соединения, может принимать значения только 0 и 1, должен соответствовать идентификатору TCP соединения
<length> – длина передаваемых данных, может принимать значения 1-2000 байт.
ПримерAT+TCPSEND=0,10
>0123456789<CR>
OK
 
+TCPSEND:0,10
10 байт данных успешно
отправлены по TCP соединению
AT+TCPSEND=0,10
 
+TCPSEND:Error
Ошибка передачи данных,
TCP соединение не установлено
AT+TCPSEND=0,10
>01234567899<CR>
 
ERROR
 
OK
 
+TCPSEND:0,10
Ошибка передачи данных,
длина переданных данных
превышает значение
в команде
AT+TCPSEND=0,2800
 
+TCPSEND:Data length error
Ошибка передачи данных,
длина переданных данных
превышает максимально
разрешенное значение в 2000 байт
AT+TCPSEND=0,536
>01234567899…<CR>
+TCPSEND:Buffer not enough,439
ERROR
Ошибка передачи данных,
внутренний буфер переполнен
ПримечаниеСначала необходимо отправить команду AT+TCPSEND, затем дождаться приглашения в виде символа “>”, после чего отправить данные. Для завершения процесса следует отправить символ возврата каретки <CR> (шестнадцатеричное значение 0х0D), который не входит в длину пакета данных.
Перед отправкой данных необходимо убедиться, что TCP соединение установлено, а также с помощью команды AT+IPSTATUS проверить кол-во свободного места в буфере

 

ОписаниеКоманда указывает на процесс приема данных по протоколу TCP
Формат+TCPRECV:<n>,<length>,<data>
Параметр<n> – идентификатор соединения, может принимать значения только 0 и 1
<length> – длина принятых данных
<data> – непосредственно полученные данные, пакет данных заканчивается символами  <CR><LF>, пользователь должен сверить длину полученных данных с параметром <length>
Пример+TCPRECV:0,10,0123456789Принято 10 байт данных, 0123456789
+TCPRECV:0,231,HTTP/1.1 200 OK
Server: nginx-reuseport/1.10.0
Date: Fri, 27 May 2016 14:20:07 GMT
Content-Type: text/html
Content-Length: 24
Connection: keep-alive
Keep-Alive: timeout=30
X-Powered-By: PHP/5.3.29
 
The request was accepted
Принято 231 байт данных,
в данном случае ответ сервера
(по HTTP стандарту) на GET запрос.
Строка ответа: The request was accepted

 

ОписаниеКоманда закрытия TCP соединения
ФорматAT+TCPCLOSE=<n>
Параметр<n> – идентификатор соединения, может принимать значения только 0 и 1
ПримерAT+TCPCLOSE=0
+TCPCLOSE:0,OK
TCP соединение
успешно закрыто
AT+TCPCLOSE=2
+TCPCLOSE:Error
Неверный идентификатор
соединения, ошибка
+TCPCLOSE:0,Link ClosedTCP соединение
закрыто принудительно

 

ОписаниеКоманда проверки IP адреса узла по доменному имени
ФорматAT+DNS=<string>
Параметр<string> – доменное имя узла
ПримерAT+DNS=“www.ya.ru”
OK
 
+DNS:93.158.134.3
+DNS:213.180.193.3
+DNS:213.180.204.3
+DNS:OK
Проверка IP адреса
узла www.ya.ru
(www можно не указывать)
 
Как видно узел имеет
три IP адреса
ПримечаниеПеред проверкой IP адреса необходимо установить соединение по PPP протоколу командой AT+XIIC=1
Максимальная длина доменного имени не должна превышать 250 символов

 

ОписаниеКоманда авторизации на FTP сервере
ФорматAT+FTPLOGIN=<ip><port><user><pwd>
Параметр<ip> – IP адрес сервера FTP
<port> – номер порта FTP сервера, обычно номер равен 21
<user> – имя пользователя, максимальная длина не должна превышать 100 символов, имя не должно содержать символы запятой “,”
<pwd> – пароль, максимальная длина не должна превышать 100 символов, пароль не должен содержать символы запятой “,”
Ответ+FTPLOGIN:Error <n> – синтаксическая ошибка в команде, <n> – код ошибки
+FTPLOGIN:Have Logged In – авторизация уже была произведена ранее
+FTPLOGIN:AT Busy – предыдущая команда (имеющая отношение к FTP сервису) еще не завершилась
+FTPLOGIN:User logged in – авторизация успешно выполнена
+FTPLOGIN:530 Not logged in –авторизация не выполнена, неверное имя пользователя или пароль
+FTPLOGIN:Error Connect Server Fail – подключение к FTP серверу завершилось неудачей
+FTPLOGIN: Error TimeOut – превышено время ожидания ответа от сервера (более 30 секунд)
ПримерAT+FTPLOGIN=219.134.179.52,21,user1,pwd2016
OK
 
+FTPLOGIN:User logged in
Авторизация на FTP
сервере 219.134.179.52,21
под именем user1 и паролем
pwd2016 успешно выполнена
+FTP:ShutdownСеанс связи закрыт по
истечении времени бездействия
ПримечаниеПеред авторизацией на FTP сервере необходимо убедиться в активности PPP соединения

 

ОписаниеКоманда загрузки данных с FTP сервера
ФорматAT+FTPGET=<dir$filename>,<type>,<content or info>
Параметр<dir$filename> – путь к директории и название файла
<type> – формат передачи данных:
1 – символы ASCII
2 – двоичные данные
 
<content or info>:
1 – получить данные из файла
2 – получить информацию о файле
Ответ+FTPGET:Error <n> – синтаксическая ошибка в команде, <n> – код ошибки
+FTPGET:Error Not Login –авторизация на FTP сервере не была выполнена
+FTPGET:AT Busy – предыдущая команда (имеющая отношение к FTP сервису) еще не завершилась
+FTPLOGIN: Error TimeOut – превышено время ожидания ответа от сервера (более 30 секунд)
+FTPGET:<length>,<data> – прием данных от сервера, <length> – длина получаемых данных, <data> – непосредственно получаемые данные
+FTPGET:OK.total length is <n> – данные от FTP сервера успешно получены, <n> – длина принятых данных
ПримерAT+FTPGET=,1,2
+FTPGET:658,drwx——    3 1241     601          4096 Sep 12  2012 .cache
drwx——    3 1241     601          4096 Sep 12  2012 .konfit
drwx——    2 1241     601          4096 May 27 11:48 .fa
drwx——    3 1241     601          4096 Sep 15  2013 .local
drwx——    2 1241     601          4096 Feb 27  2012 .shh
-rwx——    1 1241     601          7262 Feb 27  2012 .proinfo
drwx——    3 0        0            4096 Sep 21  2012 inco-cabfil
-rw——-    1 1241     601            12 Feb 27 14:19 new.txt
drwx——    3 1241     601          4096 Sep 17  2013 cashe0001301
drwx——    3 1241     601          4096 Sep 21  2013 123456.frutrot
 
 
+FTPGET:OK.total length is 658
 
Получена информация
о корневом каталоге
AT+FTPGET=new.txt,1,2
+FTPGET:65,-rw——-    1 1241     601            12 Feb 27 14:19 new.txt
 
 
+FTPGET:OK.total length is 65
 
Получена информация
о файле new.txt
AT+FTPGET=new.txt,1,1
+FTPGET:12,PrivetPrivet
 
+FTPGET:OK.total length is 12
 
Получены данные из
файла new.txt
ПримечаниеДанные от FTP сервера могут загружаться с некоторой задержкой

 

ОписаниеКоманда передачи данных на FTP сервер
ФорматAT+FTPPUT=<filename>,<type>,<mode>,<size>
Параметр<filename> – название файла, к которому передаются данные
<type> – формат передачи данных:
1 – символы ASCII
2 – двоичные данные
 
<mode> – режим передачи данных:
1 – создание документа на сервере для записи в него данных, если документ уже существует, его содержимое заменяется новыми данными
2 – создание документа на сервере для записи в него данных, если документ уже существует, данные добавляются в конец документа
3 – удаление документа, параметр <size> должен быть равен 0, после получения приглашения в виде символа “>”, необходимо отправить символ возврата каретки <CR> (0х0D) для завершения команды удаления
 
<size> – длина передаваемых данных, значение не должно превышать 10240 байт
Ответ+FTPPUT:Error <n> – синтаксическая ошибка в команде, <n> – код ошибки
+FTPPUT:Error Not Login – авторизация на FTP сервере не была выполнена
+FTPPUT:AT Busy – предыдущая команда (имеющая отношение к FTP сервису) еще не завершилась
+FTPPUT:length overflow – превышено максимальное значение длины <size> передаваемых данных
+FTPPUT:OK,<n> – данные успешно отправлены, <n> – длина переданных данных
+FTPPUT:Delete File OK – документ успешно удален
+FTPPUT:Error – ошибка передачи данных, команда не выполнена
ПримерAT+FTPPUT=new.txt,1,1,9
>radiolaba<CR>
+FTPPUT:OK,9
Создание документа new.txt,
передача 9 байт данных (radiolaba)
в документ, формат данных ASCII символы
AT+FTPPUT=new.txt,1,2,7
>zapis01<CR>
+FTPPUT:OK,7
Добавление 7 байт данных
(zapis01) в конец документа new.txt,
формат данных ASCII символы
AT+FTPPUT=new.txt,1,3,0
><CR>
+FTPPUT:Delete File OK
Удаление файла new.txt
ПримечаниеСначала необходимо отправить команду AT+FTPPUT, затем дождаться приглашения в виде символа “>”, после чего отправить данные. Для завершения процесса следует отправить символ возврата каретки <CR> (шестнадцатеричное значение 0х0D)

 

ОписаниеКоманда выхода пользователя из системы, закрытие сеанса FTP
ФорматAT+FTPLOGOUT
ОтветOK
ПримерAT+FTPLOGOUT
OK
Выход пользователя
выполнен
ПримечаниеЭта команда может использоваться независимо от того авторизован ли пользователь или нет

 

ОписаниеКоманда проверки статуса FTP соединения
ФорматAT+FTPSTATUS
Ответ+FTPSTATUS:<status>[,<ip>,<port>]
 
<status>:
logout – авторизация на FTP сервере не выполнена
login – авторизация на FTP сервере выполнена, IP адрес и номер порта находятся в следующем параметре:
<ip> – IP адрес FTP сервера
<port> – номер порта FTP сервера
ПримерAT+FTPSTATUS
+FTPSTATUS:login,219.134.179.52,21
Пользователь авторизован
на FTP сервере 219.134.179.52
 AT+FTPSTATUS
+FTPSTATUS:logout
Авторизация не произведена

 
Для экспериментов я подключил модуль к компьютеру с помощью USB-UART преобразователя, в качестве терминальной программы использовал Terminal v1.9b by Bray. Для выхода в интернет необходимо отправить модулю последовательность определенных команд.

Сначала отправляем команду выбора внутреннего стека протоколов TCP/IP: AT+XISP=0, по умолчанию модуль использует внешний стек протоколов TCP/IP. Для ввода команды не забываем в конце добавить символ возврата каретки <CR>, в терминальной программе необходимо набрать $0D. Далее необходимо задать параметры PDP контекста, командой AT+CGDCONT. Параметр APN (имя точки доступа) зависит от мобильного оператора, для оператора МТС команда выглядит следующим образом: AT+CGDCONT=1,“IP”,“internet.mts.ru”, для Beeline AT+CGDCONT=1,“IP”,“internet.beeline.ru”, Tele2 – AT+CGDCONT=1,“IP”,“internet.tele2.ru”.

Следующая команда аутентификация PDP контекста, для оператора МТС команда выглядит следующим образом: AT+XGAUTH=1,1,“mts”,“mts”, параметры имя и пароль для других операторов можно найти в сети. Я пропускал данную команду, модуль при этом без проблем выходил в интернет.

И наконец, команда установки соединения по протоколу PPP: AT+XIIC=1. После ввода команды необходимо проверить наличие соединения с помощью той же команды, но с другим параметром: AT+XIIC?. Если получен ответ вида: +XIIC: 1, 10.73.201.98, то получен доступ в Интернет, модулю присвоен IP адрес 10.73.201.98. Если модуль вернул ответ +XIIC: 0, 0.0.0.0 значит, соединение не установилось, соответственно выхода в Интернет нет. Ниже представлен лог команд из терминала:

Как только доступ в Интернет получен, можно подключаться к различным серверам и обмениваться данными. Для передачи данных нужно сначала установить соединение с сервером при помощи команды AT+TCPSETUP. Эта команда устанавливает TCP соединение с каким-либо узлом сети по IP адресу и номеру порта. Идентификатор соединения в параметрах команды может принимать значения 0 или 1, я использовал 0. Чтобы подключится к серверу, на котором установлен web-сайт, необходимо узнать IP адрес сервера, это можно сделать командой AT+DNS=<URL>, которая позволяет проверить IP адрес узла по доменному имени. Для просмотра web-страниц по стандарту http используется 80-й порт, для https 443-й порт. Для стандарта передачи данных FTP используется 21-й порт.

После успешного соединения с сервером можно начинать процесс передачи данных. Команда AT+TCPSEND отправляет данные на сервер по протоколу TCP/IP, идентификатор соединения в параметрах команды должен соответствовать значению в предыдущей команде (AT+TCPSETUP). Кроме этого в параметрах команды задается длина передаваемых данных, после ввода команды и получения приглашения, необходимо ввести данные, для завершения процесса отправить символ <CR>.

Но, передача произвольного потока данных не имеет смысла, сервер с web-сайтом ничего не распознает, необходимо передавать данные по HTTP стандарту. В http для запроса данных используют инструкцию GET, например, чтобы загрузить главную страницу web-сайта, нужно передать серверу следующий запрос:

GET /index.php HTTP/1.1\r\n
Host: site.ru\r\n\r\n

где, \r\n это символы возврата каретки и переводы строки <CR><LF>. Файл index.php находящийся на сервере отвечает за отображение главной страницы сайта с доменным именем site.ru. В терминале данный запрос будет выглядеть в виде одной строки:

GET /index.php HTTP/1.1$0D$0AHost: site.ru$0D$0A$0D$0A$0D

Последний символ возврата каретки $0D необходим для завершения ввода данных в команде AT+TCPSEND. Ниже представлен неполный лог загрузки главной страницы сайта:

В команде AT+TCPSEND необходимо указать длину запроса без учета последнего символа <CR>, для вышеприведенного запроса длина составляет 42 байта. После передачи запроса сервер выдает ответ, который содержит различную информацию о сервере, после чего идут непосредственно данные главной страницы сайта. Команда модуля +TCPRECV указывает на прием данных от сервера с указанием длины принимаемых данных, прием ведется блоками определенной длины, в зависимости от состояния внутреннего буфера модуля. После приема данных, TCP соединение принудительно закрывается, выдается сообщение вида: +TCPCLOSE:0,Link Closed.

Теперь главный вопрос, который интересует многих радиолюбителей, как с помощью модуля передавать данные на сервер с web-сайтом? Очень просто, с помощью того же GET запроса, который позволяет передать переменную с произвольным значением. Пример запроса:

GET /1.php?a=2016 HTTP/1.1\r\n
Host: site.ru\r\n\r\n

Данный запрос направлен на файл 1.php, где в переменной “a” передается значение 2016. В файле 1.php находится скрипт, который извлекает значение переменной “a”. Код скрипта приведен ниже:

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

При получении запроса скрипт создает файл data.txt в той же папке, где находится, куда записывает дату, время, IP адрес, идентификатор клиента и значение переменной “a”, при повторных запросах, данные добавляются в конец файла на новую строку. В ответ на запрос скрипт выдает сообщение “The request was accepted”. Работоспособность скрипта можно проверить, набрав запрос в адресной строке браузера:

site.ru\1.php?a=2016

Ниже приведен лог запроса из терминальной программы:

В ответе сервера присутствует код со значением 200, означающий успешный запрос, кроме этого сервер может выдавать другие значения:

400 Bad Request — неверный запрос (синтаксическая ошибка).
401 Unauthorized — для доступа требуется авторизация.
403 Forbidden — доступ запрещен.
404 Not Found — сервер не нашёл ресурс по указанному URL.

Еще один способ передачи данных, использовать FTP стандарт. Обычно хостинг предоставляет FTP доступ к корневому каталогу, где расположена папка с сайтом. Для подключения по FTP потребуется имя пользователя и пароль. После установления PPP соединения и выхода в Интернет, необходимо авторизоваться на сервере командой AT+FTPLOGIN, указав IP адрес сервера, номер порта, имя и пароль. Чтобы создать документ data.txt в корневом каталоге и передать в него данные (в конец документа), нужно ввести команду AT+FTPPUT=data.txt,1,2,<size>, где <size> – длина передаваемых данных. После получения приглашения, необходимо ввести данные, для завершения процесса отправить символ <CR>. Если операция прошла успешно, модуль выдаст сообщение +FTPPUT:OK,<size>, лог команд представлен ниже:

Похоже, что не все модули поддерживают GPRS команды, в моем случае модуль ревизии 01.11n и прошивкой 1103_C6C10000_V0111n выдавал ошибки на GPRS команды.

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

  1. Благодарю. большое развернутое исследование. А на какой версии прошивки работало? надеюсь мож пригодиться в пору дешёвого GPRS . Из нескольких модулей мне попадались прошивки 1.11n 1.20t 1.30b 1.30e , искал какую инфу про firmware – ничего, и официалы на емайл ничего не отвечают, и доступа на сайте к Download нет http://www.neoway.com/en/login.aspx.
    p.s. Было б очень круто, если какой простенький примерчик , передачи к примеру c ардуины замеренные напряжения на сайт, чтоб он логи графиками строил.

    1. У меня GPRS команды поддерживались на ревизии 01.20n 01.30c , я Arduino не программирую, чтобы логи строить графиками, на стороне сайта скорее всего нужен php скрипт, а в php я не особо разбираюсь, так что пока подсказать не могу.

      1. как определить координаты по этому gprs

        1. С помощью данного модуля координаты определить не получится, и GPRS здесь не причем. Координаты по мобильной сети можно определить по параметрам основной и соседних сот (станций, вышек). Но в модуле Neoway M590 не предусмотрены команды с помощью которых можно запросить параметры соты.

  2. купил здесь
    К Arduino Uno подключил. M590 работает нормально. Запускаю M590 программно через boot . Скорость меняю на 9600.

    1. Кто знает – есть ли кроме мигающего диода способ узнать, что M590 готов к приему AT команд.
    Может какая-то ножка на M590.
    2. И еще мучает вопрос может ли как-то сбросится сама программно установленная скорость 9600 в процессе работы?

    1. Я проверял готовность модуля к работе по двум параметрам, это отслеживание сообщения MODEM:STARTUP после включения модуля, причем рекомендуется выдержать паузу не менее 2 секунд, после данного сообщения, прежде чем отправлять команды. Кроме этого включение модуля можно отслеживать по напряжению VCCIO на 6-ом выводе модуля, это напряжение питания для линий ввода/вывода модуля, величина напряжения 2,85В. Я подключал вывод VCCIO к какой-либо линии микроконтроллера и отслеживал состояние (0 или 1). Напряжение на VCCIO появляется сразу после включения модуля, здесь тоже необходимо выдержать паузу не менее 2 секунд, перед отправкой команд.

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

      1. Спасибо ! Очень доходчиво.

  3. А можно ли принять пакет по TCP или по IP через putty например?

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

    2. При изучении работы модуля, именно так и делал, с помощью putty + модем подключался к своему серверу. Вот наоборот немного сложнее, если оператор не выдаёт “белые” ІР-адреса, то подключиться к модему, включив прослушивание порта, (из сети другого оператора) не предоставляется возможным. В случае если “белые” IP-выдаются, то подключиться можно с любой точки Земного шарика )

  4. Can you please help me using TCP Transparent Transmission mode? I want to make it compatible with PubSubClient library for MQTT purpose. When I try to enter into the Transparent Transmission mode it automatically quits transparent mode. Can you please help me resolving the issue?

  5. Можете ли вы помочь мне с помощью режима прозрачной передачи TCP? Я хочу, чтобы он был совместим с библиотекой PubSubClient для MQTT цели. Когда я пытаюсь войти в режим передачи Прозрачный он автоматически завершает работу прозрачный режим. Можете ли вы помочь мне решение вопроса?

    1. Какие команды вы используете для входа в режим передачи?

      1. I used +TCPTRANS to enter into Transparent Transmission mode. After sending few binary data it quits automatically. It shows “+TRANSCLOSE: 0,OK” and “Quit Transparent Success!!!”
        Sometimes the module restarts.

        1. Перечитал Даташит на модем NeoWay m590, но не нашёл команды “+TCPTRANS” Возможно Вы используете другой модем. В данном модеме для передачи данных используются команды “AT+TCPSEND” и “AT+UDPSEND” предварительно настроив сокеты командой “AT+TCPSETUP” и “AT+UDPSETUP” для TCP и UDP протоколов соответственно.

            1. Посмотрите внимательно на фотографию в начале фоормуа, на ней отображен модем NeoWay M590/M590E. Ваш модем соответствует фото? Команда «AT+TCPTRANS» поддерживается модемом “M660” в версии прошивки НЕ НИЖЕ v3.1. Если у Вас прошивка ниже, советую обновить её на последнюю.
              Формат команды:
              AT+TCPTRANS=,.
              П. С.
              Но увы, NeoWay M590E не поддерживает данную команду 🙁 по крайней мере до прошивки v “1103_C6C30000_V0130e”

              1. Доброго времени суток!
                Тут так запросто сказали “Если у Вас прошивка ниже, советую обновить её на последнюю.”
                Ни кто б не мог меня ткнуть носом в место, где эту обновленную прошивку взять?
                Как я понял, это будет некий “.LOD” файл, который залить можно используя “RDA download tool”… Во всяком сучае так говорит сам neoway.

              2. как обновить прошивку??

  6. Здравствуйте.
    Как послать POST запрос подскажите пожалуйста.
    Это правильный формат?

    POST /rpc/ HTTP/1.1/r/n
    Host: http://www.имя сервера куда шлю запрос.com/r/n
    User-Agent: curl/7.43.0/r/n
    Accept: */*/r/n
    Content-Length: 64/r/n
    Content-Type: application/x-www-form-urlencoded/r/n
    {Здесь текст запроса 64 символа}/r/n
    /r/n
    /r

    В ответ получаю:
    ..OK….+TCPSEND:0,221..
    ..+TCPCLOSE:0,Link Closed..
    Что я не правильно делаю?

    1. Я POST запросы отправлять не пробовал, но в вашем запросе куда он направлен? /rpc/ – это что такое? по моему запрос должен быть направлен на html страницу, или php файл.

      Еще здесь по моему ошибка:
      Content-Type: application/x-www-form-urlencoded/r/n
      {Здесь текст запроса 64 символа}/r/n
      /r/n
      /r

      должно быть так:
      Content-Type: application/x-www-form-urlencoded/r/n
      /r/n
      {Здесь текст запроса 64 символа}/r/n

      только вот я точно не знаю после текста запроса возможно надо два перевода строки /r/n/r/n

      1. Это запрос к rpc серверу
        Так должно быть?
        Content-Type: application/x-www-form-urlencoded/r/n
        /r/n
        {Здесь текст запроса 64 символа}/r/n
        /r/n
        /r

        1. Я точно не знаю, попробуйте после {Здесь текст запроса 64 символа} отправлять /r/n а также /r/n/r/n, я думаю последнее /r в вашем примере лишнее.

  7. Не подскажете как заставить обсуждаемый модуль работать в качестве модема в Windows не из терминала ,а полноценно из браузера?
    Пробовал установить GPRS драйвер от сименса , но не прокатило , вероятно сильно разные у них команды. Может можно как то подправить .inf файлик обучив его правильным командам ?

    1. Вопрос решился, все оказалось банально просто, дело было не в AT командах , они к счастью оказались стандартными, просто нужен полноценный USB-USART переходник, с обязательным наличием входа CTS который необходимо замкнуть на землю ,чтобы винда видела наличие модема. И все прекрасно работает, средняя скорость получилась ~50 Кбит/c.

  8. Браузер это клиент, правильно? Тогда никак.

    1. Браузер я привел для примера ,чтоб понятна была суть вопроса, сам вопрос в том как установить соединение именно средствами windows, как это делали раньше подключив проводом сотовый телефон в качестве модема. Драйвер модема представлял собой только .inf файл без каких либо внешних исполняемых модулей (USB вариант не рассматривается), значит средства для данного вида связи уже встроены в винду, вопрос в том как настроить это для NEOWAY M590.
      Если это не возможно ,хотелось бы услышать более развернутый ответ ,почему?

  9. Браузер – это принципиальный момент. Средствами windows связь можно установить через VCP например. В любом случае нужно приложение, которое будет управлять модулем. inf файл сам по себе не работает. Если есть интерес, куда Вам написать?

  10. Здравствуйте, подскажите пожалуйста может есть опыт у кого? хочу посредством приложения на Андроиде и фтп сервера, соединить МК через этот модуль. есть какая нибудь информация про андроид, и фтп сервер по подробнее? просто в программировании недавно, но смс, звоню. уже все прекрасно. хотел бы уже и приложение Андроида для устройств написать. но не знаю как задать вопрос, FTP, android, прием, передача информации, обработка данных, кнопка в приложении андроид, изменение текста в файле на ftp сервере с android

  11. ребят а подскажите пожалуйста, можно как нибудь соединиться не по ip а по url с сервером?

    1. Скорее всего так не получится, можно определить ip адрес по url сервера с помощью команды AT+DNS=< доменное имя>, а потом по этому ip соединиться.

      1. трабл в том что не знаю где найти хостинг который по ip может предоставить ftp доступ… только с помощью URL

        1. Странно, по моему любой хостинг должен предоставлять ip адрес ftp сервера, при покупке места на хостинге, они обычно высылают письмо со всеми доступами, где указаны и ip адреса. А вообще по url можно узнать ip адрес, и потом по нему подключаться.

  12. Здравствуйте. Все делаю как описано, у меня это же модуль. Но на сайте ничего не происходит, не создается файл. Получил хостинг на тестовый период, С помощью FileZilla закинул в папку HTTP Ваш скрипт. Если вызываю из браузера, то всё Ок. GET запрос не работает:
    AT+TCPSETUP=0,81.177.24.67,2222
    OK

    +TCPSETUP:0,OK
    AT+TCPSEND=0,59
    >GET /test.php HTTP/1.1
    Host: http://www.neoway-test-ru.1gb.ru

    OK

    +TCPSEND:0,59

    Больше ничего, что не так? Подскажите пожалуйста.

    1. Здравствуйте, то есть как я понял запрос с браузера выполняется, в текстовый файл все прописывается?

      В команде AT+TCPSETUP=0,81.177.24.67,2222 почему порт 2222? порт в http должен быть 80

      В поле Host: не надо прописывать полностью с http, достаточно только домен без http://www.

      Длина запроса в команде (AT+TCPSEND=0,59) неправильно посчитана, также нужно учитывать символ возврата каретки и символ перевода строки, за исключением последнего символа $0D необходимого для ввода команды в терминальной программе.

      Например в примере GET /1.php?a=2016 HTTP/1.1\r\nHost: site.ru\r\n\r\n получается 45 символов (последний символ \r или $0D для ввода запроса в терминал в этом примере не указан)

      1. В браузере набираю neoway-test-ru.1gb.ru/test.php без аргумента (пока не нужен), при этом файл data.txt создается и получаю ответ от Вашего скрипта. Порт 2222 выдал мне поставщик услуг. Если я в настройках FileZilla устанавливаю порт 80, то при попытке соединиться из FileZilla:
        Ошибка: Server unexpectedly closed network connection
        Ошибка: Невозможно подключиться к серверу

        Ставлю свой порт и получаю доступ к своим папкам:
        Статус: Connected to neoway-test-ru.1gb.ru
        Статус: Получение списка каталогов…

        Пробую опять с модема уже на 80-й порт, да и на свой тоже пробую
        AT+TCPSEND=0,55^&0d
        >GET /test.php HTTP/1.1^&0D^&0AHost: neoway-test-ru.1gb.ru^&0D^&0A^&0D^&0A^&0D

        Получаю тот же ОК от модема
        И опять мимо. Про последний 0x0d я из статьи понял и учитываю его, вроде бы правильно считаю количество байт.
        Опыта в этой области нет совсем и хост закроют дня через 3. Да, в моей терминальной ПО последовательность ^& означает что за ней следует hex (как когда то в ДОСовской TERM90/95)
        Если будут мысли, буду благодарен за подсказку.

        1. Возможно какие-то проблемы с тарифным планом, интернет подключен на тарифе? Модуль загружает какую нибудь информацию по GPRS? попробуйте загрузить главную страницу какого-либо сайта, с помощью запроса GET /index.php HTTP/1.1$0D$0AHost: site.ru$0D$0A$0D$0A$0D

          1. Здравствуйте. Все получилось! На самом деле, сменил сим карту и заработало и на МТС и на Теле2. Ту сим карту мне просто дали вместе с модемом (другим). Кстати приставка ” http://” сама приклеивается при отправке сообщения, а вот “www.” я добавлял, теперь нет. С Вашей помощью сдвинулся с мертвой точки. Большое спасибо!!!

  13. Saludos ,Espero que no sea un problema el idioma ,Soy un poco novato en el tema
    Algún ejemplo ayuda para enviar datos al THINSPEARK directamente mediante comandos AT Y un pic
    el tema del pic lo tengo controlado pero la estructura de orden de envío no me aclaro
    un saludo

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

  14. Не могу получить ответ от сервера 193.193.165.166 порт 20332. Если в любом TCP клиенте подсоединиться к этому серверу и набрать команду #P#\r\n то получите ответ #AP#
    У меня модуль NEOWAY M590 подключенный через USB-UART к терминальной программе
    AL Terminal. На все команды реагирует без вопросов. Подключаясь к домашнему IP к программе SocketTest (как сервер) данные по TCP с модуля NEOWAY M590 уходят и он их принимает. С сервером 193.193.165.166:20332 ни как не получается подружить, не приходит ответ, такое ощущение как будто на сервер посылается строка не того формата или кодировки. Менял сим карты побывал Мегафон, МТС, TELE2 результат одинаковый. Посылаю команды в следующим порядке.
    AT+XISP=0
    OK
    AT+CGDCONT=1,”IP”,”internet.tele2.ru”
    OK
    AT+XGAUTH=1,1,””,””
    OK
    AT+XIIC=1
    OK
    AT+XIIC?
    +XIIC: 1, 10.200.245.43
    OK
    AT+TCPSETUP=0,193.193.165.166,20332
    OK
    +TCPSETUP:0,OK
    AT+TCPSEND=0,7
    >#P#\r\n
    OK
    +TCPSEND:0,7

    Ответа от сервера нет, закрываю соединение
    AT+TCPCLOSE=0
    +TCPCLOSE:0,OK

    Подскажите, что не так с этим сервером, очень важно получить с ним связь. Попробуйте кто нибудь связаться с ним с помощь такого модуля и послать ему запрос вида #P#\r\n и получить от него ответ #AP#.

    1. Здравствуйте, у меня были проблемы при отправке символа # в терминальной программе, модуль не понимал команду (команда проверки баланса *100#), как оказалось терминальная программа неправильно интерпретирует символ # введенный с клавиатуры, вместо него я прописываю в программе $23 (код ASCII символа #), после этого модуль начал понимать команду, может у вас такая же проблема?

      1. Нет с # этим символом все в порядке, баланс тоже проходит, #P#\r\n такую команду если прислать на мой сервер то все приходит. Речь идет о сервере 193.193.165.166 он не принимает команду или не отвечает я не пойму, но он мне нужен для создания трекера, это сервер ORANGE GPS. Если есть возможность попробуйте со своего модуля послать ему эту команду и получить ответ.

  15. Hi

    I have project with m590.
    I know there is a limitation AT+TCPSEND (1024)

    For posting long data to HTTP server on web which method i have to use.
    ???
    ? call AT+TCPSEND multiple times ? TOTAL LENGHT / 1024 times.

    Best ragards
    Sorry i can write in english

  16. Зачем ставить часы если можно получать время с модуля GPS. Проснулся-считал время и данне. Если надо отправить–разбудил модем и отправил.

  17. Уважаемый автор! В ваших записях в кодах есть ошибки с командами, а если быть точнее возьмём, к примеру, команду AT+CGDCONT=1,“IP”,“internet.mts.ru” . Как мы видим тут стоят косые кавычки “ ” , а должны стоять прямые ” ” . Я потратил кучу времени,чтобы разобраться с модемом и наконец-то понял, что модем не работал из-за них! Большое спасибо!

    1. Проблема в кодировке текста Вашего браузера.

  18. Привет всем, у нас была проблема с GPRS-связью на NEOVAY M590 и была найдена хорошая ссылка со статьей, в которой очень хорошо описывается, как реализовать запрос GET: http://geekmatic.in.ua/http_zapros_m590_module. С помощью этой модификации приложение POST также работает:

    //http://geekmatic.in.ua/http_zapros_m590_module

    #include
    SoftwareSerial mySerial(6, 5); // RX, TX номера пинов Arduino UNO для подключения к модулю GSM NEOWAY M590
    int buttonState = 0;
    int lastButtonState = 0;
    int knopka = 2; //номер пина для подключения кнопки, которая должна замыкать этот пин на ноль питания
    int bootGSM = 3; // номер пина для включения модуля GSM

    const int analogInPin = A0;

    void setup() {
    mySerial.begin(9600);
    Serial.begin(115200);
    pinMode(knopka, INPUT_PULLUP); //инициализация дискретного входа для кнопки и внутренняя подтяжка его на плюс питания
    pinMode(bootGSM, OUTPUT); //выходной пин для включения/выключения GSM модуля

    digitalWrite(bootGSM, HIGH); //высокий уровень на вход BOOT модуля GSM для его выключения
    Serial.println(“GSM init”);
    }
    void loop() {

    buttonState = digitalRead(knopka); //состояние кнопки в данный момент

    if (buttonState “, “”, 5);
    sendAtCmd(GET + 0x0d, “+TCPRECV”, “”, 10);
    sendAtCmd(“AT+TCPCLOSE=1”, “OK”, “Error”, 1);
    Serial.println(GET);

    //POST
    sensorValue = analogRead(analogInPin);
    String post_msg = “state=GSM” + String(analogInPin) + “&data=” + sensorValue;
    String POST = “POST /file/write.php HTTP/1.1\r\nHost: GSM.com\r\nContent-type: application/x-www-form-urlencoded\r\nContent-length: ” + String(post_msg.length()) + “\r\nConnection: Close\r\n\r\n”+post_msg;
    //q = “POST http://192.168.0.244/file/write.php HTTP/1.1\r\nHost: GSM.com\r\nContent-type: application/x-www-form-urlencoded\r\nContent-length: 20\r\nConnection: Close\r\n\r\nstate=GSMGSM&data=12″;
    sendAtCmd(“AT+TCPSETUP=1,94.26.55.177,80”, “OK”, “Error”, 5);
    sendAtCmd(“AT+TCPSEND=1,” + String(POST.length(), DEC), “>”, “”, 5);
    sendAtCmd(POST + 0x0d, “+TCPRECV”, “”, 10);
    //sendAtCmd(q + 0x0d, “+TCPRECV”, “”, 10); //отправка запроса и ожидание ответа от сервера
    Serial.println(POST);

    sendAtCmd(“AT+TCPCLOSE=1”, “OK”, “Error”, 1); //закрываем TCP соединение номер 1

    digitalWrite(bootGSM, LOW); //выключить GSM модуль
    delay(500);
    digitalWrite(bootGSM, HIGH);
    }
    lastButtonState = buttonState;
    delay(50);
    }
    //функция отправки AT-команды в модем и диагностика ответа
    bool sendAtCmd(String at_send, String ok_answer, String err_answer, uint32_t wait_sec) {
    Serial.print(“sendAtCmd(“);
    Serial.print(at_send);
    Serial.println(“)”);
    uint32_t exit_ms = millis() + wait_sec * 1000;
    String answer;
    ok_answer.toUpperCase();
    err_answer.toUpperCase();
    if (at_send != “”) {
    mySerial.println(at_send);
    }
    answer = “”;
    while (millis() -1)) {
    Serial.println(“AT_ERR”);
    return false;
    }
    else if (answer.indexOf(ok_answer) > -1) {
    Serial.println(“AT_OK”);
    return true;
    }
    }
    Serial.println(“AT_TIMEOUT”);
    return false;
    }

  19. Где можно найти прошивку?
    На оф. сайте нету, нашел только инструкцию по обновлению.

    1. не обязательно самую новую, хотя бы 1.20

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

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