SMS GPS-трекер из Neoway M590 and ublox NEO-6 часть 1. Собираем детали и тестим



In English

Это продолжение моей серии постов о GSM / GPRS модуле Neoway M590.

Первый пост этой серии касался основных сценариев использования модуля с Arduino, таких как отправка/получение SMS, определение телефонного звонка вместе с номером звонящего и даже использование GPRS. Второй пост - более практичный пример автоматизированного управления обогревом гаража с помощью SMS-сообщений.

В этот раз я продемонстрирую более сложный пример использования этого модуля - создание GPS-трекера, который отправляет свое местоположение владельцу по SMS. Нам придется изучить настройки энергосбережения GSM и GPS модулей, чтобы обеспечить более длительную работу от батареи у готового устройства. Это руководство из двух частей еще и дополнит первый пост серии более подробными инструкциями по сборке и первым шагам с Neoway M590.
  1. Neoway M590 GPRS Tutorial: sending and receiving files from/to SD card
  2. Application of Neoway M590: remote control for garage heater
  3. SMS GPS-трекер из Neoway M590 and ublox NEO-6 часть 2. Сборка и программирование

Ссылки на даташиты по используемому оборудованию:

Требуемое железо

  • Очевидно, нам понадобятся как GSM/GPRS модуль Neoway M590 и GPS модуль ublox NEO-6. Первый, как правило, продается как удобный и дешевый комплект для сборки на Aliexpress и Taobao (например вот такой набор с похожей на мою платой с разъемом на 14 контактов или вот такой - в два раза дешевле, но с другой платкой. Тот который купил я уже успел подорожать до 5.5 USD: ссылка на него). GPS модуль можно купить в виде готовой распаянной печатной платы с огромной прямоугольной керамической антенной (ссылка).

    GSM/GPRS модуль Neoway M590
    GPS модуль ublox NEO-6

  • Для GPS трекера мы используем старую добрую ATMega 328P. На самом деле, я ухитрился купить за небольшую цену набор из самой Меги, DIP-разъема, стабилизатора напряжения 7805, электролитических конденсаторов и 16МГц резонатора с двумя конденсаторами на 22пФ. Не все детали пригодятся, но блин, дешево же! Сейчас не смог найти тот комплект который покупал я, но вот это тоже отлично пойдет (5 штук ATMega328P).

    Чип ATMega328p, который известен как сердце Arduino Uno и просто неплохая надежная старая железка. 8МГц резонатор в металлическом корпусе посередине.

  • 8МГц резонатор. К сожалению, мой комплект ATMega не включал такого, и мне пришлось вырвать его из какой-то несчастной железки.

    Надпись 8.000 сверху - явный знак 8МГц резонатора.

  • Литиевая батарея, которую можно достать из старого мобильного или просто купить + зарядное устройство для литиевых батарей, например вот такое:

    З/У на базе микросхемы TP4056 (даташит). Можно купить дешево и в большом количестве на Aliexpress и подобных магазинах.

  • Ассортимент конденсаторов. В частности, помимо стандартных электролитических и керамических кондеров, нам понадобятся большие конденсаторы большой емкости (>1000мкФ), которые можно найти на любой материнской плате.


  • Опционально - чтобы протестировать каждую часть оборудования перед сборкой устройства, вам понадобятся: Arduino, разные проводки для макетной платы (не знаю, я еще сфотографировал макетную плату, но вообще и она может пригодится для удобства).


  • Пара кривоватых рук😀 (по крайней мере у меня так)
Кажется, все. Ну что, начнем?

Не так уж и много деталей для такого девайса.

Сборка и тест M590

Сборка

Когда Вы распакуете свой пакет из Китая (надеюсь, с защитой от статики, но кто знает...), Вы увидите кучку всяких-разных деталей:


Фото печатной платы отлично демонстрируют, какие контакты M590 выведены на штырьковый разъем (довольно малое число, я бы сказал):

Верх печатной платы
Низ печатной платы

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

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

На танталовых конденсаторах есть темная полоса со стороны + :


SMT светодиоды имеют 2 отличительные особенности, которые отзличают анод от катода, а именно рисунок внизу и два зеленых пятна, которые едва видны сверху:


Все остальное собирается проще простого. На посадочном месте модуля GSM есть белая точка, обозначающая первую ногу. Распиновку модуля смотрим в документе Neoway M590 Hardware design manual. По шелкографии на посадочном месте держателя SIM-карт также понятно, как его припаять благодаря треугольному скосу.

Так вот выглядит собранный модуль:

Верх печатной платы
Низ печатной платы

Теперь осталась только одна важная доработка.В мануале на M590 упоминается, что он может брать большие пиковые токи из своего источника питания, поэтому на линии питания надо добавить мощный конденсатор для хранения энергии и сглаживания этих импульсов, чтобы уменьшить требования к источнику питания.В моем комплекте M590 был небольшой конденсатор на 220 мкФ. Такой пойдет для питания модема от источника питания, который может предоставить не менее 0.8А постоянного тока!


Давайте-ка уменьшим эту цифру и припаяем мощный электролит прямо поверх печатной платы к линиям питания:

У меня 4700мкФ

^ ЕСЛИ ЭТО НЕ СДЕЛАТЬ ТО ЕСТЬ ШАНС ЧТО МОДУЛЬ БУДЕТ ПОСТОЯННО СБРАСЫВАТЬСЯ и постоянно выдавать в последовательный порт что-то такое:
MODEM:STARTUP
MODEM:STARTUP
MODEM:STARTUP
MODEM:STARTUP
MODEM:STARTUP
MODEM:STARTUP
MODEM:STARTUP

Теперь проверим, работает ли вообще, потому что дешево - не всегда хорошо...

Тест

Распиновка моего модуля (ряд штыревых разъемов 2x7):

Нога Функция
1 GND
2 GND
3 Vcc
4 Vcc
5 NC
6 NC
7 TX (M590 нога 8)
8 RX(M590 нога 7)
9 NC
10 NC
11 NC
12 RING (M590 нога 10)
13 NC
14 ON/OFF (M590 нога 19)

Благодаря конденсатору, который мы припаяли, мы можем подключить модуль непосредственно к встроенному регулятору напряжения 3,3 В на Arduino Uno. Просто подключите свой модуль к Arduino следующим образом:

Пин Arduino Пин M590
GND GND (1 or 2)
3.3V VCC (3 or 4)
D8 TX (8)
D9 RX (7)


В предыдущих постах я использовал библиотеку SoftwareSerial.h для общения с Neoway M590. Это работало в какой-то степени, но меня постоянно преследовали глюки связанные с искажением символов. Оказывается, эта библиотека слишком медленная и из-за задержек при софтовом распознавании входного потока символов они иногда искажаются.

Теперь я использую библиотеку AltSoftSerial, и предлагаю Вам сделать то же самое (или выбрать другую библиотеку для Arduino, но не SoftwareSerial.h). Просто посмотрите на разницу, это просто какая-то реклама стирального порошка:

SoftwareSerial
AltSoftSerial

Теперь загрузим код, который проверяет, отвечает ли модуль Neoway M590 на AT команды. Для этого используйте немного модифицированный скетч Echo, который поставляется в примерах для AltSoftSerial. Надо поменять скорость altSerial на 115200 бод (см. скриншот выше).

Если светодиод не начнет мигать после подсоединения питания к M590, значит нужно соединить контакты ON/OFF и GND модуля минимум на 0,5 секунды. После того светодиод на модуле начнет мигать, и в мониторе последовательного порта Arduino IDE должно появиться гордое MODEM: STARTUP. Попробуйте ввести строку AT и отправить ее с завершающей последовательностью CRLF в последовательном порте Arduino IDE для проверки связи в обоих направлениях. Модуль должен ответить OK. Если текста не видно, стоит попробовать мой скетч автоматического обнаружения из следующего абзаца. Еще раз проверьте свои соединения. Если он все еще не работает, то можно выкидывать. За такую цену можно купить штук пять таких модулей и попробовать каждый из них.😊

В процессе написания моего предыдущего поста про Neoway M590 я узнал, что хоть скорость порта модуля по умолчанию должна быть 115200, на самом деле на модулях, поставляемых из Китая зачастую видны явные признаки Б/У (уже паяные ноги например) и соотвественно они часто бывают настроены на другую скорость. Чтобы упростить поиск правильной скорости , я написал скетч, который автоматически определяет скорость порта.
Загрузите его и больше не нужно будет вручною пробовать каждую скорость:

Сборка и тест модуля NEO-6

Тут собирать почти нечего. Надо просто вдавить антенну в RF разъем модуля и припаяться к 4 контактам модуля (Vcc, GND, RX, TX). Неплохо бы не быть таким дикарем как я (фото внизу), и припаять штыревой разъем к модулю... Также для тестов я припаял небольшой конденсатор к Vcc и GND для стабильного питания.

Готово


Теперь нужна библиотека для декодирования GPS, например эта -> NeoGPS. Она очень конфигурируемая и может быть настроена на использование библиотек AltSoftSerial, NeoSWSerial или даже SoftwareSerial, и даже аппаратных последовательных портов на Leonardo, Mega и т. д. для подключения к модулю GPS.

Я нашел руководство по установке NeoGPS на GinHub довольно полезным для разворачивания библиотеки. Хотя оно настоятельно не рекомендует использовать SoftwareSerial, для тестирования и она сойдет.


Теперь подключим RX и TX модуля в соответствии с файлом GPSport.h из NeoGPS:


Пин Arduinо Пин NEO-6
GND GND
3.3V VCC
D4 TX
D3 RX

Теперь запустим Arduino и загрузим слегка модифицированный скетчи NMEA.ino из примеров к библиотеке NeoGPS:


Модулям GPS обычно требуется некоторое время (от 5 до 15 минут в отдаленных районах) для запуска и получения локации со спутников. Как только модуль получит фикс (координаты), он начнет мигать светодиодом два раза в секунду.


Теперь в Мониторе посл. порта Arduino должен появиться поток данных GPS, включая широту и долготу в формате без десятичной точки. Можно попробовать вставить эти координаты в Google Maps и убедиться, что модуль GPS работает:

Вроде бы правильно!

Вот ссылка на ЧАСТЬ 2, где мы продолжим собирать GPS трекер и программировать его.

Comments