GPS-корректор на Arduino Nano


Рассматриваемый GPS-корректор предназначен для коррекции показаний электронных часов, у которых имеется кнопка "Коррекция" (например,"Электроника 6.14"). Устройство состоит из трех функциональных блоков: плата Arduino Nano, GPS-модуль GY-NEO6MV2, исполнительный модуль на оптопаре транзисторной PC-817.

Внешний вид GPS-корректора на Arduino Nano

За основу для данной статьи был взят проект GPS часов на Arduino Uno.

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

  1. Плата Arduino Nano (купить на AliExpress).
  2. GPS-модуль GY-NEO6MV2 (купить на AliExpress).
  3. Транзисторная оптопара PC-817 (купить на AliExpress).
  4. Соединительные провода.

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

GPS-модуль передает данные в NMEA формате, который состоит из нескольких строк (предложений), из которых нужно будет извлечь только часы и дату. Эти данные содержатся в строке $GPRMC. Извлечение времени и даты происходит при помощи подсчета запятых в этой строке. Более подробно об этих процессах можно прочитать в уже упоминавшейся статье GPS часы на Arduino Uno.

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

GPS спутники передают время и дату в формате UTC (Universal Time Coordinated - всеобщее скоординированное время), поэтому нужно конвертировать его в местное время. Для своего региона нужно установить соответствующую поправку.

Работа схемы

Схема GPS-корректора на основе платы Arduino Nano представлена на следующем рисунке.

Схема GPS-корректора на основе платы Arduino Nano

Плата Arduino управляет всеми процессами на этой схеме: она принимает данные от GPS модуля, извлекает дату и время из строки $GPRMC и в начале каждого часа подает сигнал коррекции в виде импульса длительностью 1 секунда с вывода D5 на исполнительный модуль (коллектор и эмиттер оптопары присоединяются параллельно кнопке "Коррекция" часов).

Контакт передачи Tx GPS модуля подсоединен к контакту Rx (pin 2) платы Arduino (этот контакт сделан входом последовательного порта с помощью соответствующей библиотеки). В данной схеме использован GPS-модуль GY-NEO6MV2, функционирующий на скорости 9600 бод/с, плата Arduino (ее последовательный порт) также сконфигурирована на работу со скоростью 9600 бод/с с помощью команды “Serial.begin(9600)”.

Основная цель работы схемы - подача импульса длительностью 1 секунда на контакт D5 платы Arduino. По этому импульсу и будет корректироваться работа интересующих нас электронных часов. Длительность импульса 1 сек можно уменьшить до 100-300 мс.

Тестирование работы проекта

После того как аппаратная часть проекта будет готова, необходимо загрузить программу в плату Arduino и устройство начнет работать. Для тестирования работы проекта мы к контакту D5 платы Arduino подключили вместо оптопары светодиод . Он будет загораться на 1 секунду в начале каждого часа - это будет свидетельствовать о правильной работе устройства.

Внешний вид GPS-корректора на Arduino Nano

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

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

Производится вывод текущего значения часов (Hours) и старого значения часов (oldHour). Как только разница между ними становится равной 1 это значит что наступил новый час - в этот момент времени производится формирование импульса длительностью 1 секунда на контакте D5 платы Arduino и в окно монитора последовательной связи выдается слово "Congratulations" (что означает поздравления).

Видео работы устройства - https://yadi.sk/i/RDECSHFL2RQtjg.

Исходный код программы (скетча)

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

(Проголосуй первым!)
Загрузка...
1 298 просмотров

Комментарии

GPS-корректор на Arduino Nano — 2 комментария

  1. Привет.Думаю,что проще сделать отработку часового импульса.
    if(Second==59&&Minute==59)digitalWrite(5, HIGH);
    else digitalWrite(5, LOW);

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *