Доступный GPS-трекинг — «Хакер»
Содержание статьи
Ровно три года назад один из коллег спросил: «Ребята, я хочу определять в
любое время местонахождение моей машины. Например, зайти на сайт и увидеть, где
находится автомобиль на карте Москвы. Какие есть простые, надежные и недорогие
решения?» В то время о недорогих устройствах оставалось только мечтать. Теперь
GPS-трекинг становится доступным каждому.
Что такое GPS-трекер?
Это небольшое устройство, в одном корпусе которого объедены GPS-приемник и
GSM-модем, который, используя сотовую сеть оператора, передает (как правило,
используя GPRS/EDGE) текущие координаты приемника на заранее оговоренный сервер.
Специальное программное обеспечение обрабатывает получаемые координаты и
перекладывает на виртуальную карту так, чтобы месторасположение всегда можно
было посмотреть на специальном сайте. Открыл в браузере карту – и сразу видишь
расположение автомобиля/жены/ребенка 🙂 Подобные решения, хотя и были доступны
отслеживать передвижения своих курьеров или служебного транспорта. При этом
компании, предоставляющие подобные услуги и оборудование, не стеснялись взимать
за обслуживание серьезную абонентскую плату. Сейчас GPS-трекер может купить
каждый и, раз заплатив за устройство, использовать его совершенно бесплатно. А
уж что вы будете с ним делать – следить ли за ребенком, чтобы не терроризировать
его телефонными звонками, наблюдать за нахождением своего автомобиля или просто
использовать для того, чтобы позже изучать свои перемещения (например, во время
путешествия), – решение остается за вами.
В зависимости от сферы применения GPS-трекеры могут сильно отличаются друг от
креплениями и водонепроницаемым корпусом. Питание к ним подается от сети машины,
а сами они могут быть подключены к внешней антенне и разным реле автомобиля,
чтобы передавать координаты только при работающем двигателе. Устройства,
предназначенные для персонального использования, напротив, отличаются
минимализмом и небольшими размерами. Небольшой опрятный девайс, в котором
совмещены GPS-приемник и GSM-модем, легко умещается в сумке или даже кармане.
Одно из подобных устройств – GlobalSat TR-203 – и попало к нам в редакцию.
Как обойтись без GPS-трекера?
Если у вас есть интерес к тому, чтобы
отслеживать свое
передвижение, но нет желания выкладывать деньги за GPS-трекер, то
ситуацию может разрешить коммуникатор с GPS-модулем. Например, для устройств
на базе Windows Mobile существует огромное количество подходящих программ.
Известная отечественная программа для навигации «Автоспутник» позволяет
передавать координаты о расположении объекта на сервис GPShome.ru, правда,
пока в тестовом режиме.А решение «Google Локатор» позволяет узнать, где сейчас находятся ваши
друзья. Установив на свой телефон или смартфон специальную программу, вы
сможете просматривать на карте местоположения своих друзей и сообщать им освоем. Причем в данном случае необязательно даже, чтобы телефон был
оснащен модулем GPS. В случае его отсутствия используется определение
координат по ближайшим базовым станциям сотовых сетей, при этом результат
определения впечатляет своей точностью.
Быстрый старт
В небольшой коробочке уместился сам девайс белого цвета, зарядка с входом
через USB, а также чехол, который теоретически можно повесить на ремень.
Полезность последнего сомнительна с учетом того, что приемник отлично принимает
сигнал со спутников даже из сумки. Девайс изначально поставляется вместе с
SIM-картой и настроен для передачи данных на сервис мониторинга через оператора
координаты на специальный сервер производителя устройство начинает сразу после
первого включения. А вот для того, чтобы наблюдать за месторасположением
телефона, все-таки необходима небольшая подготовительная работа.
Собственно, все что нужно – это зарегистрироваться на сайте
www.GPShome.ru, через
который реализован мониторинг за объектами для пользователей продукции GlobalSat
в России. Для этого необходимо на главной странице кликнуть на ссылку
«Регистрация» и выбрать себе логин и пароль для входа. После авторизации в
системе необходимо на странице «Настройки» создать новый объект слежения –
уникальный идентификатор любого GSM-устройства, который нанесен на коробке (стикер
со штрих-кодами), например 011412000001212. Объекту помимо прочего задается и
идентификатор, который будет отображаться далее на карте. Забегая вперед, скажу,
что подобных объектов (и соответственно GPS-трекеров) может быть несколько.
Быстрый и холодный старт
Позволю себе напомнить несколько важных аспектов использования технологии
GPS. Поскольку возможность определения координат напрямую зависит от приема
сигнала со спутников, то отслеживать перемещения с помощью трекера возможно
только на улице. Для объекта в здании или, например, подземном гараже будутотображаться последние найденные координаты. Второй аспект заключается в так называемых холодном и горячем стартах.
Когда вы покупаете новый GPS-трекер и включаете его в первый раз, то
он «не знает», где находится. Чтобы определить свое местоположение, приемник
начинает сканировать частотный диапазон GPS в поисках нужных сигналов. Этот
процесс называется холодным стартом и может занять некоторое количество
времени, поэтому удивляться, почему прошло уже пять минут, а отчета от
приемника все нет, не нужно – это нормально. Зато, если трекер использовался
недавно, сохраненные данные о расположении спутников, возможно, помогутсправиться с определением координат гораздо быстрее. Такой старт называется
горячим.
Система мониторинга
Если GPS-трекеру уже удалось найти спутники и он успел передать координаты на
сервер, то месторасположение устройства немедленно отобразится на интерактивной
карте. Причем для этого нам понадобилось всего несколько минут. Тут же, на
карте, помимо позиции текущего объекта, можно посмотреть расшифрованную
информацию из последнего отчета трекера: текущие широту и долготу, высоту,
скорость и курс, количество пойманных спутников, уровень заряда батареи, а также
время последнего отчета.
В некоторых случаях может быть полезно изучить перемещения объекта в
через вкладку «История», указав промежуток времени, за который был проделан
путь. В этом случае на карте отобразится уже не просто точка с текущим
месторасположением, а графы, отражающие перемещения объекта. К тому же наличие
истории позволяет вычислить общее расстояние, проделанное трекером, среднюю и
максимальную скорость.
Важная особенность персональных трекеров (и в GlobalSat TR-203 в частности) –
наличие кнопки «SOS». Пожилой человек, ребенок или сопровождающие ценные груз
сотрудники могут немедленно передать на сервер свои координаты с пометкой о
отображаются на карте специальным значком и перечислены на вкладке «События». В
основе GPShome.ru лежит картографический сервис от Google, поэтому для объекта
можно выполнить 100-процентную привязку к местности, отображая его положение не
только на карте, но и на спутниковом снимке, – достаточно перейти в нужный
режим. Увы, серьезная привязка к стороннему сервису подчас выходит боком, потому
как для многих городов, включая крупные областные центры (например, Калуги),
подробной карты нет, а значит следить за расположением объекта в таком случае
можно лишь условно. Все просто: нет карты у Google, нет ее и на GPShome.ru.
Ситуацию отчасти выручает поддержка карт от открытого сервиса OpenStreetMaps, но
коррективы или дополнить их, а значит, вам придется мириться с мыслью об их
сомнительной достоверности.
С другой стороны, продуманные механизмы от Google позволяют использовать
карты мира с максимальной эффективностью, и этим не преминули воспользоваться
разработчики GPShome.ru. Так, например, на карте можно отслеживать столько
объектов одновременно, сколько это необходимо, – идеальный вариант для
предпринимателей, желающих быстро получить информацию о нахождении всех
автомобилей и грузов. Важным аспектом в данном случае является
конфиденциальность данных. Поэтому, в случае необходимости, сервис для приема
собственном сервере.
Какой трекер нужен?
Перед покупкой GPS-трекера необходимо определиться с основной функцией,
которую он будет выполнять. У того же GlobalSat существуют самые разные решения,
начиная с предназначеных для движения грузового транспорта и заканчивая
ошейниками с GPS-модулем для домашних животных. На рынке появляется все больше
производителей подобных девайсов, и если подготовленный читатель не испугается
повозиться с настройкой, то подобное устройство можно приобрести на eBay.com,
где цены начинаются от $50-70. Если главной целью являются контроль за
то лучше обратить внимание на специальные автомобильные трекеры (например,
ЖУК-2М, который представлен на российском рынке). Такие устройства могут
работать до года без подзарядки в самых неприхотливых условиях. Секрет
заключается в том, что большую часть времени устройство находится в пассивном
режиме и лишь с небольшой периодичностью (например, раз-два в сутки) включается,
чтобы отправить координаты на сервер. Благодаря этому они недоступны для
сканирования GSM-сканерами, которые используют угонщики для поиска устройств,
отправляющих информацию о месторасположении автомобиля. Выбор есть!
[По материалам журнала Т3]
Cамодельный gps трекер
Помимо определения местоположения трекер имеет ряд других функций, например, контроль работы двигателя – блокировка в случае угона, или осуществление прослушки салона авто. Различные модели могут замыкать работу электроники, бензонасоса и других систем.
Портативные модели схожи по своему устройству, они представляют небольшой блок с разъемом для питания, гнездом для sim-карты и антеннами. Управление происходит при помощи sms-команд с телефона или другого гаджета.
Самый простой способ стать владельцем устройства – это сделать самодельный gps трекер из смартфона или обычного телефона. Прибор будет не хуже покупного.
Принцип работы прибора похож на работу черного ящика самолета, он фиксирует весь пройденный путь, расход топлива и некоторые другие данные. В начале движения автомобиля прибор автоматически включается и моментально сообщает владельцу об изменении положения транспортного средства.
Достойные модели нередко стоят очень дорого, а простые отличаются сомнительным качеством, если нет необходимости в навороченном оборудовании можно сделать трекер самостоятельно.
GPS трекер из смартфона
Смартфоны имеют встроенный gps-модуль, который используется как трекер. Сделать это очень просто. При помощи приложения Loki(для Android) в личном кабинете требуется настроить все данные, касающиеся объекта наблюдения. Важно проверить настройки даты и времени для точности работы.
Рекомендуется активировать следующие функции, корректирующие работу gps трекера и телефона:
- интервал отправки сообщений;
- автозапуск устройства;
- использование внешних источников питания;
- уведомления.
Когда сервер для gps трекера периодически становится недоступен, приложение автоматически начинает отсылать через равные промежутки времени сообщения, для установления связи.
Разработка GPS трекера с нуля и 512 месяцев гарантии / Habr
Приветствую! Уже более пяти лет занимаемся разработкой различных устройств для мониторинга автотранспорта, эта статья будет рассказывать про весь процесс – от задумки и макетной платы до конечного этапа производства в серийных партиях. Кому интересно – прошу подкат (много картинок).Разработка
Мы из тех, кто делает все и сами. Пусть долго, пусть дорого, но в таких случаях все недочеты убираем до момента выпуска, да и винить в случае неудачи никого не нужно. Основные задачи, которые стояли при разработке нового устройства – надежность, наличие акселерометра, работа с любыми устройствами по 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 на ардуино своими руками / Habr
После нескольких экспериментов с ардуиной решил сделать простенький и не очень дорогой 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 [compatible]
- Arduino Uno [compatible]
- GPS SkyLab SKM53
- SIM900 based GSM/GPRS Shield
- DC-DC 12v->5v 3A converter
Литература
- Оф. сайт Arduino (содержит подробную информацию и о платах, и об их программировании)
- TinyGPS (ссылка на скачивание в середине страницы)
- GPS SKM53 Datasheet
- Описание GSM/GPRS Shield на SIM900
- SIM900 AT Commands
- Документация по Яндекс.Картам
Код
Публикующийся код может быть использован в любых разрешенных законом целях любыми лицами. Качество кода ужасно, поскольку это, всё же, тестовый вариант. Когда допишу до чего-то более красивого, обновлю.
Для компиляции кода для ардуино нужно импортировать библиотеку tinygps.
UPD Код: GDrive
Скетч