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

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

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

     

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

    GPS-модуль GY-NEO6MV2

    Купил на алиэкспрессе GPS-модуль GY-NEO6MV2, с помощью которого можно определить координаты местоположения. Интересно для всяких рыбаков, лесников, грибников и тех, кто не может с помощью телефона определить свои координаты, или находится там, где нет сотовых телефонных станций.

    GPS-модуль GY-NEO6MV2
    GPS-модуль GY-NEO6MV2

    Описание

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

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

    Для вывода информации, полученной с GPS-модуля, использую небольшой OLED дисплей под управлением контроллера SSD1306. Почему OLED дисплей? Потому, что его можно считывать при дневном освещении, что затруднительно с TFT дисплеем.


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

    Схема подключения GPS-модуля GY-NEO6MV2 к Ардуино простейшее: Питание на модуль на контакт VCC подавал и +5 В, и +3.3 В, какой-либо разницы не заметил, в обоих случаях модуль выдаёт необходимую информацию. Сам контроллер GPS-модуля работает от +3.3 В, на плате модуля есть стабилизатор на это напряжение, поэтому модуль можно запитывать напрямую от +5 В Ардуино – удобно, если будет использоваться Arduino Pro Mini, у которой на плате нет стабилизатора на +3.3 В.

    Выходная информация снимается с контакта Tx модуля, его подключаем к программному последовательному порту Ардуино. В моём скетче это цифровой контакт 4 Ардуино.

    Контакт Rx модуля не используется.

    Кому интересно, то схема самого модуля ниже.

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

    Скетч

    Были проблемы с выводом на OLED дисплей информации типа string. Поэтому вывожу координаты в том формате, в котором их выдаёт сам модуль, то есть значение широты и долготы необходимо дополнительно разделить на 100, тогда получим значение в градусах и минутах разделённых десятичной точкой.

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

    Вывод информации на OLED SSD1306
    Pic 2. Вывод информации на OLED SSD1306

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


    Реализация

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

    Проверка работы GPS-модуля
    Pic 3. Проверка работы GPS-модуля

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

    Дополнительные конденсаторы
    Pic 4. Дополнительные конденсаторы

    Этот проект чисто пробный, проверить работоспособность модуля. Какую-то конструкцию не делаю, т.к. до законченности требуется добавить несколько кнопок настройки, чтобы, к примеру, можно было бы устанавливать поясное время. В этом скетче стоит поясное время Самары UTC+4, себе установите Ваше поясное время.

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

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

    2020-12-01

    Приложение

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

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

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