Глонасс 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

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

GPS-трекер для машины - что это такое

Визуально устройство выглядит как черная коробочка размером с пачку сигарет, но дорогие модели могут быть еще меньше. Автомобильный GPS-трекер устанавливается в кабине машины, помогает точно определять координаты объекта. Погрешность таких приборов редко превышает 2,5 метра. Вся система состоит из приемного и передающего устройства. Маячок на машину для отслеживания передвижения передает на компьютер данные, которые принимает GPS приемник.

Для отслеживания передвижения машины используется ГЛОНАСС или GPS, на компьютере стоит специальное программное обеспечение, которое принимает данные с автомаяка. Трекер может быть подключен через приборную панель или работать автономно от батареек. GPS-маяк для авто принимает сигнал от нескольких спутников, которые находятся на орбите и по задержке в отклике система определяет местоположение машины, затем передает данные на компьютер или телефон. Кроме определения координат, маячок для слежения за автомобилем может:

  • передавать, принимать звук через микрофон;
  • записывать пройденный маршрут;
  • отслеживать слив, заправку топлива.

GPS-трекер для машины без абонентской платы

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

  1. GPS-метка для авто не требует абонплаты, но вы должны для пользования ПО подключить конкретный тариф для своего телефона, за который придется платить. Компания затем получит свою долю за проданный пакет.
  2. Вся система мониторинга и отслеживания работает только на специальном программном обеспечении, которое нужно купить. Совместить маяк для машины с другим софтом не получится и выбора не остается.
  3. В некоторых случаях вы подписываете договор, в котором действительно нет абонентской платы, вы можете установить модуль-передатчик, вам дадут необходимое ПО. Через год вам нужно перезаключить контракт потом вам говорят, что нужно платить за пользование услугами, а менять систему слежения уже не хочется.
  4. Существуют реальные предложения, в которых отслеживание машины проводится без ежемесячных платежей. Предоставляется софт на один компьютер, пользоваться им можно только с него. Это приемлемо для частного лица, который хочет защитить от угона свое авто, но абсолютно не удобно для компаний, где работает несколько менеджеров и больше одной машины.

GPS-трекер для машины с микрофоном

Каталог данной продукции может предложить множество вариантов. Производят для машин трекеры разные страны, некоторые обладают хорошим качеством, другие плохим, но низкой ценой. Еще одна отличительная черта – наличие в трекере дополнительных функций, к примеру, некоторые варианты помогают отследить расход топлива (слив/пополнение бака). Иногда владельцы компаний и частные лица решают купить в интернет-магазине GPS-трекер для машины с микрофоном. Это позволит слышать все, что происходит в кабине транспортного средства. Радиус слышимости, как правило, составляет 8 м.

GPS-трекер для машины на магните

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

Установка GPS-трекера на автомобиль

Как правило, занимаются данной процедурой специализированные сотрудники, которые правильно настроят устройство. Установка GPS-трекера на авто стоит недорого, но при желании провести ее можно самостоятельно. Если же уверенности в правильности настройки нет, следует доверить дело профессионалам. Происходит монтаж трекера на машину в несколько этапов:

Подготовка

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

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

Подключение

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

GPS-трекер для машины своими руками

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

  1. На мобильный скачайте из интернета специальную программу.
  2. Перейдите на ресурс «Gpshome».
  3. Пройдите регистрацию и зайдите в личный кабинет.
  4. Далее вам нужен раздел «Настройки», где вы сможете добавить необходимые данные про объект для отслеживания.
  5. Вам понадобится заглянуть под аккумулятор телефона, чтобы переписать IMEI (уникальный числовой идентификатор сотового).
  6. Введите данные в форму на сайте.
  7. Запустите на мобильном установленную программу и посмотрите началось ли отслеживание в ЛК на сайте.

Как выбрать GPS-трекер для машины

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

  1. Спросите консультанта о точности определения местоположения. Если погрешность больше 2.5 метров, то даже низкая цена не повод покупать такое устройство. Трекер должен правильно и точно определять все параметры.
  2. Узнайте скорость, с которой маячок способен принять сигнал и передать его на компьютер. Чем меньше это значение, тем лучше.
  3. Отдайте предпочтение моделям, которые способны улавливать отраженные сигналы спутника. Это актуально для машин, которые передвигаются в черте города. Отсутствие данной функции приведет к погрешности отображения маршрута (словно транспорт двигался не по дороге).
  4. Наличие дополнительных функций. Если вам нужен микрофон, датчик топлива, то на недорогих моделях их нет.

Цена на GPS-трекер для машины

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

  1. Starline Маяк М17. Подключается устройство при помощи провода, цена – от 6 000 рублей.
  2. GPS Маркeр M100. Имеется шлейф для подключения устройства к панели, также есть аварийный аккумулятор, цена – от 4 500 р.
  3. Вояджер 4. Подключается прибор к сети машины, но может работать временно от встроенного аккумулятора, цена – от 6 200 р.
  4. Proma Sat 1000. Магнитный автономный трекер для машины, который держит заряд по заявлению производителя около 2 лет. Цена – от 11 200 р.

Видео: как работает GPS-трекер

Я думаю каждый уважающий себя пилот понимает, что крутить головой в кабине с помощью мышки или джойстика - это как минимум неудобно, а как максимум медленно и неэффективно. Чтобы упростить эту задачу умные люди придумали такие устройства, как head tracker, которые следят за движением головы и повторяют эти движения в игре.

Ярким представителем таких устройств является TrackIR. Устройство несомненно хорошее, но дорогое... его цена составляет порядка 6-9 тыс. рублей (в зависимости от версии). Я же сегодня начну серию статей и покажу на своем примере, как собрать устройство не хуже за скромные деньги. Предварительные расходы на устройство составляют до 1.5 тыс. рублей (в моем случае вышло 900 рублей).

Что нам для этого понадобится?

1. web-камера без ИК(IR-инфракрасный) фильтра (если он есть, то будем вынимать)

2. Светодиоды инфракрасные от 1 до 4 штуки (я использую 3)

Если у Вас нету web-камеры (которую придется "сломать" в случае наличия ИК фильтра), то рекомендую приобрести камеру Playstation 3 Eye. Цена этой камеры составляет около 1300 рублей, но купить ее можно дешевле. При этом камера обладает довольно широким углом обзора, что удобно, если вы не хотите случайно выпасть из "кадра" во время боя, а так же имеет высокий показатель быстродействия (до 120 кадров/сек), что так же делает трекинг более точным.

Как купить дешевле?

Способ №1:

Купить игру EyePet для PS3 в наборе с которой идет эта камера, сейчас на яндекс.маркете (СПб) я вижу ее в продаже за 890 рублей, что в 1.5 дешевле, чем покупать ее отдельно.

Способ №2:

Купить ее б/у. Я лично так и сделал, в итоге потратив смешные 400 рублей.

Как это работает?

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

Т.к. диоды используются инфракрасные, то ИК фильтра в камере быть не должно, либо его придется извлечь. Если он есть, то свет диодов будет сильно ослаблен и трекинг будет работать плохо, или вообще не работать.

Пример работы (пока не мой):

Практическая часть - удаляем ИК фильтр

Удалять ИК фильтр я буду на примере камеры Playstation 3 Eye. Процедура довольно сложная, причем не из-за того, что нужны навыки особые, а тупо тяжело выковырять линзу

1. Вытаскиваем сзади затычки с помощью ножа и откручиваем 4 болтика

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

3. Откручиваем два болта снизу, чтобы снять ножку (подставку) камеры

4. Откручиваем 3 болта сверху платы и по одному с боков (нижние не трогаем)

5. Снимаем остатки корпуса

6. Аккуратно придерживая объектив, откручиваем его сзади (два последних винтика)

7. Снимаем аккуратно объектив, не задевая матрицу... не дай бог поцарапаете - может выйти из строя!

8. И тут начинается самый геморрой. Надо ножом выковырять верхнюю линзу. Место где она стояла отмечено красным заштрихованным кружком. Я для этого очень долго и нудно проковыривал канавку вокруг линзы, втыкая туда кончик ножа (лучше использовать широкий нож), после чего только смог ее вытащить, при этом повредив саму линзу... но с учетом, что мне она больше не нужна, я ее все равно выкинул).

9. После того, как линзу вытащили, собираем все это назад

10. Для того, чтобы лишний свет не мешал четко видеть ИК диоды, надо сделать фильтр. Делается например негатива (фотопленка) или магнитной части (блина) старой дискетки 3.5 дюйма. Я использовал дискету. Вырезается кружок 1.5 см в диаметре и кладется в байонет (корпус объектива) до установки объектива в корпус, либо сверху как-то приделывается.

Полученная камера будет показывать черную картинку, но если Вы возьмете пульт от телевизора, направите на камеру и нажмете какую-либо из кнопок, то Вы увидите яркую точку от ИК излучателя. Если это произошло, то все сделано отлично.

Диоды я заказал SFH485P (их не надо стачивать, они уже имеют хороший угол свечения и хорошую длину волны 880) с ebay, т.к. найти у нас их в наличии оказалось проблемой. А точнее надо ездить искать, что меня не устраивает. В итоге получу я их недели через 2-3, и тогда смогу продолжить статью с показом живых примеров...

Это один из самых удачных проектов 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 могут оказаться чем-то лучше, я не готов отказаться от тех плюсов, что дает это устройство.

После нескольких экспериментов с ардуиной решил сделать простенький и не очень дорогой 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