GPS часы для радиолюбителя


Rob Engberts - PA0RWE, Netherlands
Сайт: http://pa0rwe.nl

В данной статье радиолюбитель из Нидерландов предлагает замечательную и очень простую конструкцию часов для радиолюбителей на базе Arduino.

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

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

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

Схема
Схема


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

 

<-- Информация на дисплее

Библиотеки:

https://learn.adafruit.com/adafruit-ultimate-gps-featherwing/arduino-library
https://bintray.com/olikraus/u8glib/Arduino

Downloads:  Скетч для Arduino


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


Я немного доработал программу и добавил возможность отображения местного времени (в моем случае +3 часа). Для этого на вывод D2 ставим переключатель, замыкаюший-размыкающий этот вывод на "Землю". Для другой тайм-зоны необходимо изменить цифру в скетче (смотрите комментарии). Сразу отмечу, что в моем варианте есть "глюк" в отображении местного времени в ночной период (с 0 до 3 ч). Лень разбираться с этим. Если кто-то поправит программу прошу поделиться.

Доработанный скетч здесь: gps_display_cor_time_v2.ino

Следующая модернизация заключалась в том, что я отказался от платы 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 г.

Публикация в других источниках разрешена со ссылкой на автора и сайт "Радиофанат" - http://rfanat.ru