Gps трекер своими руками из телефона. Регистрируем, настраиваем и устанавливаем GPS GSM маяк своими руками. Полностью самодельное устройство

С системой навигации близко знаком практически каждый человек. Gps помогает быстро и точно определить место нахождения конкретного объекта – человека, автомобиля, других видов транспорта или животных. Самый простой маяк стоит в магазине недорого, а вот более мощный немного бьет по кошельку. Но зачем покупать если реально сделать самому? Из чего и каким образом желающие сейчас узнают.

Самостоятельная сборка gps маяка, из чего сделать, как действовать

ВНИМАНИЕ! Найден совершенно простой способ сократить расход топлива! Не верите? Автомеханик с 15-летним стажем тоже не верил, пока не попробовал. А теперь он экономит на бензине 35 000 рублей в год!

В каждом телефоне, авто, компьютере современного типа есть gps маяк. Программа удобная, простая, а главное продуктивная. Место нахождения любого объекта при её помощи определяется мгновенно. Gps маяк, как самостоятельное устройство пользуется популярностью в кругу автомобилистов и родителей, которые постоянно хотят знать где находится их ребёнок, но не все спешат выкладывать в магазине свои деньги за это устройство. Для таких экономных людей есть идеи, которые помогут им сконструировать маяк слежения gps собственными силами и при минимальных затратах. Сделать маяк для слежения своими руками можно в несколько способов и именно о них сейчас пойдёт речь.

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

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

После этих действий владелец смартфона сможет использовать своё устройство не только для звонков, развлечений и выхода в интернет, а и для слежения за местом нахождения конкретного объекта. Таким простым способом смартфон превращается в полноценный gps маяк.

Чтобы система работала корректно устройство андроид должно иметь версию не ниже 3.2, но лучше если она будет не ниже 4.1.2. Данные о объекте слежения будут отображаться на телефоне в виде смс сообщений или точек на картах Google Maps.

Как смонтировать маяк gps при помощи менее навороченного мобильного устройства

Телефон, который немного уступает мощным мобильным устройствам на операционной системе Андроид тоже сможет стать отличной основой для маяка gps. Чтобы своими руками собрать такое устройство необходимо будет кое-что ещё докупить и показать свои навыки обращения с техническими устройствами. кроме телефона нужно будет запастись переходником –это может быть оборванное зарядное устройство, где уцелела сторона соединения с телефоном. Ещё нужно будет купить GPS/GPRS модуль и приёмник.

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

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

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

Таким маяком просто пользоваться, но дома. Конструкция будет достаточно неудобной для переноски или установке в автомобиле. Это идеальный вариант для тех, кто из дома собирается следить за своими близкими и детьми.

Можно ли сделать маяк без телефона

Прежде чем ответить на вопрос, можно ли своими руками сделать маяк gps без телефона, следует разобраться что являет собой это устройство на самом деле и какие оно имеет особенности. Gps маяк – устройство, которое в основном используется для охраны автомобилей. Имеет компактные размеры, питается от зарядки. Система точно определяет место нахождения объекта, но для её корректной работы внутри устройства должна присутствовать сим карта.

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

  • корректную и своевременную передачу сигнала;
  • регистрацию нового объекта слежения о отображение ведомостей о нём;
  • подключиться к интернету – это необходимо для работы gps.

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

Преимущества и недостатки gps маяка, сделанного своими руками

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

  • возможность быстро, без посторонней помощи и больших финансовых вложений сделать надёжное устройство для слежения;
  • даже если придётся покупать дополнительные мелочи для конструирования маяка – это выйдет намного дешевле чем в магазине;
  • в плане функциональности такое устройство нисколько не уступает маякам, которые покупались в магазине.

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

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

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

Если маяк для приёма gps данных человек планирует использовать для своего авто, то лучше купить это устройство в магазине. Когда система слежения нужна исключительно для домашнего использования – сделанный своими руками маяк станет идеальным вариантом. Частое использование таких систем для авто натолкнуло создателей на вариант моноблочной конструкции компактных размеров. Если своими руками делается аналог маяка только при помощи смартфона и специальной программы – использовать для размещения в авто можно. Если маяк создаётся из раздельных элементов лучше оставить его для домашнего использования.

Gps маяк всегда поможет осуществить поиск авто или других, движущихся объектов. Его можно купить в магазине или создать собственноручно. Какой вариант именно выбрать стоит решать, учитывая собственные финансовые возможности, цель, с которой будет применяться устройство и оценивать трезво свои навыки общения с техническими устройствами.

Устал платить за штрафы? Выход есть!

Забудьте о штрафах с камер! Абсолютно легальная новинка - НАНОПЛЁНКА, которая скрывает ваши номера от ИК камер (которые стоят по всем городам). Подробнее

  • Абсолютно легально (статья 12.2.4).
  • Скрывает от фото-видеофиксации.
  • Устанавливается самостоятельно за 2 минуты.
  • Не видна человеческому глазу, не портится из-за погоды.
  • Гарантия 2 года,

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

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

Приветствую! Уже более пяти лет занимаемся разработкой различных устройств для мониторинга автотранспорта, эта статья будет рассказывать про весь процесс – от задумки и макетной платы до конечного этапа производства в серийных партиях. Кому интересно – прошу подкат (много картинок).

Разработка

Мы из тех, кто делает все и сами. Пусть долго, пусть дорого, но в таких случаях все недочеты убираем до момента выпуска, да и винить в случае неудачи никого не нужно. Основные задачи, которые стояли при разработке нового устройства – надежность, наличие акселерометра, работа с любыми устройствами по rs-232, а также, удобство и простота инсталляции для конечного пользователя (купил – поставил – пользуешься). Никаких автоэлектриков и прочих установщиков.

GSM

Из-за перебоев с поставкой Telita в Украину, выбор был сделан в пользу модуля компании Quectel M12. Модуль довольно известный и пришел на смену модулю М10. Он имеет такой же форм фактор как и Телит (SMT), удобен в диагностике неисправностей, т.к. все его выхода выведены по бокам (никакого BGA). В большинстве своем, модуль имеет абсолютно такие же (или очень близкие) характеристики к Телиту. Тут стоит отметить, что на рынке Украины практически все модули имеют одинаковые функциональные возможности с основными различиями только в среде разработке, и тут уже каждый выбирает, что он лучше знает и в чем удобней «писать». Хочется отметить про фишку М12 в виде OpenCPU , который весьма сокращает весь процесс разработки готового девайса, и крайне удобен в освоении.

GPS

Ну, тут вообще интересная история. Изначально все разрабатывалось под чип, который использовали Uranus 625r. Но в момент заказа китайцы заявили, что этот чип снят с производства, и они на все 100% уверены, что новый чип (их же производства) нас удовлетворит чуть менее чем полностью. В процессе переговоров были согласованы pin-to-pin совместимость (а это rx,tx,reset (тут особое внимание, об этом будет написано ниже), земля), этот момент был несколько раз поднят в переписке и устных переговорах. Крайне обрадовало наличие нового Sirf IV и поддержки загрузки эфемерид для работы режима a-gps. Забегая вперед, могу сказать, что если убрать довольно большое количество брака (около 10%, который слава Богу, можно отсеить на этапе сборке устройств) качество самого приемника вполне отличное.

Сборка номер ноль

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

Вот такая вот «идеальная» трассировка:

Небольшой конфуз при разработке:

Ну и основные работники крупным планом:

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

После согласования всех спецификаций плата была отдана в производство и 8 недель для изготовления первой партии были потрачены на поиск\закупку всех запчастей. Примерно через два месяца было получено первые 10 устройств:

Как обычно

После получения первых образцов, обычно, начинается самое интересное – это когда все вроде и правильно, и вроде бы тестировалось долго, а ничего не работает. Или работает, но не так. Просто не работает и уже вроде ничего и нельзя изменить.
Так и случилось. Пришедшие «волшебные» GPS модули просто «молчали». Ставим старые – все работает, прозваниваем новые – должно работать, но «лыжи не едут». Виной тому – использование reseta при первом старте, когда модуль обращается в первый раз к стеку. Китайцы с присущим им удивлением сказали, что «нужно было предупредить» и выслали мануал как вернуть все на место. После поднятия всей переписки и отсылки им, просто пообещали, что такое больше не повториться. Занавес.

ТТХ готового устройства

- старт за 2 секунды, AGPS
- sirf IV (возможность замены на glonass для РФ вариантов)
- память на 250000 точек
- адаптивный режим
- датчик удара\вибрации (акселерометр)
- режим маяка
- удаленный контроль и управление тарифными планами посредством прямых USSD команд
- работа без сервера посредством СМС
- и еще много,

Бонусы

Розничная стоимость устройства на данный момент составляет 180 у.е. Дилерские цены при определенных объемах падают до 110 у.е. На нашем сервисе абонентская плата до конца 2013 года полностью отсутствует при подключении любого количества устройств.
Как обычно, гарантия на 512 месяцев со дня покупки устройства (на АКБ не распространяется).

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



Top