Не работает gprs модуль

Побеждаем GPRS модуль от Амперки


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

Для одного из заказных проектов мне понадобилось добавить возможность управления и получения телеметрии по GSM при помощи SMS. Посмотрел я на список доступных вариантов и остановился на GPRS Shield от Амперки. Почему нет? Прилично выглядит, выпускается известной компанией, имеет техподдержку, по цене не особо отличается от конкурентов и вообще производит очень приятное впечатление.

Но не тут-то было. О том квесте и невероятных курсах повышения квалификации которые мне пришлось пройти, интегрируя этот GPRS модуль с Arduino Mega Server вы можете узнать, нажав на кнопочку ниже.

Сам модуль

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

Забегая вперёд, скажу, что техподдержка исправно отвечала на мои вопросы в течение двух недель, искала баги в своей библиотеке и даже выпустила её новую версию по мотивам общения со мной. Но… заставлять работать модуль мне пришлось всё-таки самостоятельно.

Проект

Пара слов о проекте «GSM курятник» для которого потребовался GPRS модуль. Понадобилось разработать автоматизацию для управления курятником. Воистину в удивительное время мы живём, нынче курятнику требуется управление через веб-браузер, беспроводные Smart-сенсоры и телеметрия по GSM. Прямо стратегический объект какой-то, а не курятник.

Но раз надо — значит надо. Покупаем комплектующие, среди которых GPRS модуль и приступаем.

Ахиллесова пята

Теперь об особенностях работы модуля. В принципе, он работает. Он работает с примерами, представленными на сайте производителя и на его основе можно даже создать какой-нибудь несложный скетч. Но есть три «но».

Примечание. В проекте использовались две платы: Arduino Mega 2560 и Arduino Due и всё нижеизложенное относится именно к ним и только к ним.

Первое «но», хардверное. Модуль не работает с Arduino Due. Никак. Не помогла даже многодневная переписка с техподдержкой Амперки. Заставить работать GPRS Shield с Arduino Due не удалось ни мне, ни специалистам компании. И это очень обидно потому, что Due это отличный контроллер с большими возможностями и очень хотелось бы иметь возможность использовать его с GPRS Shield.

Второе «но», системное. Для работы модулю требуется библиотека SoftwareSerial. Когда я начинал своё общение с GPRS Shield и техподдержкой Амперки это было безальтернативным решением. После наших разбирательств была выпущена исправленная версия библиотеки с поддержкой работы по железному Serial, но… он так и не заработал ни на Due, ни на Mega. Что вообще труднообъяснимо — если модуль работает по SoftSerial, то что ему мешает работать по железному Serial?

Третье «но», концептуальное. Это ещё не всё. главная засада заключается в принципе работы библиотеки модуля. Она работает в закрытом режиме, то есть блокирует работу контроллера на время ожидания прихода SMS (а это 99 % времени) и во время всех прочих операций модуля. Что это значит? Это значит, что на стандартной библиотеке от производителя вы не сможете построить ничего, кроме тестового скетча. Стратегический курятник вам не светит, как не светят ещё тысячи классных приложений вроде охранных систем, управления теплицами, управления умным домом по GSM и т. д. и т. п.

Подробнее о SoftwareSerial

На Arduino Due модуль не работает, поэтому будем говорить об Arduino Mega. Пикантность ситуации заключается в том, что имея на Mega три свободных хардверных порта Serial1, Serial2 и Seria3, мы вынуждены подключать и использовать библиотеку SoftwareSerial. Никакими мыслимыми и немыслимыми способами, включая перестановку джамперов на модуле и допрос с пристрастием техподдержки Амперки, не удалось заставить работать GPRS Shield с хардверными портами на Arduino Mega.

Ладно… Используем SoftwareSerial, но и тут нас ожидает засада. SoftwareSerial может работать на многих пинах Arduino Mega, но с модулем работает почему-то только на 62-м и 63-м пинах. Почему только на них? Загадка сия велика есть. Ответа на этот вопрос мы, судя по всему, не узнаем никогда.

Муки выбора

И вот, как обычно, мы приходим к пониманию, что стандартная библиотека непригодна для практического использования. Блокируя контроллер на время посылки о ожидания ответа GPRS модуля, библиотека блокирует и все остальные процессы. Контроллер просто выпадает из реальности на 99 % времени, ожидая пока придёт запрос или ответ или не закончится таймаут.

Читайте также:  Как настроить мышку defender shock gm 110l

Это ставит крест на любом применении GPRS Shield, кроме тестового: послал запрос включить розетку — она включилась, послал запрос выключить — она выключилась. Ни о какой работе веб-сервера, работе с датчиками, управлении актуаторами и прочем не может быть и речи, ничего из этого просто не будет работать.

Вопрос встал ребром — либо мы отказываемся от библиотеки производителя и пишем свой код управления GPRS Shield (легко сказать), либо отказываемся от самого модуля и ищем альтернативное решение. Но модуль то уже есть, поэтому было решено отказаться от библиотеки и написать свой код управления модулем.

Покорение Эвереста

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

Для вас же всё будет просто — немного магии и готовый рабочий код модуля AMS для поддержки GPRS Shield готов.

Модуль разрабатывался и тестировался на AMS версии 0.16 для Arduino Mega. Тестирование показало абсолютно стабильную и надёжную работу GPRS Shield под управлением этого модуля.

Подключение к AMS модуля поддержки GPRS Shield

Для того, чтобы подключить модуль GPRS Shield к Arduino Mega Server, нужно произвести несколько несложных действий. Сначала нужно добавить в главный файл AMS следующие строки

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

Пояснения по поддерживаемым функциям

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

Запросы

Запросы посылаются посредством SMS, система присылает ответы (тоже по SMS), содержащие информацию о запрашиваемом параметре. Очень просто: посылаем с телефона запрос «temp1», система в ответ присылает текущее значение температуры temp1=20.50 .

temp1 — запрос температуры
cont1 — запрос состояния контакта
leak1 — запрос состояния датчика протечки
smoke1 — запрос состояния датчика задымления
relay1 — запрос состояния реле (ключа)
servo1 — запрос состояния сервопривода кормушки
period — запрос периода автоматических посылок телеметрии
all — запрос всех параметров системы

В ответ на запрос «all» система присылает список всех параметров. В случае посылки незарегистрированной команды, система пришлёт ответ «Error». Если контролируемые параметры выходят за пределы нормы, система может сама прислать тревожные сообщения на смартфон оператора.

Для того, чтобы управлять системой мог только зарегистрированный оператор, в системе есть защита от несанкционированного доступа — она реагирует только на команды с определённого номера (номеров) телефона.

Команды

Команды посылаются посредством SMS, приняв команду, система меняет своё состояние и присылает ответы с информацией о новом состоянии своих актуаторов или настроек.

relay1= — команда управления реле (ключом)
servo1= — команда управления сервоприводом кормушки
period= — команда изменения периода автопосылки телеметрии

Пример. Команда relay1=1 , ответ relay1=ON . Команда relay1=0 , ответ relay1=OFF .

Пояснения по работе кода

Инициализация модуля GPRS. Стандартная инициализация модуля AMS, запуск SoftwareSerial, и немного магии GSM AT команд. Цель этого блока — привести в чувство модуль GPRS и вернуть его из нирваны, если он к этому моменту в неё ушёл по каким-то независящим от нас причинам.

Главная рабочая функция модуля. Каждые 20 секунд Arduino Mega Server проверяет наличие пришедших SMS и, в случае прихода каких-либо запросов или команд, выполняет их. В результате средняя задержка выполнения команды составляет 10 секунд (без учёта задержки передачи SMS оператором связи). Этот интервал можно настраивать, 20 секунд выбраны как компромисс между скоростью реакции на SMS команды и загрузкой системы.

Эти 20 секунд AMS может делать всё, что ему нужно, а приходящее в этот промежуток времени SMS не теряется. При использовании стандартной библиотеки система ничего не может делать кроме ожидания прихода SMS, иначе она их просто теряет (и контроллер в это время тоже ничего не может делать).

Тут же присутствует код посылки телеметрии с заданным интервалом в 1 час, 6 часов, 12 часов или 24 часа. Этот интервал можно изменить путём посылки по SMS соответствующей команды.

Взаимодействие GPRS модуля и контроллера производится при помощи специальных AT команд и нижеследующие функции формируют команды GPRS модулю в понятных для него кодах.

Функция посылки SMS. В параметрах функции передаётся телефонный номер назначения и сама команда или запрос в текстовом виде.

Функция чтения SMS. Принятые значения помещаются в переменные message, phone и datetime, которые содержат, соответственно, пришедшую команду, номер телефона и время посылки.

Функция формирования ответа на SMS запросы и команды. Эта функция специфична для каждого проекта и вы в своих проектах можете изменить её в соответствии с логикой работы вашей системы.

Читайте также:  Кота не трогать он здесь работает

Функции формирования ответов. Это функции которые формируют ответы, которые система посылает по SMS на смартфон пользователя в ответ на запрос или по своему усмотрению, в соответствии с заложенной программой.

И функции выполнения команд. Это функции, которые выполняют пришедшие по SMS команды и меняют состояние системы, т. е. изменяют её настройки или включают или отключают актуаторы.

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

Ещё немного о SoftwareSerial

Всего вышеприведённого недостаточно, чтобы GPRS Shield заработал в прозрачном режиме и перестал блокировать остальные процессы, работающие на микроконтроллере. Нужно ещё модифицировать код библиотеки SoftwareSerial. Дело в том, что её стандартного буфера в 64 байта недостаточно для переваривания большинства AT GSM команд и поддержания динамического взаимодействия между модулем и контроллером.

Нужно увеличить этот буфер как минимум до 128 байт и только после этого магия заработает и GPRS Shield начнёт нормально работать в прозрачном режиме. Делается это в файле SoftwareSerial.h . Строку

нужно поменять на

Заключение

Вы видите обмен командами оператора и ответы системы на экране смартфона. И при этом система выполняет ещё десятки процессов в псевдо-многозадачном режиме. А GPRS Shield стал занимать менее 1 % процессорного времени, вместо 99 % как раньше, освободив остальное время для веб-сервера и прочих задач по управлению курятником.

Источник

A96 не работает GPRS

Куплен авто в автосалоне 1.06.2017, установлена A96 c GSM и GPS, сим карта из комплекта — Мегафон.

Баланс пополнен много раз!

Автомобиль управляется по средствам звонков и смс(охрана, автозапуск)

А вот связи с приложением и сайтом starline-online.ru нет!

1) На сайте пишет — нет связи с 1.06.2017, 19:32

2) Детализация сим карты показывает, что обмен пакетами интернета был последний раз —

01.06.17 19:08:45 INTERNET 0.042 Мб. Услуги связи за пределами домашнего региона, Интернет Центральный филиал ПАО «МегаФон» 0.04

из чего следует, что в целом у сим карты был интернет и она рабочая.

После этого времени сим карты ни разу не выходила в интернет судя по детализации!

3) Как раз где-то в районе 19.00-19.30 1.06 — установщик показывать, как сигналку настроить в приложении и был совершен первый звонок на сигналку и получен gsm пароль:

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

— потом перестало писаться, что связь есть.

Из выше сказанного можно сделать выводы:

1. Симкарта рабочая и в интернет она выходила ранее

2. Что-то произошло в период с 19.08 до 19.32 (был первый звонок и получение gsm пароля и первая попытка авторизоваться в приложении)

— ответы приходят, все как бы работает

5) Пробовали прописывать,

а) apn internet, ответ:

Настройки GPRS.
GPRS вкл.
GPRS в роуминге откл.
APN: internet
Логин: нет данных
Пароль: нет данных

б) прописывали разные сервера:

Но при запросе пароля 00581: ответа нет никогда, пробовали после каждого изменения

в) Инфо о качестве сигнала:

Качество GSM-сигнала: удовл. (12)
Баланс: 45.52 (08:16 03.06.2017)
Связь с сервером: нет (08:09 03.06.2017)

г) Инфо о системе:

Качество GSM-сигнала: хор. (17)
Напряжение АКБ: 12.73В
Серийный номер: A96 S702 00****
Версия оборудования: 0.65.0
Версия ПО: 2.2.0
Версия загрузчика: 2.2.0
Версия CAN-ovl: 4.3.0.11012
Версия CAN-lib: 4.3.0.11012
Модем: GE866-QUAD
Версия ПО модема: 16.01.202
IMEI модема: 356306054******

Для устройств 5го поколения ее можно было обновлять по воздуху — http://www.ultrastar.ru/337/31420

Однако для A96 не знает команду 00591.

Как обновить a96 по воздуху?

6) Что будет, есть отправить команду — 009902

После этого придется добираться до Валета?

Все равно при заново подключаться к основному модулю, т.е. разбирать консоль?

Что еще можно попробовать?

Установшик будет только через 3 дня, да и не хочется заново разбирать консоль у авто, так как все показывает на то что gprs работал ранее, а gsm управление по телефону и sms работает, т.е. все установлено нормально!

Ответы 13

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

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

Обновление «по воздуху» ПО вашей системы доступно только для авторизованных установщиков. Вы же можете обновить ПО только с помощью программы СтарЛайн Мастер.

Что будет, есть отправить команду — 009902

Произойдёт сброс настроек GSM-интерфейса к заводским установкам.

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

Зачем пользователю придумывать геморой?

Когда системе есть изначально интернет и она может это делать вообще сама автоматически!

Читайте также:  Сытин настрой для щитовидной железы

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

Похоже на попытку затаскивать пользователей к представителям, зачем?

Это еще можно объяснить, тем что X96 вы не продаете так, и ее можно купить только в ваших оф. сервис центрах.

И устанавливать X96 могут только ваши оф. сервис центры.

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

Произойдёт сброс настроек GSM-интерфейса к заводским установкам.

Это я и так знаю)

Что это за собой повлечет?

Нужен ли будет доступ к кнопке Валет и\или повторная настройка модуля через СтарЛайн Мастер ?

Или можно выполнить данную команду и потом просто заново прописать M1 номер и более ничего не слетит?

3) Имеет ли смысл в личном кабинете Мегафона отключить в опциях интернет и снова включить?

И не слетит ли это при этом 1кб округление трафика?

sim карта Мегафон из комплекта же оформлена как корпоративная на вашу организацию, а это значит у вас есть корпоративный ЛК, в котором вы можете полностью управлять сим картой(услуги включать и отключать итд)

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

Любое обновление ПО Умных систем шестого поколения может потребовать корректировки настроек, т.к. могут меняться алгоритмы некоторых функций. Отсутствие контроля со стороны авторизованного установщика могут стать причиной нежелательных случаев.

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

Системы А96 комплектуются USB-переходником. Нет необходимости разбирать элементы салона при установке USB-разъёма в доступном месте.

Имеет ли смысл в личном кабинете Мегафона отключить в опциях интернет и снова включить?

Вам уже ранее сообщали об отсутствии ограничений со стороны оператора связи.

Относительно сброса настроек GSM-интерфейса. Потребуется первичная регистрация, в том числе установка М1, включение GPRS и запрос пин-кода для повторной регистрации на сервере.

Любое обновление ПО Умных систем шестого поколения может потребовать корректировки настроек, т.к. могут меняться алгоритмы некоторых функций

1) Ну в роутерах всяких подобные вопросы давно решены отдельным сохранением конфигов настроек, которые сохраняются при обновлении прошивки или после обновления прописываются заново на новую прошивку!

При обновлении через usb и сохранением конфига, должно быть ровно тоже самое!

Системы А96 комплектуются USB-переходником. Нет необходимости разбирать элементы салона при установке USB-разъёма в доступном месте.

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

— по проводу можно будет определить нахождение основного блока

— подключиться к модулю(не знаю просит ли он логин\пароль по usb) и внести изменения

Потребуется первичная регистрация, в том числе установка М1, включение GPRS и запрос пин-кода для повторной регистрации на сервере.

а)Мне для этого не потребуется доступ к машине?

Можно просто позвонить на номер, он сохраниться как m1 и и потом 00551 GPRS.

б)Что за пин-код для повторной регистрации?

в) «после команды 009902 необходимо повторить процедуру привязки модуля(при выключенном зажигании нажать 7 раз кнопку Валет,включить зажигание и дождаться срабатывания аварийной сигнализации)-после этого появится управление с телефона.»

придется это проделывать?

Ну в роутерах всяких подобные вопросы давно решены отдельным сохранением конфигов настроек, которые сохраняются при обновлении прошивки или после обновления прописываются заново на новую прошивку!

Вопрос не в утере значений, в в корректировке алгоритмов.

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

подключиться к модулю(не знаю просит ли он логин\пароль по usb) и внести изменения

Для изменения настроек потребуется сервисный код, указанный на вашей карточке.

Можно просто позвонить на номер, он сохраниться как m1 и и потом 00551 GPRS.

Что за пин-код для повторной регистрации?

Тот, который требуется при добавлении нового устройства в аккаунт Телематики. (СМС-запрос 00581).

После отправки СМС-команды 009902 то устройство, которое находилось в аккаунте утрачивает привязку к системе. Поэтому и требуется повторная регистрация.

«после команды 009902 необходимо повторить процедуру привязки модуля(при выключенном зажигании нажать 7 раз кнопку Валет,включить зажигание и дождаться срабатывания аварийной сигнализации)-после этого появится управление с телефона.»

придется это проделывать?

Исчерпывающие рекомендации, относительно действий после сброса к заводским установкам вам были предоставлены выше. Пожалуйста, следуйте им.

По какой команде можно проверить подключен ли модуль R4 ?

Источник

Оцените статью