Меню

Gps 10hz своими руками

GPS Tracker на ардуино своими руками

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

В результате, при наличии соединения, получим ответ от сервера. То есть, фактически, мы уже умеем отправлять данные о координатах, если сервер принимает их по 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

Литература

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

Для компиляции кода для ардуино нужно импортировать библиотеку tinygps.

Источник

Gpsdo 10mhz своими руками

Subaru Impreza WRX STI typeR «Kunoichi» › Бортжурнал › Бюджетный 10Hz GPS-ресивер своими кривыми руками.

Пролистайте комментарии, там много важных и полезных дополнений и обсуждений от участников сообщества!

Всё описанное ниже тестировалось мной только на андройд-смартфонах. Если решите повторить — на свой страх и риск, мало ли что пойдет не так)

Как только я начал посещать Кузбасское кольцо — сразу задумался о телеметрии. На треке конечно есть отсечка, но хотелось бы чуть больше инфы о прохождении круга, чтобы видеть где и как я еду, анализировать и делать выводы. Да и бывает что отсечка не работает + за неё надо немного доплатить.

Есть два варианта решения этой проблемы:

— Готовые приборы для измерения всего и вся, аля Racelogic и его аналоги фабричного и кустарного производства. Из плюсов — всё могут, всё умеют. Из минусов — цена. Даже самодельные аналоги наших народных умельцев стоят более 10 т.р. Возможно когда-нибудь приобрету себе такое устройство.

— Различные программы для смартфонов типа Racechrono, Circuit tools и т.д. Из плюсов — не дорого, удобно (смартфон всегда под рукой, информация выводится на большой и красочный дисплей телефона), достаточно функционально (измеряет время круга, время прохождения сектора, можно мерить перегрузки встроенным g-сенсором, накладывать показания телеметрии на видео). Из минусов — встроенные в смартфон GPS-приемники имеют частоту обновления 1Гц (раз в секунду), чего вполне хватает для навигации, но для телеметрии — неприлично мало, логи получаются «рваными», возрастает погрешность. Поэтому в дополнение к этим программам желательно докупить внешний 10Гц GPS приемник, стоимость которого опять же подкрадывается к 10 т.р.

Покопавшись в интернете, я наткнулся на интересный англоязычный пост — sub-$50 DIY 10hz Bluetooth GPS Receiver. В котором рассказывается как сговнякать из недорогих элементов рабочий 10-герцовый блютуз GPS-приемник стоимостью менее 50 баксов. Взяв эту статью за основу, я замутил приемник стоимостью около 10 долларов.

Для этого заказал с али-экспресса:

Я покупал детали у этих продавцов, все дошло в рабочем состоянии, примерно за 2 недели. Также понадобилась пара проводков, паяльник, бокорезы и 3Д-принтер для изготовления корпуса) Это не обязательно — можно уложить все в любую коробочку.

Когда все пришло — соединил модули проводами по следующей схеме:

На цвета проводов не смотрите, там всё может быть напутано. Ориентируйтесь на подписи контактных площадок на платах. 2 провода от GPS приемника вообще не понадобятся — отрезаем нафиг. Обращаю внимание: RXD гпса паяется к TXD блютуса. TXD гпса паяется к RXD блютуса. Ну с плюсом и минусом трудно запутаться. Всё. Реально 6 раз ткнуть паяльником.

Читайте также:  Дверные откосы ламинатом своими руками

Теперь можно подать питание (рабочее напряжение устройства 3,3 — 5 вольт) от любой телефонной зарядки или повербанка. Включаем на телефоне блютус. Должно обнаружиться новое устройство HC-06 — это и есть новоиспеченный Bluetooth GPS Reciever. Далее качаем на смартфон программку, запускаем, следуем инструкциям. Она коннектится к гпс-приемнику и меняет его настройки на 10Гц. Затем уже можно укладывать все в напечатанный/склеенный из картона/сколоченный из досок корпус.

uBlox NEO-7M: GPSDO или путь к GPSDO?

Появилась веская причина поднять интересную и всегда актуальную тему — получение точного и стабильного опорного сигнала для узкополосной радиосвязи на высоких частотах. Предложенные ранее решения, например, от уважаемых G3RUH и I2PHD, были неоднократно успешно повторены и показали прекрасные результаты (точность установки частоты определялась мазером на GPS спутнике, а стабильность частоты (значение девиации Аллана) получалась 5*10E(-12) при тау = 10 сек, что соответствует 0.05 Гц на частоте несущей 10 ГГц). Однако было одно «но» — ориентация решения на использование специализированного GPS приемника Rockwell/Conexant/Navman Jupiter GPS, который уже давно снят с производства.

Устоять было не возможно — заказ был размещен на eBay у продавца goodlucksell и получен в Москве уже через 10 дней.

Рис.1. Комплект поставки — плата приемника с модулем NEO-7M и активная антенна

Для подключения приемника использовался стандартный конвертер интерфейсов USB RS232 TTL на микросхеме SiLabs CP2102, который обеспечивает сигналы RXD и TXD с уровнями 3.3 В.

В связи с тем, что прикладываемая активная GPS антенна имела короткий кабель было решено заменить ее на другую обычную активную GPS антенну со стандартным усилением 24 дБ и питанием 3.3В (питание подается по центральной жиле антенного разъема).

Рис.2. Активная безымянная GPS антенна, плата приемника NEO-7M, конвертер USB RS232 TTL

Для конфигурации приемника используется ПО uBlox u-Center V8.11.

Устанавливаем драйвер конвертера USB RS232 TTL, определяем виртуальный COM порт для конвертера.

Запускаем программу u-center и конфигурируем GPS приемник:

Питание GPS приемника +5В также поступает от платы конвертера USB RS232 и подается на встроенный LDO стабилизатор +3.3В.

Для получения выходного опорного сигнала следует подпаяться к контакту 3 — сигнал «Timepulse» модуля NEO-7M (см. схему ниже — TNX K9IVB).

Рис.3. Принципиальная схема GPS приемника на основе модуля NEO-7M

Рис.4. Окно конфигурации выходного опорного сигнала

Устанавливаем требуемую частоту, скважность в режиме захвата/сопровождения. Шаг перестройки частоты может быть 1 Гц, скважность желательно устанавливать 50% для минимизации уровня гармоник.

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

А дело в том, что на анализаторе спектра мы видим совершенно разные картины спектра выходного сигнала в зависимости от установленной частоты. В результате некоторого анализа мы мысленно делим выходные частоты опорного сигнала на два типа — «хорошие» и «плохие» частоты. При этом «плохих» частот существенно больше… Дальнейший анализ показывает, что к «хорошим» частотам относятся частоты, которые образуются от целочисленного деления частоты внутреннего тактового генератора частотой 48 МГц.

Итак, «хорошие» выходные частоты опорного генератора:

«Плохие» частоты — почти все остальные… 🙁

Проиллюстрируем это результатами измерений спектра выходного опорного сигнала.

Рис.5. Спектр выходного опорного сигнала 24.000 МГц

Рис.6. Спектр выходного опорного сигнала 18.000 МГц

Рис.7. Спектр выходного опорного сигнала 16.000 МГц

Рис.8. Спектр выходного опорного сигнала 12.000 МГц

Рис.9. Спектр выходного опорного сигнала 8.000 МГц

Рис.10. Спектр выходного опорного сигнала 6.000 МГц

Рис.11. Спектр выходного опорного сигнала 4.000 МГц

Измеряем фазовый шум с расстройкой 10 кГц от несущей для «хороших» опорных частот

А теперь смотрим спектр выходного опорного сигнала для «плохих» частот

Рис.19. Спектр выходного опорного сигнала на «плохую» частоту 10.000 МГц в полосе обзора 10 МГц

Рис.20. Спектр выходного опорного сигнала на «плохую» частоту 10.000 МГц в полосе обзора 50 МГц

Рис.21. Спектр выходного опорного сигнала на «плохую» частоту 5.000 МГц

Рис.22. Спектр выходного опорного сигнала на «плохую» частоту 6.550 МГц

Рис.23. Спектр выходного опорного сигнала на «плохую» частоту 6.570 МГц

Проверяем выходной опорный сигнал осциллографом

Рис. 24. Выходной опорный сигнал для «хорошей» частоты 6.000 МГц — обратите внимание на малый джиттер (указанный красными стрелками)

Рис. 25. Выходной опорный сигнал для «плохой» частоты 6.570 МГц — обратите внимание на очень большой джиттер (указанный красными стрелками)

Для определения стабильности частоты измеряем девиацию Аллана

Рис.26. Девиация Аллана для «хорошей» частоты 6.000 МГц — здесь вполне хорошие результаты

В результате проведенных измерений и информации, полученной из документации и конференций, наиболее вероятно, что решение получения опорного сигнала в модуле NEO-7M не является решением GPSDO (GPS Disciplined Oscillator), а представляет собой NCO (Numerically Controlled Oscillator), где вставка или удаление импульсов в фиксированный период времени в опорном сигнале происходит не петлей регулирования, а в результате расчета процессора. В результате этого в спектре выходного сигнала появляется высокий фазовый шум и нежелательные продукты преобразования.

Что понравилось:

Что не понравилось:

И, наконец, традиционный вопрос — что делать

Читайте также:  Как сделать резак для пенопласта своими руками

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

Volkswagen Tiguan › Бортжурнал › Самодельный 10Hz GNSS (GPS) — приемник. По цене крепления для RaceLogic`a 🙂

Всем привет!
Посетила меня мысль — а не сделать ли себе высокоскоростной и точный GNSS-Bluetooth-ресивер, для измерения динамики разгона авто. Типа RaceLogic. К тому-же нет ничего особенного в этом устройстве, и его конструкция проста как мычание. (Нет).

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

Не скажу что мне больно уж нужен был этот девайс, но просто стало интересно, что из этого может получится.
За основу взял эту статью — www.drive2.ru/l/505449069775159685/ — вроде все просто. Но оказалось что не очень просто… Но все по порядку.

Что получилось — вот такая коробочка, от датчика движения.

Его куполообразная крышка, как мне показалось, очень подходит для размещения антенны GNSS-приемника. Проделал отверстия напротив светодиодов в модулях, и залил туда термоклея, получились прозрачные, но герметичные отверстия. Красотищща! 🙂

Почему пишу GNSS а не GPS-приемник?
Ответ тут

Что мне понадобилось:
Основа — это модуль на основе NEO-m8n: www.ebay.com/itm/REYAX-RY…-battery-I2C/183150558685 — взял со скидкой в 5$, 800 рублей примерно получилось…

Модуль очень качественно сделан, у него хорошая антенна. Но цена в 2 раза выше его аналога — модуля NEO-8M

Преобразователь уровней (без него виснет) — рублей 10 примерно ( по ссылке 10 штук).

DC-DC регулятор на 3,3 вольта, можно любой, у меня были XC6206P332MR
Они не дорогие, часто применяю.

Модуль зарядки Любой подойдет, для литиевой батарейки.

Ну и сама батарейка. Со старого смартфона идеально вписалась в мой корпус. Выключатель (включатель).

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

Схема соединений не сложная —

Соплемётом приклеил все модули в корпусе, и распаял МГТФ проводом.

Для чего же понадобилась в схеме ардуинка? Вот в этом и оказалась основная сложность. Дело в том, что после выключения устройства, и разрядки батареи, которая распаяна на плате GNSS-модуля, необходимо подключить модуль к компьютеру через UART-переходник, что бы его заново настроить. Ибо по умолчанию скорость работы порта 9600, и передача данных о местоположении только 1 раз в секунду. Еще там пара настроек, которые надо изменить.
Китайцы сделали конечно путный модуль, но не сделали хранение настроек GNSS-модуля в энергонезависимой памяти, как например это сделано в NEO-6m. Вероятно фальшивки гонят…

Принцип действия устройства:
При включении ардуино на скорости 9600 передает все команды по настройке модуля, и сохраняет их. Затем переключается на скорость 230400, и снова передает те же настройки, на всякий случай. И снова их сохраняет. Весь цикл занимает примерно 20 секунд, после чего ардуино засыпает мертвым сном (потребление 20мка), до следующего включения.

Какие изменения по Arduino pro mini пришлось проделать — вырвал DC-DC стабилизатор и светодиод, что бы снизить потребление тока. Кварц пришлось заменить на 14,745mHz — были ошибки на высоких скоростях UART с родным.

В общих чертах — выход ардуины TX соединен через преобразователь логических уровней с входом RX GNSS-модуля. А выход TX этого GNSS-модуля идет на вход RX Bluetooth-модуля. Вроде просто.

По блютус модулю так же сложности — его нужно настроить на скорость 230400, и задать ему имя (это имя будет видеть ваш телефон при поиске блютус-устройств).
Необходима програмка, она тут.

Что бы модуль принял AT-команды настроек, нужно соединить pin34 (KEY он так-то называется) с питанием 3,3V

Одно радует — это все манипуляции с Bluetooth-модулем нужно проделать один раз, они прекрасно сохраняются.

От батарейки, что на фотках, приемник работает примерно 15 часов.

Как использовать. В настройках блютус, в телефоне, нужно добавить устройство, пароль 1234 или 0000.
Проверить работу приемника можно с помощью программы BLUETOOTH GPS

С помощью этой же программы можно заставить работать любую программу, которая использует внутренний GPS-модуль в телефоне, с вашим блютус-модулем. Для этого ставим галочку на главном экране программы «Enable Mock GPS Provider». Перед этим, в настройках разработчика в пункте «Выбрать приложение для фиктивных местоположений» выбрать эту программу. (этот пункт в вашем телефоне может называться по другому)

Для замеров разгона автомобиля удобно использовать супер-программу за пицот рублей Speed Logic

Источник

Adblock
detector