Андрей Смирнов
Время чтения: ~22 мин.
Просмотров: 21

Отправка СМС через Arduino и GSM модуль NEOWAY M590 — 2150692.ru

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

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

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

neoway_m590_shema.jpg Модуль питается напряжением 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-NEOWAY-M590_UART_PC.jpg Теперь рассмотрим структуру стандарта связи, инструкции и особенности приема/передачи данных. GSM модули управляются специальными AT командами, которые изложены в нескольких стандартах, таких как GSM 03.40, GSM 07.07 и т.д.

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

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

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

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

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

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

<cr><lf>+IPR: 9600<cr><lf><cr><lf>OK<cr><lf></cr></lf></cr></lf></cr></lf></cr>

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

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

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

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

Описание Команда настройки режима “эха”
Формат
Параметр <n>: 0 – выключить; 1 – включить</n>
Ответ OK
Пример
Описание Команда проверки модели и версии модуля
Формат ati
Пример
Описание Команда чтения версии прошивки модуля
Формат at+getvers
Ответ
Пример Версия прошивки
Описание Команда сохранения текущей конфигурации настроек в EEPROM память
Формат AT&W<значение>
Параметр
Ответ OK
Пример
Описание Команда настройки скорости порта UART
Формат AT+IPR=<скорость предачи>
Параметр <скорость предачи>: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 бит/сек
Ответ OK или ERROR
Пример
Запрос параметра
Описание Команда проверки статуса модуля
Формат AT+CPAS
Параметр
Ответ
Пример
Описание Команда проверки регистрации модуля в сети
Формат
Параметр <mode>: 0 – выключить уведомление о регистрации в сети 1 –  включить уведомление о регистрации в сети +CREG: <stat> 2 – включить уведомление о регистрации в сети и информацию о местоположении<   stat>: 0 – не зарегистрирован, поиск сети не выполняется 1 – зарегистрирован в домашней сети 2 – регистрация отклонена 3 – не зарегистрирован, выполняется поиск сети 4 – неизвестно 5 – зарегистрирован, зона роуминга</stat></mode>
Ответ OK или ERROR

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

Пример Включить уведомление о регистрации в сети
Запрос параметров
Описание Команда настройки спящего режима
Формат
Параметр
Ответ OK или ERROR
Пример
Примечание Значение параметра <n> не сохраняется после выключения модуля.</n>
Описание Команда выключения модуля
Формат AT+CPWROFF
Ответ OK или ERROR
Пример
Примечание Не следует одновременно подавать команду и оперировать выводом ON/OFF модуля.

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

Описание Команда настройки автоматического определения номера (АОН)
Формат
Параметр
Ответ OK
Пример
Сообщение от модуля RING Входящий звонок (АОН отключен)
Примечание Сообщение RING повторяется после каждого гудка
Описание Исходящий вызов для установления голосового соединения
Формат ATD+79XXXXXXXXX;
Параметр 79XXXXXXXXX – номер вызываемого телефона
Ответ OK
Пример
Сообщение от модуля
Описание Команда разъединения соединений (повесить трубку)
Формат
Параметр
Ответ OK
Пример

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

Описание Команда настройки формата SMS сообщений
Формат AT+CMGF=<режим>
Параметр <режим>: 0 – PDU формат; 1 – текстовый формат
Ответ OK или ERROR
Пример
Примечание
Описание Команда выбора кодировки текста
Формат
Параметр
Ответ OK или ERROR
Пример
Описание Команда чтения SMS сообщения
Формат
Параметр

: номер считываемого сообщения

Ответ Для текстового формата (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 формате</pdu></length></data></scts></alpha></stat></pdu></lf></cr></scts></length></alpha></stat></data></lf></cr></scts></alpha></oa></stat>
Пример
Описание Команда отправки SMS сообщения
Формат Для текстового формата (CMGF=1): AT+CMGS=<da><cr><text><ctrl>   Для PDU формата (CMGF=0): AT+CMGS=<length><cr><pdu><ctrl></pdu></cr></length></ctrl></text></cr></da>
Параметр <da> – номер на который посылается сообщение (в ASCII символах)<text> – текст сообщения в ASCII символах<length> – количество байт сообщения в PDU формате<pdu> – информация о SMS и текст сообщения в PDU формате</pdu></length></text></da>
Ответ +CMGS: <mr> OK (или ERROR)  <mr> – условный номер, присваиваемый модулем</mr></mr>
Пример AT+CMGS=“+79123456789”<cr> > Perezvoni mne<ctrl> +CMGS: 2   OK</ctrl></cr>
AT+CMGS=27<cr> > 07919740030900F001000B919721436587F900080E 041F044004380432043504420021<ctrl> > +CMGS: 2   OK</ctrl></cr>
AT+CMGS=22<cr> > 07919740030900F001000B919721436587F900000A 47E8B435A506A55419<ctrl> > +CMGS: 2   OK</ctrl></cr>
Примечание
Описание Команда удаления SMS сообщений
Формат AT+CMGD=

,<delflag>

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

Структура принятого 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
6 UDHI
5 SRR
4,3 VPF
2 RD
1,0 MTI

Для успешной отправки сообщения, поле 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 формате:

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

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

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

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

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

  • Цена: $3.58

Дешевые GSM/GPRS модули подробно изучены энтузиастами, в том числе на mysku.ru. Создано немало сигнализаций, систем телеметрии и даже интеллектуальный почтовый ящик. Но во всех обзорах, которые я видел, использовался канальный режим передачи данных — либо телефонный звонок либо SMS. Я расскажу о своем опыте пакетной передачи данных, причем через протокол UDP в условиях жестких ограничений на трафик. Все началось, когда товарищ установил себе в машину недорого купленный по случаю догреватель Webasto Thermo Top C, попутно доукомплектовав его циркуляционным насосом. Протокол обмена идентифицировать не удалось, равно как и модель автомобиля, на котором он был изначально установлен. Но было экспериментально установлено, что при замыкании одного из пинов на +12 вольт питания отопитель оживал и начинал работать. Сразу возник вопрос — как им управлять? Первой идеей, лежащей на поверхности, было приспособить 433 МГц радиобрелок, наподобие такого: Что и было сделано. Практически сразу же обнаружились недостатки данного варианта: 1. Отсутствие шифрование радиообмена и отсутствие уникального идентификатора брелка. Конечно, вряд-ли кто-то специально будет слушать эфир, чтоб склонировать запрос на включение отопителя. Но в условиях города если кто-то рядом точно таким брелком будет включать дома торшер, включится и ваш отопитель, что однажды и произошло. 2. Циркуляционный насос питается от того же реле, что и запуск отопителя. Останавливается насос соответственно тоже в момент команды на остановку отопителя, а хотелось бы, чтоб он поработал еще несколько минут. 3. Недостаток, не связанный напрямую со способом управления отопителем, но требующий решения: отопитель высаживает основной аккумулятор. Увидеть, что двигатель теплый, но стартер уже не способен его провернуть — удовольствие ниже среднего. 4. И наконец, полное отсутствие какой-либо обратной связи. Если автомобиль запаркован в прямой видимости из окна квартиры, факт прохождения команды на включение еще можно отследить по появившемуся пару из выхлопной трубы отопителя. Но часто автомобиль остается на стоянке вне зоны видимости, и нет никакой уверенности, что мы придем именно к теплому автомобилю. Команда на включение может утонуть в городских помехах. Команда может дойти, но отопитель не включится из-за проблем в топливной системе или из-за низкого напряжения аккумулятора. По итогам первого сезона эксплуатации началось обдумывание вариантов включения отопителя с возможностью обратной связи. Проводились научно-исследовательские и опытно-конструкторские работы с радиомодулями SX1278, результаты были многообещающие, но с моими технологическими возможностями габариты абонентского терминала приемлемыми никак не получались. Таскать на ключах набалдашник размером с Нокию 3310 исключительно ради управления вебастой? Было решено, что оно того не стоит. Следующей идеей было использование мобильной сети для управления по интернету. Именно она и была реализована. Терминал для управления получался еще большего размера, но он все равно у каждого с собой — это смартфон. В минусы варианта можно записать наличие некоторой пусть небольшой, но абонплаты, в плюсы — расстояние, ограниченное только покрытием мобильной сети и возможность управлять из нескольких мест с нескольких устройств. Было сформулировано техническое задание: — отопитель и контроллер будут питаться от отдельной аккумуляторной батареи, благо у VW T4 для этого есть место под водительским сиденьем; — контроллер измеряет три параметра в автомобиле: температуру теплоносителя и напряжение двух аккумуляторов; — контроллер устанавливает с сервером соединение по UDP и раз в 10 секунд передает на сервер три измеренных параметра; — сервер возвращает подтверждение приема, в нем же передается состояние реле отопителя; — поскольку напряжения обеих батарей известны, бесплатным бонусом можно организовать развязку аккумуляторов: как только напряжение на основной батарее падает ниже установленного предела, реле физически разъединяет батареи; — для управления основными исполнительными механизмами требуются 3 реле: включение отопителя, включение циркуляционного насоса охлаждающей жидкости, включение аккумуляторов в параллель; — четвертую свободную релюшку на плате задействуем под физическое выключение-включение питания модема, предполагая, что в плане перезагрузки это надежнее, чем дергание специального пина; — понадобится интернет-сервер с минимум двумя «белыми» портами: для связи с контроллером и для веб-интерфейса пользователя. Список компонентов: 1. Arduino Pro Mini — 1 шт. 2. Плата реле 4-канальная — 1 шт. 3. Датчик DS18B20 — 1 шт. 4. Модем M590 — 1 шт. 5. Корпус, провода, изолента, припой, клеммы, USB-UART для программирования Arduino. Поскольку были нарекания, что схемы, нарисованные во Fritzing, представляют из себя нагромождение проводов и сложны для восприятия, я разделил схему на две части — сигнальную и питающую. Схему подключения к реле исполнительных механизмов приводить не буду, так как реализация зависит от типа применяемых устройств. Достаточно знать, что реле №1 управляет отопителем, реле №2 — циркуляционным насосом, реле №3 — зарядкой дополнительного аккумулятора, реле №4 — перегружает модем. Сигнальная часть: Резистивные делители для измерения напряжений аккумуляторов подбираются из расчета, чтобы максимально возможное напряжение аккумулятора (ну скажем, 15 вольт) после деления не превышало 1.1 вольта — опорное напряжение внутреннего источника микроконтроллера. Я использовал 1.1 кОм в нижнем плече и 15 кОм в верхнем. Коэффициент для каждой конкретной пары резисторов нужно вписать в скетч перед его загрузкой (для правильной работы алгоритма развязки аккумуляторов) и в php-скрипт интерфейса пользователя (для правильного отображения напряжения батарей). Размещать делители нужно по возможности поближе к ардуине, иначе длинные провода собирают помехи, и показания, и без того не сильно точные, начинают «прыгать». Питание: Контроллер собран в корпусе от коммутатора D-Link и помещен под водительское сиденье рядом с дополнительным аккумулятором. Температурный датчик протянут в моторный отсек и прикручен синей изолентой к патрубку возврата охлаждающей жидкости к отопителю. Фото, сделанное в процессе монтажа:Скетч для Arduino Скорость обмена модема установлена на 2400 bps, используется программный UART (библиотека SoftSerial). Скетч инициализирует модем, устанавливает соединение с сервером, затем каждые 10 секунд считывает температуру охлаждающей жидкости и напряжения аккумуляторов, после чего передает их на сервер. Получив ответ от сервера единственный символ ответа, анализирует его. Если этот символ — единица, то включает отопитель и циркуляционный насос. Если этот символ — ноль, то выключает отопитель, через 5 минут выключает циркуляционный насос. Если в течение 2 минут не получено ни одного ответа от сервера, считает, что модем повис и дергает его питание. Если на протяжении 5 секунд напряжение основной батареи более 13,2 вольта, замыкает вместе основную и дополнительную батарею. Если на протяжении 5 секунд напряжение объединенной батареи менее 12,8 вольта, разъединяет батареи.Исходный код UDP-сервера Серверная часть для обработки UDP-подключения написана на языке C и работает на VPS под управлением Debian. Обязанность сервера — получив пакет, выделить из него фрагменты, соответствующие переданной температуре, напряжениям и состояниям реле, и разложить их по соответствующим файлам. Затем взять из файла состояние отопителя и передать его контроллеру в виде одного символа.Исходный код интерфейса пользователя Интерфейс пользователя написан на языке PHP и располагается в домашнем каталоге веб-сервера. Цель скрипта — вытащить из файлов «сырые» значения температуры, напряжений и состояний, привести их к «человекочитаемому» виду и отобразить. При нажатии на кнопку запуска отопителя положить единичку в файл состояния отопителя. При нажатии на кнопку остановки отопителя положить нолик в файл состояния отопителя. Получилось конечно брутальненько: Но я не хипстер, всяческим цветным кнопкам и прочим AJAXам не обучен. В таком виде устройство эксплуатируется уже около месяца. Никаких фатальных недостатков за это время не обнаружено. Включает-выключает, температуру-напряжения показывает. Обнаружился полезный побочный эффект — с утра на холодной машине можно узнать фактическую температуру за окном прямо со смартфона, не подходя к оконному термометру. Немного о расходе трафика. Каждые 10 секунд передается запрос и принимается ответ. В запросе 28 байт заголовок и 7 байт полезной нагрузки. В ответе 28 байт заголовок и 2 байта полезной нагрузки. Итого 65 байт каждые 10 секунд. 390 байт в минуту, 561 600 байт в сутки, 17 409 600 байт за 31 день. Расчеты практически совпадают с данными оператора: На момент написания статьи за неполные 13 дней месяца было израсходовано 5.5 мегабайт из включенных в абонплату 50 (тариф «Легко сказать» МТС Беларусь) при теоретически возможных 7 Мб. Разницу списываю на нахождение автомобиля вне зоны покрытия сотовой связи. Возможные доработки и улучшения. Без особых трудозатрат контроллер можно дополнить GPS-модулем для слежения за перемещением. Можно использовать дополнительные реле для управления автомобильным оборудованием — мигать поворотниками, включать вентилятор печки и т.п. — у кого какие потребности и фантазия. Для еще большей экономии трафика можно попытаться реализовать механизм KeepAlive — слать пакеты раз в несколько минут только для контроля состояния соединения. Наконец, можно вскрыть родной протокол управления отопителем и снимать данные температуры по K-Line/CAN прямо со встроенного датчика, избавившись от костыля в виде внешнего DS18B20.

M590_13_thumb.jpg Пошаговая инструкция по сборке, настройке и работе с модемомNEOWAYM590.

На днях получил посылку с комплектом деталей для сборки GSM/GPRS модемаNEOWAYM590. Сейчас работаю над одним проектом для друга, где этот модем и будет использоваться.

Документация по модему:

Neoway_M590_Hardware_Design_Manual_V1.1.pdf (999,7 KiB, 951 hits)

Не буду тянуть “кота за хвост” и сразу приступим к описанию сборки.

Сборка модема NEOWAY M590

Комплект для сборки модемаNEOWAYM590 выглядит так:

M590_01.jpg

Китайцы молодцы – вложили все необходимое и ничего не забыли. Приступим…

Для начала необходимо запаять на плату SMD компоненты.

M590_03.jpg

С одной стороны платы впаиваем диод и резистор как показано на фото. Не забываем, что диод надо установить анодом к контакту +5V.

M590_05.jpg

Переворачиваем плату и устанавливаем на нее еще один резистор и светодиод. Про полярность светодиода не забываем.

M590_06.jpg

Теперь нам необходимо установить сам модуль M590. На модуле и на плате нарисованы кружки. При установке модуля на плату они должны совпасть.

M590_08.jpg

Далее устанавливаем держатель для SIM карты.

Осталось впаять два контакта для питания, 6 для обмена данными и подключить антенну.

M590_12.jpg

Если сейчас установить SIM карту и подать питание, то модем не включится.

M590_13-1.jpg

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

M590_14.jpg

Подключение модема NEOWAY M590 к компьютеру

Для подключения модема к компьютеру я буду использовать USB2TTL переходник в котором помимо RX и TX есть еще и питание 5 вольт.

M590_17.jpg

  • Вывод T модема NEOWAY M590 подключаем к выводу RXD переходника
  • Вывод R модема NEOWAY M590 подключаем к выводу TXD переходника
  • Вывод GND модема NEOWAY M590 подключаем к выводу GND переходника
  • Вывод +5V модема NEOWAY M590 подключаем к выводу +5V переходника
  • Выводы G и K модема NEOWAY M590 необходимо закоротить перемычкой
  • Вставить SIM карту без PIN кода

M590_18.jpg

После подключения USB2TTL переходника к USB порту на модемеNEOWAYM590 должен заморгать светодиод.

M590_19.jpg

Проверка модема NEOWAY M590

Для начала, нам необходимо посмотреть номер COM порта переходника. Это можно сделать в диспетчере устройств.

В моем случае это будет COM1.

Проверять работу модемаNEOWAYM590 я буду через программу Putty.

Запускаем Putty и выставляем настройки как указано на картинке.

После этого жмем внизу программы на кнопку Open

В открывшемся окне вводим команду AT и жмем Enter.

Если вы не получили ответ OK, то попробуйте изменить в настройках Putty значение Speed на 19200.

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

AT+GETVERS — узнать версию прошивки модуля.

Результат:

1103_C6C30000_V0120t

OK

ATI – выводит модель и версию модуля.

Результат:

OK

AT+CSQ – определяет уровень сигнала мобильной сети:

Результат:

+CSQ: 20,1

OK

ATD[номер телефона} – звонок на указанный номер.

Пример: ATD1234567

Описание AT команд модемаNEOWAY M590:

Neoway_M590_AT_Command_Sets_V3.0.pdf (926,4 KiB, 1 336 hits)

На этом все. Буду пока разбираться с работой по GPRS с этим модемом через Arduino.

Neoway M590 на Aliexpress.

Используемые источники:

  • https://radiolaba.ru/microcotrollers/gsm-modul-neoway-m590-opisanie-i-komandyi-upravleniya.html
  • https://mysku.ru/blog/aliexpress/68810.html
  • https://geekelectronics.org/elektronika/modem-neoway-m590-ndash-sborka-nastroyka-i-rabota-cherez-arduino.html

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации