Меню

Часы ардуино с синхронизацией по gps



Digitrode

цифровая электроника вычислительная техника встраиваемые системы

GPS часы на Arduino своими руками

GPS (Глобальная система позиционирования) становится все более популярной в наши дни благодаря ее функциональности и удобству применения в недорогих проектах. GPS – это не только данные о местоположении, но и другая полезная информация со спутников.

В этом обучающем проекте с Arduino мы создадим электронные цифровые часы исключительно на основе модуля GPS. Устройство собирает информацию со спутника в виде длинной строки длиной 70 символов и показывает только дату и время. В этой статье мы покажем вам, как извлечь точную дату и время из строки ($GPRMC), которая была получена с помощью модуля GPS.

Центральным вычислительным элементом данного проекта является плата Arduino Uno на основе микроконтроллера ATmega328. В качестве GPS модуля в данном случае применяется SIM808 EVB-V3.2 компании SIMCOM, который представляет собой высокоинтегрированный модуль с возможностями GSM/GPRS, GPS и Bluetooth. Также для отображения данных (время и день недели) используется буквенно-цифровой ЖК-дисплей 16X2. Схема подключения аппаратной части приведена далее:

Подключение компонентов очень простое, вывод GPS-модуля Tx подключается к выходу Rx (D0) платы Arduino Uno, а контакт Rx модуля заземлен, как показано на схеме. Земли платы Arduino Uno board и GPS-модуля должны быть подключены друг к другу. Дисплей подключен в соответствии с 4-битным режимом работы.

Ниже приведен код (скетч) для Arduino. Программная часть достаточно проста и понятна. Эта программа проверяет данные с GPS-приемника и извлекает только строку $GPRMC, которая содержит дату и время, и отображает ее на ЖК-дисплее.

Источник

Часы ардуино с синхронизацией по gps

Компактный GPS-приемник с OLED-дисплеем сделан из очень дешевых и доступных устройств GPS.
Часы синхронизируются от GPS спутников с точностью до секунды.
На дисплее отображаются координаты, локатор местонахождения, дата и количество принимаемых спутников. Очень удобно при работе в полевых условиях и для синхронизации часов в компьютере при работе цифровыми модами.
В программе использована библиотека для GPS приемников от Adafruit и быстро работающая графическая библиотека от Oliver Kraus.

На схеме вы видите соединения между Arduino-Nano, GPS приемником и OLED дисплеем. Можно использовать другие модули Arduino на базе микроконтроллера ATMega328.В данном случае используется OLED-дисплей с управлением I2C по 2-м проводам.

Если используете управление SPI (4 провода управления) необходимо подправить скетч — это в нем предусмотрено. Считается, что с SPI-интерфейсом дисплей работает более быстро. Но в данном проекте это несущественно. Я испытал оба варианта и разницы не увидел (примечание RA3TOX).


Схема


GPS приемник на макетной плате

Дополнение от RA3TOX

Следующая модернизация заключалась в том, что я отказался от платы Arduino и собрал проект на микроконтроллере ATmega328P. При этом стало возможным отказаться от кварца и использовать внутреннюю синхронизацию микроконтроллера с с частотой 8 МГц. Это никак не повлияло на точность показаний часов, т.к. данные берутся со спутника.
Кроме того, в связи с понижением тактовой частоты, несколько снизилось электропотребление всего устройства, что немаловажно при работе от автономного источника в полевых условиях. При питании от батареи 5 В конструкция потребляет ток 130. 150 мА.

Файл прошивки для микроконтроллера можно взять здесь: gps_display_cor_time_v2.hex.

Фьюзы для микроконтроллере ATmega328P с внутренним генератором на 8 МГц в программе AVRDUDE-PROG привожу на рисунке.

Еще раз напомню, что без Arduino можно обойтись в любом вашем проекте! Для этого потребуется только микроконтроллер и кварц, если он необходим. Естественно, вам понадобится программатор. В статье «Как получить .hex из Arduino?» описан процесс получения файла для «заливки» в микроконтроллер.

Вот что у меня получилось:

Так конструкция выглядела при отладке (питание от литиевого аккумулятора 3,6 В):

Соединений не много, поэтому монтаж выполнен проводами.
Дисплей и GPS-приемник подключены через разъемы.

Окончательный вариант собран на макетке размером 4х6 см.


Экемпляр, собранный в подарок на 70-летие Олегу Архипову — RW3TJ.

Удачи и творческих успехов!
Николай Большаков — RA3TOX.

Ноябрь 2017 г.

Источник

Мир микроконтроллеров

Популярное

GPS часы на Arduino Uno

В настоящее время вокруг земли летает достаточно много GPS спутников, которые обеспечивают точное определение местоположения любой точки на Земле. Но вместе с координатами (широта и долгота) они передают и много других полезных данных, например, время, дату, высоту над уровнем моря, угол и т.д. Более подробно эти вещи мы уже рассматривали в статье про считывание GPS данных с помощью персонального компьютера и Arduino Uno, в этой же статье мы рассмотрим проектирование GPS часов на основе платы Arduino Uno, использующих данные о времени и дате, получаемые с GPS спутников. Эти GPS часы будут весьма точными и показывать дату и время с точностью до миллисекунды.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. ЖК дисплей 16х2 (купить на AliExpress).
  3. GPS модуль.
  4. Источник питания.
  5. Соединительные провода.

Принципы работы устройства

GPS модуль передает данные в NMEA формате, пример этих данных можно посмотреть на рисунке ниже. NMEA формат состоит из нескольких строк (предложений), из которых нам нужно будет извлечь только время и дату. Эти данные содержатся в строке $GPRMC, которая содержит время, дату, координаты и другую полезную информацию. Длина строки $GPRMC составляет примерно 70 символов. Мы уже рассматривали пример извлечения нужных нам GPS данных из строки $GPGGA в проекте определения местоположения автомобиля, здесь же мы будем извлекать данные из строки $GPRMC.

Читайте также:  С чем синхронизировать заметки через itunes

Строка $GPRMC, в основном, содержит скорость, время, дату и местоположение:

$GPRMC,123519.000,A, 7791.0381,N, 06727.4434,E,022.4,084.4,230394,003.1,W*6A

В следующей таблице представлен перевод (описание) данных GPS из строки $GPRMC.

Идентификатор Описание
RMC Recommended Minimum sentence C
HHMMSS.SSS Время в формате: час минута секунда и миллисекунда
A Статус // A=active (активный) and V= void (пустой, недействительный)
Latitude Широта (координата)
N Направление: N=North (север), S=South (юг)
Longitude Долгота (координата)
E Направление: E= East (восток), W=West (запад)
Speed Скорость в узлах (1 узел= 1,87 км в час)
Angle Угол места в градусах
Date Временная отметка (дата в UTC, Universal Time Coordinated — всеобщее скоординированное время)
MV Магнитное возмущение
W Direction of variation E/W (направление изменения E/W)
CMD (*6A) Данные контрольной суммы

В большинстве случаев эта строка ($GPRMC) используется для извлечения данных времени, даты и скорости.

Мы можем извлечь время и дату из строки $GPRMC при помощи подсчета запятых в этой строке. Таким образом, с помощью Arduino мы будем находить в GPS данных строку $GPRMC и сохранять ее в массиве, в котором время (в 24-часовом формате) может быть найдено после одной запятой, а дата – после 9 запятых. Время и дата потом сохраняются в соответствующих строках.

GPS спутники передают время и дату в формате UTC (Universal Time Coordinated — всеобщее скоординированное время), поэтому мы должны конвертировать его в местное время. В нашем проекте мы добавили к этому времени 5:30 чтобы получить время, соответствующее времени в Индии, вы для своего региона можете легко узнать соответствующую поправку.

Работа схемы

Схема устройства представлена на следующем рисунке.

Плата Arduino управляет всеми процессами на этой схеме: она принимает данные от GPS модуля, извлекает дату и время из строки $GPRMC и показывает их на экране ЖК дисплея.

Контакты данных ЖК дисплея D4, D5, D6, D7 подсоединены к контактам 5, 4 , 3, 2 Arduino, а контакты управления ЖК дисплея RS и EN подсоединены к контактам 7 и 6 Arduino. Контакт передачи Tx GPS модуля подсоединен к контакту Rx (pin 10) платы Arduino (мы этот контакт сделаем входом последовательного порта с помощью соответствующей бибблиотеки). Контакты земли GPS модуля и платы Arduino соединены вместе. В данной схеме мы использовали GPS модуль SKG13BL, функционирующий на скорости 9800 бод/с, плату Arduino (ее последовательный порт) также можно сконфигурировать на работу со скоростью 9800 бод/с с помощью команды “Serial.begin(9800)”.

Исходный код программы

В программе мы первым делом должны подключить необходимые библиотеки и инициализировать контакты для подключения ЖК дисплея и последовательной связи. Также необходимо инициализировать необходимые переменные и массивы для хранения данных. При помощи библиотеки для последовательной связи (Software Serial Library) мы можем осуществить последовательную связь на контактах 10 и 11 (мы будем использовать только 10-й) и сделать их выводами Rx и Tx соответственно. По умолчанию последовательная связь в плате Arduino доступна на ее контактах 0 и 1, но благодаря библиотеке для последовательной связи (Software Serial Library) мы дополнительно к этому можем реализовать последовательную связь и на контактах 10 и 11 Arduino.

#include

LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
#include
SoftwareSerial Serial1(10, 11); // RX, TX
. .
. .

После этого мы инициализируем последовательную связь, ЖК дисплей и показываем приветственное сообщение на ЖК дисплее. Затем извлекаем время и дату из принятой строки.

Затем конвертируем время и дату в десятичный формат и приводим ее ко времени в Индии (UTC +5:30).

Источник

Arduino.ru

GPS Часы

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

Когда то , в советское время была радиостанция МАЯК , и был военный приемник с часами , которые синхронизировались по сигналам точного времени на волне МАЯКА. шесть импульсов и длительность последнего — текщий час. В полночь был самый длинный последний гудок. Это лирическое отступление.

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

Собственно идея проста как мир. В основе GPS позиционирование стоит передача спутниками своего времени и положения с бешенной точностью. использовать это время для синхронизации часов. Для приема использовался чип SKYLAB SKG25A1 , завалявшийся уще с тех времён, когда занимался разработкой навигационных гаджетов . К этому чипу подключается активная антена GPS с кабелем 3 м. Блано сам чип поддерживает подачу питания на активные антены.

В случае отсутствия стабильного сигнала со спутника, время берется с чипа DS1307 c питанием от CR2032. Запись точного времени из синала GPS в DS1307 производится, если расхождение идет в минутах. Можно синхронизировать и секунды, но мне такая точность и не нужна.

Читайте также:  Huawei синхронизация контактов с outlook

Внизу модуль ARDUINO PRO Micro , на камне Leonardo , выбран для удобства отладки работы GPS, так как имеет на борту два порта RS232. Внизу платы кнопка RESET , и стабилизатор на 3.3 вольта, так как на ARDUINO PRO Micro он не работал, вернее наботал на 4.7 вольта. В качестве индикатора применен набор на МАХ7219 и матрицы 8Х8.

С четырмя индикаторами выглядит так:

В качестве рассеивателя была выбрана пленка от папки доя бумаг, типа уголок, красного цвета, как она работает видно на сл фотографии.

Ну и индикация сделана сл образом, если мигает двоеточие, между минутами и часами — это сигнала со спутника нет, если в этом месте точка медленно сползает сверху вниз — то время синхронизировано со спутником.

Источник

Модули GPS в Arduino: подключение NEO 6 и обзор программ U-Center

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

Обзор программ для работы с GPS на компьютере

U-Center

Ссылка на скачивание – https://www.u-blox.com/en/product/u-center-windows

Программа u-center используется для работы с GNSS-проемниками от фирмы U-Blox. С помощью этого программного обеспечения можно тестировать точность позиционирования, изменять конфигурацию ресивера и проводить общую диагностику, обрабатывать полученные данные и отображать их в режиме реального времени. Координаты приемник получает с помощью GPS, ГЛОНАСС. Полученную информацию можно экспортировать и показывать в картах Google Maps, Google Earth. Программа позволяет создавать двухмерные диаграммы, гистограммы и другие виды графиков. u-center можно использовать при работе с несколькими приемниками.

Возможности программного обеспечения U-Center:

  • Работа с Windows;
  • Чтение NMEA , SiRF данных, UBX;
  • Вывод полученных данных в виде текста и графиков;
  • Запись данных, и воспроизведение;
  • Полное управление модулем GPS;
  • Возможность изменения конфигурации GPS-модуля;
  • Запись новой конфигурации в модуль;
  • Запись конфигурации в файл формата .txt;
  • Обновление прошивки модуля;
  • Возможность холодного, теплого и горячего старта модуля.

Программа позволяет оценивать работоспособность приемника, анализировать его быстродействие и устанавливать его настройки. Помимо U-Center могут использоваться и другие программы, например, Visual GPS, Time Tools GPS Clock и другие.

Visual GPS

Эта программа используется для отображения GPS данных по протоколу NMEA 0183 в графическом виде. Программа позволяет записывать лог GPS данных в файл. Существует два режима работы в программе – в первом Visual GPS связывается с приемником GPS, а во втором Visual GPS считывает показания NMEA из файла. Программа имеет 4 основных окна – Signal Quality (качество сигнала), Navigation (навигация), Survey (исследование), Azimuth and Elevation (азимут и высота).

Time Tools GPS Clock

Эта программа работает на Windows и любых рабочих станциях, она проверяет время со стандартного приемника времени NMEA GPS, который подключен к компьютеру, и позволяет синхронизировать время на ПК. Отображается информация о времени, дате, состоянии GPS, полученная от приемника. Недостатком программы является невозможность высокоточного определения времени, так как GPS-устройства не имеют секундного импульса для последовательного порта компьютера.

GPS TrimbleStudio

Ссылка на скачивание http://softwaretopic.informer.com/trimble-gps-studio/

Программное обеспечение используется для работы с приемником Copernicus в Windows. Программа отображает принимаемые навигационные данные. Полученные координаты можно отобрать на картах Google Maps, Microsoft Visual Earth. Все установленные настройки приемника можно сохранить в конфигурационном файле

Fugawi

Ссылка на скачивание http://www.fugawi.com/web/products/fugawi_global_navigator.htm

Программа используется для планирования маршрута, GPS навигации в реальном времени. Программа позволяет записывать и сохранять маршруты и путевые точки на картах. Навигация производится как на суше, так и на воде и в воздухе. В программе используются различные виды цифровых карт – топографические карты, стандарты NOAA RNC, отсканированные копии бумажных карт, Fugawi Street Maps.

3D World Map

Ссылка на скачивание www.3dwamp.com

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

Обзор GPS-модулей для Ардуино

Модуль EM-411. Устройство создано на базе высокопроизводительного чипа SiRF Star III, который обладает низким потреблением энергии. Модуль имеет большой объем памяти для сохранения данных альманаха, поддерживает стандартный протокол NMEA 0183. Время холодного старта составляет около 45 секунд.

VK2828U7G5LF. Этот модуль построен на базе чипа Ublox UBX-G7020-KT. С его помощью можно получать координаты по GPS и ГЛОНАСС. В приемнике имеется встроенная память, в которую можно сохранять настройки. Модуль оснащен встроенной керамической антенной, работает по протоколу NMEA 0183. Напряжение питания модуля 3,3-5В.

SKM53 GPS. Один из самых дешевых модулей, обладающий низким потреблением тока. Время холодного запуска примерно 36 секунд, горячего – 1 секунда. Для позиционирования используются 66 каналов, для слежения 22 канала. В модуле имеется встроенная GPS антенна, устройство обеспечивает высокую производительность навигации при различных условиях видимости.

Читайте также:  Как синхронизировать параметры windows 10

Neo-6M GPS. Приемник производится компанией u-blox. В этом модуле используются новейшие технологии для получения точной информации о местоположении. Напряжение питания модуля 3-5В. Линейка устройств представлена типами G, Q, M, P, V и T со своими уникальными характеристиками. Время холодного старта около 27 секунд.

locosys 1513. Этот модуль поддерживает работу с GPS, ГЛОНАСС, Galileo, QZSS, SBAS. Базируется на чипе MediaTek MT333, который обладает низким энергопотреблением, высокой чувствительностью и стабильной работой в различных условиях. В приемнике имеется поддержка текстового протокола управления. Время холодного старта примерно 38 секунд.

Arduino GPS модуль GY-NEO6MV2

Технические характеристики модуля:

  • Напряжение питания 3,3-5В;
  • Интерфейс UART 9600 8N1 3.3V;
  • Протокол NMEA;
  • Вес модуля 18 гр.;
  • Наличие EEPROM для сохранения настроек;
  • Наличие встроенной батареи;
  • Возможность подключения антенны к разъему U-FL;
  • Время холодного старта примерно 27 секунд, время горячего старта – 1 секунда;
  • Наличие более 50 каналов позиционирования;
  • Частота обновления 5 Гц;
  • Рабочие температуры от -40С до 85С.

Модуль широко используется для коптеров, определения текущего положения малоподвижных объектов и транспортных средств. Полученные координаты можно загрузить в карты Google Maps, Google Earth и другие.

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

Распиновка: GND (земля), RX (вход для данных UART), TX (выход для данных UART), Vcc – питание от 3,3В до 5 В.

Для подключения потребуются модуль GY-NEO6MV2, плата Ардуино, провода, антенна GPS. Соединение контактов: VCC к 5V, GND к GND, RX к 9 пину на Ардуино, TX к 10 пину. Затем Ардуино нужно подключить к компьютеру через USB.

Для работы потребуется подключить несколько библиотек. SoftwareSerial – требуется для расширения аппаратных функций устройства и обработки задачи последовательной связи. Библиотека TinyGPS используется для преобразования сообщений NMEA в удобный для чтения формат.

Проверка работы через программу U-Center

Как упоминалось выше, модуль производится компанией u-blox, поэтому для настройки приемника используется программа U-Center.

При подключении к UART приемник отправляет сообщения при помощи протокола NMEA раз в секунду. С помощью программы можно настраивать передаваемые сообщения.

Чтобы настроить модуль, нужно подключить его через USB-UART(COM-UART) преобразователь. Настроить подключение можно с помощью меню Receiver-Port . Как только будет установлено соединение, загорится зеленый индикатор. Приемник начнет устанавливать соединения со спутниками, после чего на экране появятся текущие координаты, время и другая информация. Все сообщения появляются в окне Messages. В меню View – Messages можно выбрать сообщения, которые будут передаваться к микроконтроллеру. В зависимости от поставленной задачи, можно уменьшить количество отправляемых сообщений, что увеличит скорость обработки данных и облегчит алгоритм разбора сообщений контроллером.

Если не устанавливается связь со спутником, нужно проверить, подключена ли антенна. Затем нужно проверить напряжение питание, оно должно быть 5В. Если соединение так и не устанавливается, можно поместить модуль к окну или выйти на открытую территорию.

Посмотреть передающиеся данные можно через меню View.

Все сообщения начинаются символом $, следующие за ним символы – идентификаторы сообщения. GP- это глобальная система, следующие 3 буквы показывают, какая информация содержится.

RMC – наименьшая навигационная информация (время, дата, координаты, скорость, направление).

GGA – зафиксированная информация позиционирования. Записаны время, координаты, высота, статус определения местоположения, количество спутников.

Проверка работы через Arduino IDE

Работать с модулем можно также через стандартную среду разработки Arduino IDE. После подключения модуля к плате, нужно загрузить скетч и посмотреть на результат. Если на мониторе появится бессвязный набор знаков, нужно отрегулировать скорость интерфейса Ардуино с компьютером и скорость интерфейса модуля с контроллером.

Скетч для вывода данных о местоположении.

# include //подключение необходимых для работы библиотек

SoftwareSerial gpsSerial(8, 9); //номера пинов, к которым подключен модуль (RX, TX)

gpsSerial.begin(9600); // установка скорости обмена с приемником

if (millis() — start > 1000) //установка задержки в одну секунду между обновлением данных

//в библиотеке TinyGPS имеется ошибка: не обрабатываются данные с \r и \n

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

В мониторе порта появятся данные широты и долготы. Также будет получено значение текущей даты и времени по Гринвичу. Установить свой часовой пояс можно вручную – это делается в строке Serial.print(static_cast(hour+8));

Заключение

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

Источник