Блок с датойБлок с временемБлок с возрастом сайта
Mr.ALB

    Анатолий Беляев (aka Mr.ALB). Персональный сайт

    Да пребудут с вами Силы СВЕТА!

     

    Ардуино (Arduino). #35

    Часы на GPS-модуле GY-NEO6MV2

    Ранее уже пробовал запускать GPS-модуль GY-NEO6MV2 и получать с него данные, а тут одним подписчиком вновь была поднята эта интересная тема в направлении того, чтобы с помощью этого модуля делать синхронизацию времени на часах Часы на RTC DS3231, с расширенными функциями v3.x. Подумалось, а почему бы сразу не сделать сверхточные часы, у которых не нужно корректировать время. В итоге получился интересный проект. Смотрите далее.

    GPS-часы
    GPS-часы

    Описание

    GPS является аббревиатурой, т.е. расшифровывается как: Global Position System. GPS-модуль предназначен для получения сигналов позиционирования со спутников, которые летают над Землёй. Связь, само-собой, осуществляется в одном направлении – на приём. Поэтому при подключении модуля к Ардуино достаточно подключить вывод Tx модуля с Rx Ардуино. Так как само Ардуино использует последовательный порт Rx/Tx для связи с компьютером, то необходимо для GPS-модуля создать последовательный порт, который бы использовал иные контакты, отличные от 0(Rx)/1(Tx). Для этого можно воспользоваться функцией библиотеки SoftwareSerial. Используя эту библиотеку можно назначить любые выводы под Rx/Tx. В моей программе они назначены на RX_pin = 10, TX_pin = 11. Скорость передачи данных с модуля по умолчанию: 9600 бод. Поэтому в скетче устанавливаем такое же значение при инициализации программного последовательного порта.

    По последовательному порту с приёмника GPS-модуля поступают текстовые символы, поля которых отделены запятыми. В конце строки стоит завершающий символ перевода строки. Формат сообщений соответствует стандарту NMEANational Marine Electronics Association. Несколько подробнее этот формат описан ниже в начале скетча. Отмечу лишь, что посылка с основными данными начинается с кодового слова $GPRMC, поэтому декодировать будем ту сторку, которая имеет вначале это слово.

    Для вывода информации, использую популярный и недорогой дисплей Nokia-5110/3310, для разнообразия, а то лежит место занимает улыбка, конечно можно использовать любой другой дисплей, можно и цветной, или монохромный.


    Схема подключения

    Дисплей Nokia-5110/3310, GPS-модуль, оптрон PS817 подключаются Arduino Nano по следующей схеме:

      GY-NEO6MV2 Arduino Nano
        VCC       +5V
        GND       GND
        TX        10     
        RX        не используется
    
      Nokia-5110  R   Arduino Nano
        RST               3
        CS                4
        DC                5
        DIN               6
        CLK               7
        BL     -[2R2]-    9~ Подсветка
        
      Выход синхонизации
      Arduino     R      PS817
        А0   -[510 Ом]-   1
        GND      -        2    
    

    Схема модуля GPS-модуля GY-NEO6MV2 ниже.

    Схема GPS-модуля GY-NEO6MV2
    Pic 1. Схема GPS-модуля GY-NEO6MV2

    ПОЯСНЕНИЯ

    На дисплее Nokia-5110 выводятся:

    • Режим экрана 1:
      • Время с учётом поясного времени (изменение в настройках)
      • Дата в международном формате: ГГГГ-ММ-ДД
      • Если GPS поймал нужное чило спутников, то дополнительно выводится:
        • Широта Север/Юг
        • Долгота Восток/Запад
    • GPS-часы. Режим экрана 1
      Pic 2. GPS-часы. Режим экрана 1
    • Режим экрана 2:
      • Время с учётом поясного времени (изменение в настройках)
      • Дата в международном формате: ГГГГ-ММ-ДД
    GPS-часы. Режим экрана 2
    Pic 3. GPS-часы. Режим экрана 2

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

    GPS-часы. Нет сигнала
    Pic 8. GPS-часы. Нет сигнала

    Если спутники обнаружены, но их недостаточно для определения координат, то на дисплее выводится только время и дата. При дальнейшем обнаружении достаточного количества спутников, на дисплей начинают выводится и координаты: Широта/Долгота.

    GPS-часы. Недостаточно спутников
    Pic 9. GPS-часы. Недостаточно спутников

    Для управления часами имеется три кнопки управления:

    • SET - долгое нажатие вход/выход в/из меню настройки.
    • SET - короткое нажатие - переход к следующему параметру.
    • PLUS - Прибавить значение.
    • MINUS - Убавить значение.

    Пункт, который может изменятся, отмечен курсором >. На экране помещаются не все пункты меню. Когда курсор доходит до низа экрана и далее нажатие на кнопку SET производит прокрутку пунктов и в нижней строке появляется очередной пункт меню.

    GPS-часы. Меню настроек
    Pic 4. GPS-часы. Меню настроек

    Реализована и функция синхронизации любых внешних устройств (часов и т.п.).

    Работает следующим образом:
    При смене часа на выводе PIN_CORR (A0) выдаётся импульс коррекции. Настройка длительности в меню настроек. Если установлена длительность 0 мс, то импульс не выдаётся. Для управления внешними устройствами рекомендуется к выводу PIN_CORR подключить резистор 510 Ом, который соединить с выводом 1 оптрона PC817. Вывод 2 оптрона PC817 соединить с GND. Выводы 3, 4 - выход управления на внешнее устройство. Оптическая развязка разделить цепь питания часов от цепи питания внешних устройств.
    Подключение оптрона
    Pic 5. Подключение оптрона

    Скетч

    В скетче применена условная компиляция для возможности отладки работы программы. Если убрать комментарии на определение SIMULAR (строка 106), то вместо реальной посылки с GPS-модуля будут подставлены тестовые посылки, по которым можно отладить вывод на дисплей (строки 213-223). Не стал убирать для тех, кто будет использовать какие-то другие дисплей, отличные от Nokia-5110, и ему понадобится отладить вывод на дисплей.

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

    Ниже представлен скетч часов на основе GPS-модуля. Файл со скетчем можно скачать в подразделе Приложение.


    Реализация

    Для проверки работоспособности GPS-модуля использовал Arduino Nano. Можно использовать любое. На контакт VCC дисплея подаю +5 В. Контакты дисплея используемые для SPI пробовал подключать через сопротивления 1.2 кОм, но и без них вполне нормально работает. Для удобства макетирования использую плату расширения под Arduino Nano.

    В первом варианте скетча на дисплей выводились координаты с 4-ю знаками после запятой, в последующих вариантах вывожу уже по 6 знаков после запятой.

    GPS-часы. v1.1
    Pic 6. GPS-часы. v1.1

    Чтобы устранить помехи, подключил параллельно питанию Ардуино два конденсатора: на 0.1 мкФ, и на 470 мкФ 6.3 В. Ниже на фото видно, что на дисплее выводятся только время и дата, что означает недостаточное количество видимых спутников.

    GPS-часы. v1.5
    Pic 7. GPS-часы. v1.5



    GPS-часы

    Продолжительность фильма 0:27 [мм:сс]

    Светодиод на GPS-модуле мигает, что указывает на достаточное количество видимых спутников для получения полной информации: время, дата, широта (Latitude), долгота (Longitude).

    2024-04-14

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

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

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

    2024-04-13

    Приложение

    Используемые библиотеки и программы:

    Анатолий Беляев.

    . Mr.ALB
    Предыдущая страница Страница 36