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

Использование смартфона для GPS-слежения

Чтобы использовать смартфон с функцией GPS в качестве GPS-трекера или маяка, нужно немного поработать с программным обеспечением. Сделать своими руками GPS-трекер из телефона на базе Android, Windows Mobile или iOS очень просто, никакого вмешательства в его конструкцию не понадобится. Если смартфон будет применяться как автомобильный трекер, придется выполнить несложные манипуляции по его подключению к электросети ТС.

Существует несколько приложений, позволяющих превратить смартфон в трекер. Для устройства на платформе Android можно скачать на Google Play приложение Loki, запустить его на смартфоне и выполнить настройки. Рекомендуется активировать такие функции:

  • автозапуск;
  • уведомления (по желанию);
  • внешнее питание (использование альтернативных настроек при подключении к внешнему источнику питания);
  • полное пробуждение (по желанию);
  • обработка команд.

Для навигации (определения местоположения) рекомендуется установить интервал обновления данных один раз в минуту, для отсылки SMS-сообщений при исчезновении связи с сервером ограничение по времени – 5 минут. Настройки в разделе «События» осуществлять в соответствии с собственными потребностями.

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

Также для Android можно использовать приложение GPShome Tracker, а для Windows Mobile – GpsGate Client for Pocket PC. Превращая смартфон в трекер или маячок, крайне важно правильно настроить часовой пояс.

Для определения координат через сети Wi-Fi и GSM, устройство должно иметь доступ к безлимитному мобильному интернету, так что нужно выбрать тариф, позволяющий оптимизировать затраты. Если телефон будет использоваться исключительно как трекер, лучше установить SIM-карту только для выхода в интернет, а не для звонков. Использование GPS-приемника, повышающего точность определения координат, – весьма энергоемкий процесс, так что следует позаботиться об обеспечении питания самодельного трекера. Для этого нужно обрезать нижний конец автовилки (штекера прикуривателя) и вставить шнур зарядного устройства телефона в USB-разъем. Для подключения трекера напрямую к бортовой системе нужно купить понижающий конвертер постоянного тока. А те, кто немного разбирается в электронике, могут собрать аналог конвертера из пары конденсаторов и стабилизатора.

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

Как сделать GPS-маячок своими руками из обычного телефона

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

  • мобильный телефон;
  • GPS/GPRS-модуль;
  • GPS-приемник;
  • переходник (можно использовать старое зарядное устройство с рабочим штекером);
  • нож и паяльник.

Обрезав зарядное устройство со стороны блока питания, нужно зачистить провода и припаять их к плате модуля, а штекер вставить в разъем питания телефона. Затем включается приемник и настраивается телефон. С помощью такого устройства можно отслеживать местонахождение мобильных телефонов, принадлежащих членам вашей семьи. Информация об их координатах будет приходить на мобильник, объединенный с GPS-модулем, в виде обычных текстовых сообщений.

Некоторые операторы сотовой связи предлагают услугу «Маячок», активировать ее можно на любом мобильном телефоне без GPS-модуля. Составляется список контактов абонентов, местонахождение которых требуется отслеживать. Чтобы получить сообщение с координатами, нужно отправить запрос установленной формы.

Можно ли сделать GPS-трекер без телефона

Есть альтернатива использованию смартфона или телефона в комплексе с GPS-модулем – любое устройство с функцией GPS (ноутбук, КПК). Принцип такой же, как для смартфона, – установка приложения, настройки, регистрация устройства на сайте.

А можно ли собрать своими руками сам GPS-модуль и приемник, из которых состоит маяк или трекер? Вот некоторые компоненты, входящие в состав этих устройств:

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

Все эти детали можно купить, а схему устройства – найти в интернете, но далеко не всем под силу разобраться, как сделать 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

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

Как сделать навигатор своими руками

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

Более простой второй способ: GPS-навигатор можно сделать с помощью ноутбука. Для этого понадобится GPS-приемник и собственно ноутбук. Через USB, Wi-Fi или Bluetooth подключаем GPS-приемник. Ноутбук должен сам обнаружить устройство. Потом на компьютер устанавливаем соответствующее программное обеспечение, которое легко можно скачать в интернете.

Программы для создания навигатора

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

Ноутбук в качестве GPS-навигатора

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

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

Приемник выдает следующие данные:

  1. Координаты – широту, долготу и высоту точки, в которой находится
  2. Время по гринвичу – часы, минуты, секунды
  3. Общее число спутников, обнаруженных приемником
  4. Число спутников, с которых принимается сигнал.

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

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

Модуль ЕВ-500 прекрасно подходит для мобильных приложений, так как имеет небольшие габариты и малое потребление тока.

Точность координат зависит от числа спутников, сигнал с которых поступает на модуль, их должно быть не менее 3.

Для обнаружения спутников модуль использует 66 каналов, при этом, если антенна пассивная, потребляет 28 мА. После обнаружения спутников число каналов и, следовательно, потребляемый ток уменьшаются.

Напряжение питания от 3 до 4.2 вольт.

Связь с модулем – по двум равноценным UART.

Выводы UART - TX0,RX0 и TX1,RX1.

На вывод GPS status подключен через резистор светодиод. Пока связь со спутниками не установлена на выходе логическая 1-светодиод горит постоянно, при обнаружении спутников мигает с частотой 1 Гц. После отладки схемы его можно снять.

Вывод V_RTC_3V3 – на этот вывод необходимо подать питание, без этого модуль не запустится. Можно соединить с питанием модуля, но лучше подключить стандартную литиевую батарейку типа CR на 3 вольта, тогда все настройки сохранятся в памяти модуля и после отключения приемника. Потребление RTC всего 1 мкА, так что батарейки хватит надолго.

Питание подается на вывод VIN_3V3.

Антенна подключается на вывод RF_INPUT. Дорожка, соединяющая вывод модуля с фидером антенны должна быть как можно короче с земляным полигоном по бокам. У меня антенна пассивная

35*35 с полигоном под ней 70*70. Запустилась без проблем даже в тумане на лесной поляне. И точность весьма приличная.

Хорошая активная антенна дорого стоит, хороший МШУ вещь не из дешевых. Дешевая китайская антенна, в условиях сильных помех показала себя хуже пассивной, как видно там усилитель не совсем малошумящий. Кроме того питается она от 3,3 вольт минимум, а с модуля подается в линию

2,8 В. Поэтому надо отсекать конденсатором постоянное напряжение на выводе RF_INPUT, вскрывать антенну, заводить внешнее питание - много мороки.

Антенну не стоит размещать рядом с модулем, чтобы шумы от модуля не мешали.

Это на карту GOOGLE нанесены координаты измеренной точки. Расстояние от стенки дома до воды метров 10. Мы с приемником стояли метрах в трех от воды.

После того, как модуль будет распаян на плате, подключено питание VIN_3V3 и V_RTC_3V3, антенна и по свечению светодиода вы убедились, что все у вас работает - надо проверить скорость обмена UART. Это необходимо для программирования USAR(синхронно асинхронный приемопередатчик) микроконтроллера.

Соедините RX1,TX1 или RX0,TX0 через MAX3232(работает от 3 вольт) с COM портом компьютера. Для USB можно спаять переход на FT232RL -недорогая надежная микросхема с драйверами для всех ОС. У меня заработала сразу без проблем.

Проверьте скорость, на которой отзовется модуль, по даташиту это 9600 у меня заработал на 115200. Если не отзовется – перебирайте скорости. Сигнал для этого не обязателен – светодиод может и не мигать. Я пользуюсь терминалом в CVAVR или программой Terminal v1.9b бесплатная и очень удобная.

Обмен происходит по протоколу NMEA 0183.

Обвязка ATMEGA 16 стандартная. Вывод REZET подтянут к питанию резистором 10 кОм. Тактовая частота задается кварцевым резонатором 7.3728 мГц. Питание на АЦП микроконтроллера подается через LC фильтр - дроссель 10 мкГн, конденсатор 1 мкФ. Вывод источника опорного напряжения АЦП AREF соединен с выводом питания АЦП. Разъем для программатора на схеме не показан. К порту B подключен LCD дисплей WH1604B - 4 строки по 16 символов. Подстроечным резистором R2 20 кОм регулируется контрастность. Кнопка на подсветке тактовая с целью экономии заряда аккумулятора.

Между UART модуля и USART микроконтроллера в качестве гальванической развязки установлена микросхема ADUM1201. Максимальная амплитуда импульсов от модуля, если смотреть осциллографом не больше 2,8 В. Микроконтроллер воспринимает импульс, как единицу от 2.5 В. Микросхема поднимет амплитуду импульса до 5 вольт - величины напряжения питания микроконтроллера. Во избежание сбоев ADUM лучше поставить.

AT24C128 микросхема электрически стираемого и программируемого постоянного запоминающего устройства (ЭСППЗУ) с интерфейсом шины I2C – память приемника, где и будут храниться данные всех 200 точек, но об этом позже. Выводы CDL –синхронизации последовательной связи и CDA -последовательной передачи данных и адреса должны быть подтянуты к питанию резистором 4.7-5.1кОм. Вывод WP- защита от записи соединен с GND. Выводы A0,A1- выводы адресации используются, если на шину подключены несколько микросхем, возможны 4 комбинации. У нас одна микросхема, поэтому выводы A0,A1 соединены с GND – адрес равен нулю.

На операционном усилителе собран делитель. Напряжение от аккумулятора делится пополам и подается на вход АЦП микроконтроллера - бит 0 порта A, для контроля величины напряжения литиевого аккумулятора.

Клавиатура для общения с приемником собрана на тактовых кнопках. Кнопки ЧТЕНИЕ и ЗАПИСЬ – тактовые. Кнопка НАВЕДЕНИЕ – с фиксацией. Резисторы 300 Ом нужны для ограничения тока, чтобы случайно не спалить порт микроконтроллера.

Теперь о питании приемника. У меня стоит литиевый аккумулятор на 3.7 вольта, при полной зарядке примерно 4.15 В. Для питания микроконтроллера с кварцем 7.3728 мГц и дисплея WH1604 надо 5 вольт. Хотя в даташите на дисплей и стоит Vdd от 3 до 5 вольт, но при стандартной схеме регулирования контрастности и напряжении питания 3.3 вольта не видно ничего.

На модуль EB-500 желательно подавать 3.3 вольта. На микросхеме LM2623 собран повышающий импульсный стабилизатор на 5 вольт. Микросхема LM2623 разработана специально для цифровой аппаратуры, у нее низкий уровень шумов и минимум обвязки. Конденсаторы C4 и C5 установлены дополнительно для уменьшения шумов.

Питание для модуля EB-500 получаем с выхода линейного стабилизатора LP2980-3.3. Микросхема с очень низким собственным потреблением, потери на ней максимально 50 мВт, очень мало греется, а получаем стабилизированные 3.3 вольта практически без шумов.

Теперь о программе. Использован компилятор .

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

1.$GPRMC,181057.000,A ,5542.2389,N,03741.6063,E,0.47,74.50,190311,A*51

Здесь нас интересует символ под номером 18 (отсчет начинаем с 0) это если это A то данные достоверны (есть сигнал), если V - недостоверны.

2.$GPGGA,181058 .000,5542.2389 ,N,03741.6063 ,E,1,8 ,1.34,115.0 ,M,14.6,M,*54

Отсюда берем почти всю информацию.

181058 .000 - время

5542.2389 ,N - широта

03741.6063 ,E - долгота

1 - GPS fix (0 = Данные не верны, 1 = Позиция зафиксирована, 2 = DGPS (повышенная точность))

8 - количество использованных спутников

1.34 - HDOP, горизонтальная точность

115.0 ,M - высота над уровнем моря

14.6,M - Геоидальное различие - различие между земным эллипсоидом WGS-84 и уровнем моря(геоидом)

Время с момента последнего обновления DGPS, отсутствует.

3.$GPGSV,4,1, 13 ,28,65,075,17,26,53,202,37,15,50,278,17,27,39,290,24*7D

Здесь нас интересует символы номер 11 и 12.

13 - Полное число видимых спутников.

Сразу после включения приемника запускается АЦП (установкой единицы в 6 бит регистра ADCSRA АЦП микроконтроллера) для проверки уровня заряда литиевого аккумулятора. В подпрограмме прерывания по завершению преобразования АЦП забираются и суммируются 100 значений из регистра данных, а затем вычисляется среднее значение напряжения аккумулятора. Если напряжение на аккумуляторе ниже или равно 3.2 вольта на экран дисплея выводится сообщение “Аккумулятор разряжен ”. Предельное напряжение, до которого может разрядиться аккумулятор 2.7 вольта. Лучше покупать аккумулятор с контроллером заряда.

Регистр USART микроконтроллера UCSRB=0x90 это означает, что разрешено прерывание по завершению приема и включен приемник. Функция обработки прерывания по завершению приема состоит в следующем:

Данные забираются из буферного регистра UDR при условии, что (UCSRA&=0x18)==0 ,то есть в регистре UCSRA не стоит флаг ошибки кадрирования и флаг переполнения. Если приемник находится в режиме записи или чтения (переменная flag=1), то данные просто забираются из буфера приемника USART , чтобы не было переполнения буфера. Попытки отключать на это время приемник USART приводили к потере связи с модулем. Если flag=0, принятые из буфера данные анализируются. Если найдено начало строки - символ $ по коду ASCII это 36, вся строка до конца - код 13(возврат каретки) помещается в массив gps. Затем проверяем символы из gps, gps и gps, ищем сочетание RMC, GGA или GSV все остальные сообщения игнорируются. Если сообщение RMC, переменную a приравниваем к элементу массива gps, если GSV – вычисляем из символов, находящихся в gpsи gps число видимых спутников. Если это GGA переходим из функции обработки прерывания в основную программу. В программе сначала проверяем переменную а , если она равна 86 это символ V по коду ASCII - отсутствие сигнала, на дисплей выводится сообщение “Нет сигнала

Если переменная a = 65 - символ A это значит, что появился сигнал. Извлекаем из массива gps, куда помещено все сообщение GGA все интересующие нас данные. Вычисляем время, координаты, число спутников с которыми установлена связь, высоту над уровнем моря. Все эти данные плюс число видимых спутников, вычисленных в подпрограмме прерывания, помещаем в буферы для вывода на LCD, и выводим на экран дисплея. Получается вот такая картинка:

В первую строку выводится широта точки и число спутников, с которыми установлена связь, их семь. Вторая строка – долгота и число видимых спутников - 11. Третья строка – время по гринвичу и высота над уровнем моря или океана.

Для записи данных нажимаем кнопку “Запись”. Все данные сохраняются во внешней памяти микросхеме ЭСППЗУ EEPROM AT24C128 с интерфейсом шины I2C. Память микросхемы организована как 16384 слов по 8 бит в каждом. Внутренне 16384 байта памяти разделены на 256 страниц по 64 байта в каждой. Запись может производиться как побайтно, так и страницами. Для упрощения жизни выбрана постраничная запись. Адрес микросхемы один байт: три старших бита адрес AT24C он всегда 101, последний бит обозначает запись или чтение. Если ноль – запись, единица – чтение. Адресация памяти - два байта, старшие биты номер страницы младшие – номер слова в этой странице. Получается: номера страниц от 0 до 255 это 8 бит плюс номера слов в странице от 0 до 63 еще 6 бит, так что для адресации памяти надо 14 бит. Чтобы получить старший байт берем номер страницы и сдвигаем его вправо на две позиции - два старших бита обнулятся, а в шесть младших переместятся 6 старших бита адреса страницы. Затем тот же номер страницы сдвигаем влево на шесть позиций и получаем младший байт адреса, где два старших бита это два младших бита адреса страницы остальные шесть – нули. Теперь надо запомнить номер адреса внешней памяти для записываемой точки. Для этого используем энергонезависимую память микроконтроллера - EEPROM. Для ATMEGA16 EEPROM составляет 512 байт. Размещаем в EEPROM два массива eeprom unsigned char ad и eeprom unsigned char opred. Массив ad указывает на свободную страницу памяти АТ24С128, единица означает, что страница занята, ноль - свободна. Например: ad=0 означает, что страница 20 памяти АТ24С128 свободна, а если ad=1 , тогда занята. Перед тем, как записать данные во внешнюю память перебираем все элементы массива ad, инкременируя номер элемента g от 0, пока не будет найдено условие ad[g]=0. Адрес страницы внешней памяти будет равен g. Теперь запоминаем соответствие адреса страницы памяти АТ24С128 номеру запоминаемой точки. opred[номер точки]=g (адресу страницы памяти АТ24С128). Если надо стереть данные точки, то в ad[номер стираемой точки] записываем ноль, а в массиве opred перемещаем номера элементов, так чтобы, начиная от номера точки на единицу больше стираемой: opred[номер точки]= opred[номер точки-1], а номер общего числа записанных точек уменьшаем на единицу. Если же надо стереть все данные из памяти, то число записанных точек и массив ad обнуляем. При записи новых данных в память АТ24С128 старые данные стираются. Переменная nomer указывающая на общее число записанных точек так же размещается в EEPROM микроконтроллера.

Запись происходит так:

Нажимаем и удерживаем 50 мс (задержка в 50 мс – защита от дребезга контактов установлена на всех кнопках) кнопку “ЗАПИСЬ”. На экран дисплея в первую строку выводится: “ T очка:(№точки)” номер точки, записанной в EEPROM микроконтроллера при этом инкременируется . Если номер точки больше 200, появляется сообщение “ Память занята ” и приемник выходит из режима запись. Во вторую строку надо ввести с клавиатуры название точки до 16 символов из цифр и строчных букв русского алфавита. Принцип ввода такой же, как в мобильном телефоне: нажимать на кнопку клавиатуры, пока не появится нужный символ. При ошибке набора стирается символ решеткой. Выводы клавиатуры подключены к битам 3,4 , 5 порта D и к битам 2,3,4,5 порта C. Биты порта D сконфигурированы как выходы, биты порта C как входы с подтяжкой. На биты порта D с частотой 5мс подается низкий уровень и при этом считывается значение битов порта С. Например если на PIND.3 подан ноль и логический ноль появился на PINС.2 значит, активна кнопка К4 – 3дежз. Кнопка активна 2.2 секунды - 16 битный таймер T1 запускается с частотой 28800 Гц при появлении нуля на соответствующем бите порта C. При переходе таймера через значение 65535 генерируется прерывание и программа переходит в функцию обработки прерывания по переполнения таймера. Если до истечения 2.2 секунды стала активна другая кнопка, то, как и в случае переполнения таймера - таймер останавливается, а все значения, набранные на ранее активной кнопке, обнуляются. После набора названия точки - нажимаем *. В третью строку выводиться сообщение “Текущая точка? ” Если надо запомнить точку, определяемую приемником в данный момент времени нажимаем *, на дисплей выводится сообщение “Точка записана ” и приемник выходит из режима запись. Если вводятся координаты с карты, тогда нажимаем #, на экране выводится запрос “Широта? ” Вводим координаты широты восемь цифр без точек - 49˚52"16.54" вводятся, как 49521654 затем нажимаем *, выводится запрос “Долгота? ” так же вводится и долгота, вместо 36˚18"51.57" - 36185157 и затем *.

На дисплей выводится сообщение “ Точка записана ” и приемник выходит из режима запись. При записи координат с карты значение высоты не записывается и при чтении координат этой точки высота равна нулю. Запись в EEPROM AT24C128 постранично происходит так:

  1. Формируется условие старта – переход из высокого в низкое состояние на выводе SDA при высоком уровне на выводе SCL.
  2. Передается байт с адресом микросхемы 10100000 последний бит 0 – запись.
  3. Предается первый байт адреса памяти, затем второй байт адреса памяти.
  4. Передаются байты данных, адреса слов в странице при этом инкременируются. Изменения на выводе SDA происходят, когда на выводе SCL низкий уровень.
  5. Формируется условие останова – переход из низкого в высокое состояние на выводе SDA при высоком уровне на выводе SCL.

Для чтения данных из памяти приемника надо нажать кнопку “Чтение” (при этом с 7 бита порта C считывается логический ноль) и на дисплей выводится: “ Точка: ”. Набираем номер точки координаты, которой хотим прочитать, и жмем *. На экран выводятся координаты нашей точки. При вводе номера точки в режиме чтения, на клавиатуре доступны только цифры. Если вводится число номер, которого превышает число записанных точек - выводится сообщение “Нет данных ”, затем возвращается сообщение: “ Точка: ”. Если в памяти прибора нет сохраненных данных, то при нажатии на кнопку “Чтение” выводится сообщение “Нет данных ” и прибор выходит из режима чтения. Читаем из EEPROM AT24C128 так: стартовые, стоповые условия и адресация такие же, как при записи. Адрес, по которому записаны координаты считываемой точки (в программе номер этой точки обозначен переменной nomer_1) находим в массиве opred EEPROM микроконтроллера. Старший байт адреса будет opred>>2, младший opred<<6. Только после передачи второго байта с адресом памяти посылается байт с адресом микросхемы 10100001, где последний бит 1 – чтение. В программе чтение идет побайтно, сначала считываются байты с названием точки. Считывается байт, по номеру кода в считанном байте определяется строка, содержащая код знакогенератора LCD модуля и символ соответствующий этому коду выводится на экран, затем младший байт адреса памяти инкременируется. Так выводятся 16 символов названия точки. Затем считываются байты с данными широты, долготы и высоты точки. После считывания очередного байта младший байт адреса памяти инкременируется. Все считанные параметры помещаются в буферы для вывода на LCD и выводятся на экран дисплея:

Листать данные можно по возрастанию номеров точек цифрой 2 на клавиатуре, по убыванию нулем. Выход из режима чтения #. В режиме чтения данные можно стереть по одной точке или все разом. Выводим на экран точку, данные которой надо стереть и нажимаем *. В конце первой строки появляется “ Стр? ” Для подтверждения *, если нет - #. Если надо стереть все данные, тогда последовательно нажимаем *, появляется “ Стр? ” , жмем на 1, вместо “ Стр? ” появляется “ Все? ” если подтверждение - *, нет - жмем на #. При стирании в массив EEPROM микроконтроллера - ad, указывающим на свободный адрес страницы в памяти AT24C128 записывается ноль в элемент, с номером равным адресу страницы в AT24C128 стираемой точки. Данные из этой страницы стираются при записи в нее других данных, поэтому не стоит отключать приемник в режиме запись, пока не появится сообщение “ Точка записана ”.

В приемнике предусмотрен режим наведения. В этом режиме определяется расстояние и истинный азимут от точки, в которой находится приемник до любой точки, выбранной из памяти приемника. Для перевода приемника в режим наведения нажмем кнопку “Наведение” при этом со второго бита порта D считывается логический ноль. На экран дисплея выводится запрос “Точка: ” необходимо ввести номер точки расстояние и азимут, до которой будет вычисляться, и нажать *. Координаты этой точки помещаются в массив kr размещенный в EEPROM микроконтроллера. На экран дисплея выводится номер и название точки, затем выводится сообщение “Наведение ” и экран дисплея приобретает следующий вид:

В начало четвертной строки выводится азимут (287˚1"48"), за ним расстояние до интересующей нас точки(3284 метра). Так что можно ходить по азимуту, если конечно, компас есть. Магнитное склонение – разница между магнитным и истинным азимутом указано на многих картах. Формулы, по которым вычисляются азимут и расстояние взяты из учебника по геодезии и переработанны для работы с переменной типа float. Координаты точки наведения хранятся в энергонезависимой памяти микроконтроллера, поэтому, если оставить кнопку “Наведение” нажатой и выключить прибор, то после включения прибора продолжится наведение на ту же точку. Для того, чтобы изменить точку наведения надо отжать кнопку, дождаться появления сигнала и набрать номер новой точки.

Дизайн прибора, конечно оставляет желать лучшего но что вышло, то вышло.

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

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
Схема 1.
U1 ИС RS-232 интерфейса

MAX3232

1 В блокнот
EB1 GPS-модуль EB-500 1 В блокнот
D1 Светодиод 1 В блокнот
С1-С5, С12 Конденсатор 0.1 мкФ 6 В блокнот
С8 Конденсатор 100 пФ 1 В блокнот
С9, С10 Конденсатор 4.7 мкФ 2 В блокнот
С11 Конденсатор 0.01 мкФ 1 В блокнот
R7 Резистор 1 В блокнот
J1 Разьем RS-232 1 В блокнот
Antenna1 Антенный разьем 1 В блокнот
L1 Катушка индуктивности 1 В блокнот
В1 Батарея питания 3 В 1 В блокнот
Схема 2.
U2 Микроконтроллер 1 В блокнот
AD1 Микросхема ADUM1201 1 В блокнот
ОУ1 Операционный усилитель 1 В блокнот
AT1 Микросхема AT24C128 1 В блокнот
С6, С7 Конденсатор 0.15 мкФ 2 В блокнот
С13, С17 Конденсатор 0.1 мкФ 2 В блокнот
С14, С16 Конденсатор 22 пФ 2 В блокнот
С15 Конденсатор 1 мкФ 1 В блокнот
R1, R3 Резистор

20 кОм

2 В блокнот
R2 Подстроечный резистор 20 кОм 1 В блокнот
R4 Резистор

10 Ом

1 В блокнот
R5, R6 Резистор

4.7 кОм

2 В блокнот
R8 Резистор

10 кОм

1 В блокнот
Y1 Кварцевый резонатор 7.3728 мГц 1 В блокнот
L2 Катушка индуктивности 10 мкГн 1 В блокнот
DS1 LCD-дисплей WH1604B 1 В блокнот
К1 Тактовая кнопка 1

Думаю для большинства из вас не станет открытием, что абсолютное большинство современных автомобильных навигаторов работают на базе Windows CE, но сама операционка заботливо скрыта производителем от шаловливых ручек пользователя, дабы он не натворил чего лишнего.

Сделано это простым, но радикальным методом – подменой родной графической оболочки Windows CE, на оболочку от производителя устройства, которая запускается при старте Windows. С одной стороны это хорошо – удобное меню, основные функции запускаются в 1-2 клика, лепота одним словом. Но с другой стороны пользователь ограничен лишь тем функционалом, что решил предоставить производитель, возможности установить свои программы не предусмотрено. Однако, установить торжество справедливости очень просто, от вас потребуются лишь GPS-навигатор, дата-кабель, компьютер который умеет работать с Win CE устройствами в режиме Active Sync и пара минут свободного времени.

Внимание! Данная инструкция не является универсальной, но помогает в большинстве случаев. Отклонение от шагов и творческое экспериментирование могут привести ваш навигатор в неработоспособное состояние, которое можно будет вылечить только перепрошивкой. Если вы понятия не имеете зачем вам это делать – не делайте, ибо нефиг!

Итак, как говорил Гагарин: “Поехали!”:

Если, что-то не понятно, то вот картинка где все необходимое выделено:

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

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

З.Ы. Ни в коем случае! Слышите? Ни при каких обстоятельствах! Даже будучи в хлам пьяными, обкуренными, уколотыми (нужное подчеркнуть), не устанавливайте пароль на Windows. В том числе и в целях посмотреть, что получится!

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