Регистрируем, настраиваем и устанавливаем GPS GSM маяк своими руками. Солнечный трекер своими руками

После нескольких экспериментов с ардуиной решил сделать простенький и не очень дорогой GPS-tracker с отправкой координат по GPRS на сервер.
Используется Arduino Mega 2560 (Arduino Uno), SIM900 - GSM/GPRS модуль (для отправки информации на сервер), GPS приёмник SKM53 GPS.

Всё закуплено на ebay.com, в сумме около 1500 р (примерно 500р ардуина, немного меньше - GSM модуль, немного больше - GPS).

GPS приемник

Для начала нужно разобраться с работой с GPS. Выбранный модуль - один из самых дешевых и простых. Тем не менее, производитель обещает наличие батарейки для сохранения данных о спутниках. По даташиту, холодный старт должен занимать 36 секунд, однако, в моих условиях (10 этаж с подоконника, вплотную зданий нет) это заняло аж 20 минут. Следующий старт, однако, уже 2 минуты.

Важный параметр устройств, подключаемых к ардуине - энергопотребление. Если перегрузить преобразователь ардуины, она может сгореть. Для используемого приемника максимальное энергопотребление - 45mA @ 3.3v. Зачем в спецификации указывать силу тока на напряжении, отличном от требуемого (5V), для меня загадка. Тем не менее, 45 mA преобразователь ардуины выдержит.

Подключение
GPS не управляемый, хотя и имеет RX пин. Для чего - неизвестно. Основное, что можно делать с этим приемником - читать данные по протоколу NMEA с TX пина. Уровни - 5V, как раз для ардуины, скорость - 9600 бод. Подключаю VIN в VCC ардуины, GND в GND, TX в RX соответствующего serial. Читаю данные сначала вручную, затем с использованием библиотеки TinyGPS. На удивление, всё читается. После перехода на Uno пришлось использовать SoftwareSerial, и тут начались проблемы - теряется часть символов сообщения. Это не очень критично, так как TinyGPS отсекает невалидные сообщения, но довольно неприятно: о частоте в 1Гц можно забыть.

Небольшое замечание относительно SoftwareSerial: на Uno нет хардверных портов (кроме соединённого с USB Serial), поэтому приходится использовать программный. Так вот, он может принимать данные только на пине, на котором плата поддерживает прерывания. В случае Uno это 2 и 3. Мало того, данные одновременно может получать только один такой порт.

Вот так выглядит «тестовый стенд».

GSM приемник/передатчик


Теперь начинается более интересная часть. GSM модуль - SIM900. Он поддерживает GSM и GPRS. Ни EDGE, ни уж тем более 3G, не поддерживаются. Для передачи данных о координатах это, вероятно, хорошо - не будет задержек и проблем при переключении между режимами, плюс GPRS сейчас есть почти везде. Однако, для каких-то более сложных приложений этого уже может не хватить.

Подключение
Модуль управляется также по последовательному порту, с тем же уровнем - 5V. И здесь нам уже понадобятся и RX, и TX. Модуль - shield, то есть, он устанавливается на ардуину. Причем совместим как с mega, так и с uno. Скорость по умолчанию - 115200.

Собираем на Mega, и тут нас ждет первый неприятный сюрприз: TX пин модуля попадает на 7й пин меги. На 7м пину меги недоступны прерывания, а значит, придется соединить 7й пин, скажем, с 6м, на котором прерывания возможны. Таким образом, потратим один пин ардуины впустую. Ну, для меги это не очень страшно - всё-таки пинов хватает. А вот для Uno это уже сложнее (напоминаю, там всего 2 пина, поддерживающих прерывания - 2 и 3). В качестве решения этой проблемы можно предложить не устанавливать модуль на ардуину, а соединить его проводами. Тогда можно использовать Serial1.

После подключения пытаемся «поговорить» с модулем (не забываем его включить). Выбираем скорость порта - 115200, при этом хорошо, если все встроенные последовательные порты (4 на меге, 1 на uno) и все программные работают на одной скорости. Так можно добиться более устойчивой передачи данных. Почему - не знаю, хотя и догадываюсь.

Итак, пишем примитивный код для проброса данных между последовательными портами, отправляем atz, в ответ тишина. Что такое? А, case sensitive. ATZ, получаем OK. Ура, модуль нас слышит. А не позвонить ли нам ради интереса? ATD +7499… Звонит городской телефон, из ардуины идет дымок, ноутбук вырубается. Сгорел преобразователь Arduino. Было плохой идеей кормить его 19 вольтами, хотя и написано, что он может работать от 6 до 20V, рекомендуют 7-12V. В даташите на GSM модуль нигде не сказано о потребляемой мощности под нагрузкой. Ну что ж, Mega отправляется в склад запчастей. С замиранием сердца включаю ноутбук, получивший +19V по +5V линии от USB. Работает, и даже USB не выгорели. Спасибо Lenovo за защиту.

После выгорания преобразователя я поискал потребляемый ток. Так вот, пиковый - 2А, типичный - 0.5А. Такое явно не под силу преобразователю ардуины. Нужно отдельное питание.

Программирование
Модуль предоставляет широкие возможности передачи данных. Начиная от голосовых вызовов и SMS и заканчивая, собственно, GPRS. Причем для последнего есть возможность выполнить HTTP запрос при помощи AT команд. Придется отправить несколько, но это того стоит: формировать запрос вручную не очень-то хочется. Есть пара нюансов с открытием канала передачи данных по GPRS - помните классические AT+CGDCONT=1,«IP»,«apn»? Так вот, тут то же самое нужно, но слегка хитрее.

Для получения страницы по определенному URL нужно послать следующие команды:
AT+SAPBR=1,1 //Открыть несущую (Carrier) AT+SAPBR=3,1,"CONTYPE","GPRS" //тип подключения - GPRS AT+SAPBR=3,1,"APN","internet" //APN, для Мегафона - internet AT+HTTPINIT //Инициализировать HTTP AT+HTTPPARA="CID",1 //Carrier ID для использования. AT+HTTPPARA="URL","http://www.example.com/GpsTracking/record.php?Lat=%ld&Lng=%ld" //Собственно URL, после sprintf с координатами AT+HTTPACTION=0 //Запросить данные методом GET //дождаться ответа AT+HTTPTERM //остановить HTTP

В результате, при наличии соединения, получим ответ от сервера. То есть, фактически, мы уже умеем отправлять данные о координатах, если сервер принимает их по GET.

Питание
Поскольку питать GSM модуль от преобразователя Arduino, как я выяснил, плохая идея, было решено купить преобразователь 12v->5v, 3A, на том же ebay. Однако, модулю не нравится питание в 5V. Идем на хак: подключаем 5V в пин, с которого приходит 5V от ардуины. Тогда встроенный преобразователь модуля (существенно мощнее преобразователя ардуины, MIC 29302WU) сделает из 5V то, что нужно модулю.

Сервер

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

Полевые испытания

Вот так выглядит собранный девайс, без корпуса:

После установки преобразователя питания и укладывания в корпус от дохлого DSL модема система выглядит так:

Припаивал провода, вынул несколько контактов из колодок ардуины. Выглядят так:

Подключил 12V в машине, проехался по Москве, получил трек:


Точки трека достаточно далеко друг от друга. Причина в том, что отправка данных по GPRS занимает относительно много времени, и в это время координаты не считываются. Это явная ошибка программирования. Лечится во-первых, отправкой сразу пачки координат со временем, во-вторых, асинхронной работой с GPRS модулем.

Время поиска спутников на пассажирском сидении автомобиля - пара минут.

Выводы

Создание GPS трекера на ардуино своими руками возможно, хотя и не является тривиальной задачей. Главный вопрос сейчас - как спрятать устройство в машине так, чтобы оно не подвергалось воздействиям вредных факторов (вода, температура), не было закрыто металлом (GPS и GPRS будут экранироваться) и не было особенно заметно. Пока просто лежит в салоне и подключается к гнезду прикуривателя.

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

Использованные устройства

  • Arduino Mega 2560
  • Arduino Uno
  • GPS SkyLab SKM53
  • SIM900 based GSM/GPRS Shield
  • DC-DC 12v->5v 3A converter

Это один из самых удачных проектов head tracker’ов, который я только встречал. Используются самые передовые технологии — акселерометр, гироскоп и компас, такие же, как и в гарнитурах виртуальной реальности Gear VR, Playstation VR, Oculus Rift и прочих. А для создания достаточно лишь минимального умения паять и более чем скромной суммы денег. А теперь по порядку.

Варианты

Итоговая стоимость: 750 рублей .

Сборка

Есть очень простая и подробная официальная инструкция . Нам же из нее нужна только таблица соединений.

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

Тут я бы дал две рекомендации. Первая: плата датчиков уже платы Arduino, а большинство подключений приходится на одну сторону (2,3,7,GNDx2), так что ее оставляем открытой (плату датчиков сдвигаем к другой стороне), а оставшиеся два провода (VCC и GND) лучше припаять до того, как склеим платы вместе, так как после этого будет уже сложнее. Вторая: сначала паять длинные провода (GND и INT), а потом уже короткие (SCL, SDA,AD0). Я, как видно на фотографии, ошибся с INT. И самое главное: не жалейте флюса! И если он нейтральный (например канифоль), то его можно не отмывать.

Кнопка просто припаивается одним концом к Arduino (10), а другим концом через провод к ближайшей земле (GND). В принципе, кнопка и так зафиксирована, но я дополнительно подклеил ее цианакрилатом.

И это все, можно пользоваться!

Улучшения

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

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

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

Прошивка, калибровка и настройка

Тут все более, чем просто. Скачиваем официальное приложение EDTracker GUI , распаковываем и запускаем.

Выбираем версию (EDTraket2_9250) и соответствующий порт. Если нужного порта нет, можно обновить список кнопкой «Scan Ports». Когда выбрали соответствующий порт, запускаем прошивку кнопкой Flash. По окончании прошивки начнется стандартная 20-ти секундная калибровка гироскопа, при которой необходимо держать трекер неподвижно. Такая же калибровка проводится при каждом включении устройства.

  1. Справа открываем кладку Magnetometr
  2. Выставляем Sensevity примерно на 75% (3/4 шкалы)
  3. Жмем Restart и начинаем вращать наше устройство во всех возможных плоскостях
  4. Делать это нужно до тех пор, пока коэффициенты матрицы перестанут меняться, но должно накопиться не меньше 500 Points, больше — лучше

На картинке отображаются точки. Красные — сырые измерения с датчика, зеленые — пересчитанные. Все эта трехмерная картинка вращается вокруг нуля, т.е. середины сферы из зеленых точек.

Если не откалибровать компас, то отслеживание поворота головы корректно работать не будет.

Настроек тут не много:

  • Выбор режима осей (Экспоненциальный/Линейный)
  • Чувствительность по каждой оси
  • Сглаживание

Я не люблю косить глаза на монитор, поэтому использую экспоненциальный режим, чувствительность выше 100, сглаживание 75-90%. Мне так удобно.

Осталось только прикрепить к вашей любимой гарнитуре и можно вступать в бой! Единственная кнопка служит для центровки.

Впечатления

Впечатления крайне положительные. У меня уже был трекер на камере и метке (GTX vTrack MkI) и мне есть с чем сравнивать.

  • низкая стоимость
  • компактность
  • отсутствие камеры (для параноиков)
  • и самое главное — вам не нужно фиксировать свое положение перед компьютером, я люблю в процессе игры спускаться ниже и подниматься, а с камерой приходилось держать себя всегда в центре кадра
  • дребезжание в крайних положениях — расплата за высокую чувствительность и экспоненциальный режим
  • уплывает калибровка гироскопа, если гарнитура некоторое время лежит на столе, приходится перед использованием заново 20 секунд калибровать уже на голове
  • высокие значения чувствительности не сохраняются после отключения, перед каждым использованием приходится заново выставлять чувствительность — это, скорее всего, ошибка в прошивке
  • программа EDTracker UI падает с ошибкой после некоторого времени работы
  • на горячую клавишу нельзя назначить комбинацию кнопок, да и то, что программа падает периодически, делает использование HotKey невозможным. Хорошо, что достаточно кнопки на самом устройстве

Как по мне, минусы совсем незначительные. А так как ПО с открытым исходным кодом — всегда можно что-то исправить. Мне нравится устройство и я буду его использовать. Может профессиональные устройства типа TrackIR могут оказаться чем-то лучше, я не готов отказаться от тех плюсов, что дает это устройство.

Что такое Track IR?

Одна из систем отслеживания движений головы, вышедших на массовый рынок.
Это устройство ввода, разрабатываемое компанией NaturalPoint, обеспечивает псевдо-виртуальную реальность на персональном компьютере. Оно может следить за движениями головы пользователя по координатам X, Y и Z. Полученные данные используются в программах (играх) для преобразования реальных поворотов головы в виртуальные. Например, в авиасимуляторе, игрок может осматривать кабину. Чувствительность настраивается, чтоб предотвратить такие повороты, когда пользователь не может нормально смотреть на экран."

К слову:
Track (от англ.) - отслеживать
IR - (аббрев. Infra red) - инфракарасный
Всё потому что данные для обработки полступают на компьютер через веб - камеру от инфракрасных излучателей (обычных инфрокрасных светодиодов). Далее.

Что нам потребуется?

Для того чтобы соорудить подобную штуковину необходимо:

  • Уметь пользоваться паяльником
  • 3 инфракрасных светодиода 3V (l-34sf4c)
  • Батарейка (таблетка) на 3V
  • Резистор на 51Ом
  • Отрезок провода
  • Кнопочка с фиксацией (pb22e08)
  • Подходящая Веб-Камера
  • Программа free-track
  • Фантазия
Далее о каждом пункте поподробнее:

Уметь пользоваться паяльником

- необходимо, ибо ваши старания могут превратится в мучения. В определенный момент автор столкнулся с подобными трудностями.

Паяльник и прочие принадлежности

- собственно особо мощный паяльник не нужен, 30W хватит, олово и канифоль для того чтобы места пайки были крепкими.

3 инфракрасных светодиода 3V

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

Батарейка (таблетка) на 3V

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

Резистор на 50Ом

-Чтобы правильно подключить светодиод даже в самом простом случае, необходимо (читай желательно) подключить его через токоограничивающий резистор.

Отрезок провода

-я использовал отрезок витой пары UTP 5e (2 жилы разного цвета из кабеля от интернета), не толстый и не тонкий, в самый раз

Кнопочка с фиксацией

- тут, как говорится на вкус и цвет фломастеры разные, можно и без кнопочки, но таким образом батарейки на долго не хватит

Подходящая Веб-Камера

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

Про веб - камеру

Самое главное чтобы была возможность извлечь из веб - камеры инфракрасный светофильтр и отключить автовыдержку, чтобы увеличить FPS - всё.
Перечень совместимых камер можно прочитьать на сайте разработчика программы free-track -
Я использовал a4tech pk336e
Чтобы извлечь светофильтр необходимо разобрать корпус и выкрутить шахту с линзой, у основания шахты перед линзой вклеено небольшое стеклышко - это и есть светофильтр, поковырявшись ножичком пришлось его разбить и вычистить осколки, но аккуратно чтобы не повредить под ним линзу. После чего всё необходимо собрать обратно. Забегая вперед скажу, чтобы всё работало - веб- камера должна воспринимать лишь три белые точки от светодиодов и ничего лишнего, для этого её необходимо дополнительно затемнить небольшим кусочком магнитной поверхности от старой дискеты, или пленкой от видео кассеты VHS.
с картинками, фирма таже, но модель камеры другая.
Теперь у нас есть веб - камера, которая будет улавливать инфракрасное свечение, и вы можете на ней проверить работает ли ваша конструкция.
В итоге на изображении должны появится три харрактерные белые точки, читай датчики перемещения, котрые будут передавать информацию программе фритрек для обработки. Но об этом в следующем разделе.
Добавлю что роботоспособность у камеры сохраняется при извлеченном светофильтре.

Разбираем веб-камеру A4Tech PK336E

Настройка FreeTrack


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

3 - заходим в раздел CAM
4 - Выбираем камеру из списка
5 - Нажимаем на старт
Ну и на черном экране должны появится три белых точки, при движении которых должна вращаться соответственно 3d модель слева.

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

Сегодня одним из прогрессивных методов защиты признан трекер – следящее устройство, которое позволяет наблюдать в режиме реального времени за дислокацией машины. Разумеется, от угона он не спасет, но на случай, если тот все же произойдет, выследить и вернуть машину с ГЛОНАСС GPS трекером своими руками даже без участия полиции – дело нескольких минут. Без него, в свою очередь, шансы мизерны и стремятся к нулю.

Почему возникает идея сделать ГЛОНАСС GPS трекер своими руками

Возникает резонный вопрос – почему, если эта защита столь эффективна, ею не укомплектованы все до единого автомобили? Ответ, пожалуй, очевиден – все упирается исключительно в цену прибора. Впрочем, покупка – далеко не единственный минус таких устройств:

  • Кроме стартовой цены нужно ежемесячно выкладывать определенную сумму на содержание трекера в качестве абонплаты «провайдеру» (по совместительству – и продавцу). Эта сумма не настолько велика, чтобы можно было назвать ее «неподъемной», но все же ощутима.
  • Большинство моделей нужно подключать к аккумулятору, что делает в руках умелого вора беззащитным не только трекер, но и все, что находится внутри машины, не говоря о ней самой. Достаточно отключить источник питания в таких трекерах, и сигнал от них пропадет, открывая преступнику путь к бегству с добычей.
  • Поскольку трекеры не так хорошо распространены, большинство автолюбителей, привыкших полагаться на мнение друзей, смотрят на устройство без доверия. В то же время, зная ситуацию на рынке, некоторые производители подделывают качественные бренды, о которых в итоге создается негативное впечатление у тех, кто пытался сэкономить.

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

Преимущества ГЛОНАСС GPS трекера, сделанного своими руками

Как говорится, хочешь хорошего – делай сам. И действительно, перечень преимуществ самодельного трекера достаточно внушителен, чтобы как минимум вызвать недоумение у тех, кто купил себе это устройство в магазине:

  • Прежде всего, стоимость прибора оказывается на порядок ниже рыночной. В отдельных случаях он может выйти и вовсе бесплатным – например, если в мастерской списывают в утиль пригодные для трекера запчасти.
  • ГЛОНАСС GPS трекер своими руками будет точно соответствовать потребностям пользователя, а также может быть легко модифицирован при смене обстоятельств.
  • Самоделка наверняка не будет содержать скрытых дефектов заводского брака, которые проявляются в самый неподходящий момент.

Недостатки ГЛОНАСС GPS трекеров, изготовленных своими руками

Увы, как и у всего, у этого метода есть свои недостатки:

  • Качество устройства напрямую зависит от уровня мастера-пайщика; если тот не работал непосредственно на производстве трекеров, он может не знать некоторых тонкостей, и тем самым «завалить» работу, независимо от того, сколько труда и умений в нее вложено.
  • Гарантии на самоделки по понятным причинам не существует. Но важен не сам этот факт, а то, что в случае каких-либо неполадок или даже «осечке» в работе предъявить претензии можно будет лишь собственному паяльному набору.
  • Наконец, лишь самые опытные профессионалы могут понять, как изготовить ГЛОНАСС GPS трекер своими руками без готовой схемы. Готовых решений, к сожалению, не найти в открытом доступе, а если вдруг принципиальные устройства встретятся – без навыков базового программирования там не обойтись.

Решение, избавляющее от необходимости делать ГЛОНАСС GPS трекер своими руками

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

Этот навигатор выгодно отличается не только демократичной ценой, но и множеством прочих достоинств, которыми не может похвастать большинство следящих устройств:

  • ГЛОНАСС GPS трекеры, сделанные своими руками, обычно довольно громоздки и неуклюжи на вид. Но наше устройство помещено в изящный миниатюрный корпус размером немногим больше пластиковой банковской карточки.
  • Как и в случае с самодельными приборами, никакой абонплаты прибору не потребуется – содержать нужно только СИМ-карту, которую перед началом работы следует вставить в устройство. При выгодно подобранном тарифе траты могут становиться совсем символическими, вплоть до совершенно бесплатного обеспечения.
  • Аккумуляторы – важный фактор любой модели следящего устройства; энергоемкий ГЛОНАСС GPS трекер своими руками сделать не удастся никому хотя бы по той причине, что для коммутации с подходящими аккумуляторами нужно лабораторное оборудование. Но и подключать, как устаревшие платные модели, к автомобильному аккумулятору этот прибор не нужно. Встроенная батарея работает рекордно долгое время – до девяти месяцев на одной зарядке.

Возможности, которых не даст ГЛОНАСС GPS трекер, изготовленный своими руками

Учитывая малые размеры, высокую степень автономности и прочие достоинства прибора, его можно использовать не только в качестве «противоугонки», но и для целей совершенно отвлеченных:

  • Прежде всего, мобильность и малые габариты дают возможность следить за машиной совершенно незаметно и без предварительных монтажных работ. Этим охотно пользуются различные транспортные компании для того, чтобы отслеживать маршруты подведомственных юнитов, а заодно проверять водителей в вопросах расходов ГСМ.
  • ГЛОНАСС GPS трекер своими руками – это хобби, но когда дело доходит до профессиональных вопросов вроде промышленного шпионажа, эксперименты неуместны. Между тем, тайная слежка за кем бы то ни было – от частных лиц до целых корпораций – это один из самых распространенных способов применения маяка. Достаточно спрятать его в машине, одежде или сумке исследуемого субъекта, и вы получите исчерпывающую информацию обо всех его перемещениях.
  • С помощью трекеров можно наблюдать также и за близкими. В данной модели представлена функция, которую практически невозможно реализовать собственноручно, а именно – «тревожная кнопка», расположенная прямо на корпусе прибора. Всего одно нажатие, и на ваш телефон придет «SOS-уведомление» с привязанными гео-координатами.
  • Наконец, с помощью маяка можно отслеживать даже перемещение вещей – например, посылок в почтовых компаниях или багажа в аэропортах. В последнем случае, к слову, может возникнуть немало вопросов к тому, что представляет собой произведенный ГЛОНАСС GPS трекер своими руками. Чтобы не попасть впросак, лучше пользоваться фирменными устройствами.

Закажите ГЛОНАСС GPS трекер вместо пайки своими руками прямо сейчас

Все, что нужно для получения этого миниатюрного гаджета – оставить заполненный бланк веб-заявки на нашем сайте. После подтверждения заказа трекер будет немедленно отправлен к вам и прибудет прямо к двери квартиры с курьером. Ни предоплаты, ни каких-либо дополнительных условий не требуется – только заказ и оплата посыльному наличными.

Если вы планируете спаять ГЛОНАСС GPS трекер своими руками ради развлечения – попытайтесь, но когда речь заходит о безопасности – не стоит рисковать. Поступайте мудро и выбирайте для себя только самое лучшее.

ГЛОНАСС GPS трекер своими руками – лайфхак для избранных

После нескольких экспериментов с ардуиной решил сделать простенький и не очень дорогой GPS-tracker с отправкой координат по GPRS на сервер.
Используется Arduino Mega 2560 (Arduino Uno), SIM900 - GSM/GPRS модуль (для отправки информации на сервер), GPS приёмник SKM53 GPS.

Всё закуплено на ebay.com, в сумме около 1500 р (примерно 500р ардуина, немного меньше - GSM модуль, немного больше - GPS).

GPS приемник

Для начала нужно разобраться с работой с GPS. Выбранный модуль - один из самых дешевых и простых. Тем не менее, производитель обещает наличие батарейки для сохранения данных о спутниках. По даташиту, холодный старт должен занимать 36 секунд, однако, в моих условиях (10 этаж с подоконника, вплотную зданий нет) это заняло аж 20 минут. Следующий старт, однако, уже 2 минуты.

Важный параметр устройств, подключаемых к ардуине - энергопотребление. Если перегрузить преобразователь ардуины, она может сгореть. Для используемого приемника максимальное энергопотребление - 45mA @ 3.3v. Зачем в спецификации указывать силу тока на напряжении, отличном от требуемого (5V), для меня загадка. Тем не менее, 45 mA преобразователь ардуины выдержит.

Подключение
GPS не управляемый, хотя и имеет RX пин. Для чего - неизвестно. Основное, что можно делать с этим приемником - читать данные по протоколу NMEA с TX пина. Уровни - 5V, как раз для ардуины, скорость - 9600 бод. Подключаю VIN в VCC ардуины, GND в GND, TX в RX соответствующего serial. Читаю данные сначала вручную, затем с использованием библиотеки TinyGPS. На удивление, всё читается. После перехода на Uno пришлось использовать SoftwareSerial, и тут начались проблемы - теряется часть символов сообщения. Это не очень критично, так как TinyGPS отсекает невалидные сообщения, но довольно неприятно: о частоте в 1Гц можно забыть.

Небольшое замечание относительно SoftwareSerial: на Uno нет хардверных портов (кроме соединённого с USB Serial), поэтому приходится использовать программный. Так вот, он может принимать данные только на пине, на котором плата поддерживает прерывания. В случае Uno это 2 и 3. Мало того, данные одновременно может получать только один такой порт.

Вот так выглядит «тестовый стенд».

GSM приемник/передатчик


Теперь начинается более интересная часть. GSM модуль - SIM900. Он поддерживает GSM и GPRS. Ни EDGE, ни уж тем более 3G, не поддерживаются. Для передачи данных о координатах это, вероятно, хорошо - не будет задержек и проблем при переключении между режимами, плюс GPRS сейчас есть почти везде. Однако, для каких-то более сложных приложений этого уже может не хватить.

Подключение
Модуль управляется также по последовательному порту, с тем же уровнем - 5V. И здесь нам уже понадобятся и RX, и TX. Модуль - shield, то есть, он устанавливается на ардуину. Причем совместим как с mega, так и с uno. Скорость по умолчанию - 115200.

Собираем на Mega, и тут нас ждет первый неприятный сюрприз: TX пин модуля попадает на 7й пин меги. На 7м пину меги недоступны прерывания, а значит, придется соединить 7й пин, скажем, с 6м, на котором прерывания возможны. Таким образом, потратим один пин ардуины впустую. Ну, для меги это не очень страшно - всё-таки пинов хватает. А вот для Uno это уже сложнее (напоминаю, там всего 2 пина, поддерживающих прерывания - 2 и 3). В качестве решения этой проблемы можно предложить не устанавливать модуль на ардуину, а соединить его проводами. Тогда можно использовать Serial1.

После подключения пытаемся «поговорить» с модулем (не забываем его включить). Выбираем скорость порта - 115200, при этом хорошо, если все встроенные последовательные порты (4 на меге, 1 на uno) и все программные работают на одной скорости. Так можно добиться более устойчивой передачи данных. Почему - не знаю, хотя и догадываюсь.

Итак, пишем примитивный код для проброса данных между последовательными портами, отправляем atz, в ответ тишина. Что такое? А, case sensitive. ATZ, получаем OK. Ура, модуль нас слышит. А не позвонить ли нам ради интереса? ATD +7499… Звонит городской телефон, из ардуины идет дымок, ноутбук вырубается. Сгорел преобразователь Arduino. Было плохой идеей кормить его 19 вольтами, хотя и написано, что он может работать от 6 до 20V, рекомендуют 7-12V. В даташите на GSM модуль нигде не сказано о потребляемой мощности под нагрузкой. Ну что ж, Mega отправляется в склад запчастей. С замиранием сердца включаю ноутбук, получивший +19V по +5V линии от USB. Работает, и даже USB не выгорели. Спасибо Lenovo за защиту.

После выгорания преобразователя я поискал потребляемый ток. Так вот, пиковый - 2А, типичный - 0.5А. Такое явно не под силу преобразователю ардуины. Нужно отдельное питание.

Программирование
Модуль предоставляет широкие возможности передачи данных. Начиная от голосовых вызовов и SMS и заканчивая, собственно, GPRS. Причем для последнего есть возможность выполнить HTTP запрос при помощи AT команд. Придется отправить несколько, но это того стоит: формировать запрос вручную не очень-то хочется. Есть пара нюансов с открытием канала передачи данных по GPRS - помните классические AT+CGDCONT=1,«IP»,«apn»? Так вот, тут то же самое нужно, но слегка хитрее.

Для получения страницы по определенному URL нужно послать следующие команды:
AT+SAPBR=1,1 //Открыть несущую (Carrier) AT+SAPBR=3,1,"CONTYPE","GPRS" //тип подключения - GPRS AT+SAPBR=3,1,"APN","internet" //APN, для Мегафона - internet AT+HTTPINIT //Инициализировать HTTP AT+HTTPPARA="CID",1 //Carrier ID для использования. AT+HTTPPARA="URL","http://www.example.com/GpsTracking/record.php?Lat=%ld&Lng=%ld" //Собственно URL, после sprintf с координатами AT+HTTPACTION=0 //Запросить данные методом GET //дождаться ответа AT+HTTPTERM //остановить HTTP

В результате, при наличии соединения, получим ответ от сервера. То есть, фактически, мы уже умеем отправлять данные о координатах, если сервер принимает их по GET.

Питание
Поскольку питать GSM модуль от преобразователя Arduino, как я выяснил, плохая идея, было решено купить преобразователь 12v->5v, 3A, на том же ebay. Однако, модулю не нравится питание в 5V. Идем на хак: подключаем 5V в пин, с которого приходит 5V от ардуины. Тогда встроенный преобразователь модуля (существенно мощнее преобразователя ардуины, MIC 29302WU) сделает из 5V то, что нужно модулю.

Сервер

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

Полевые испытания

Вот так выглядит собранный девайс, без корпуса:

После установки преобразователя питания и укладывания в корпус от дохлого DSL модема система выглядит так:

Припаивал провода, вынул несколько контактов из колодок ардуины. Выглядят так:

Подключил 12V в машине, проехался по Москве, получил трек:


Точки трека достаточно далеко друг от друга. Причина в том, что отправка данных по GPRS занимает относительно много времени, и в это время координаты не считываются. Это явная ошибка программирования. Лечится во-первых, отправкой сразу пачки координат со временем, во-вторых, асинхронной работой с GPRS модулем.

Время поиска спутников на пассажирском сидении автомобиля - пара минут.

Выводы

Создание GPS трекера на ардуино своими руками возможно, хотя и не является тривиальной задачей. Главный вопрос сейчас - как спрятать устройство в машине так, чтобы оно не подвергалось воздействиям вредных факторов (вода, температура), не было закрыто металлом (GPS и GPRS будут экранироваться) и не было особенно заметно. Пока просто лежит в салоне и подключается к гнезду прикуривателя.

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

Использованные устройства

  • Arduino Mega 2560
  • Arduino Uno
  • GPS SkyLab SKM53
  • SIM900 based GSM/GPRS Shield
  • DC-DC 12v->5v 3A converter
  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то