Обзор GPS модуля NEO-6M

В этой статье расскажу, как работать с модулем глобальной системы позиционирования (GPS) на чипе NEO-6M (U-Blox). Это очень популярный, недорогой и высокопроизводительный модуль GPS с керамической антенной, встроенным чипом памяти и резервной батарей.

Технические параметры 

► GPS модуль: U-Blox NEO-6M-0-001;
► Встроенная батарейка для быстрого, холодного старта;
► Чувствительность: -161 dBm;
► Скорость обновления: 5 Гц;
► Интерфейсы: UART (выведен), SPI, DDC, IIC;
► Передает координаты в формате: NMEA;
► Скорость подключения по умолчанию по UART: 9600 бод;
► Есть активная антенна;
► Напряжение питания: 3 – 5 В;
► Возможность работы с программами: U-Center и т.п.;
► Размеры платы: 57 х 25 x 15 мм;
► Вес комплекта: 18 г.

Общие сведения

Основа модуля это небольшой GPS-чип NEO-6M (NEO-6M-0-001) от u-blox с шагом контактов 0.1 мм. Для связи с микроконтроллером используется UART (TTL) с поддерживаемой скоростью передачи данных от 4800 до 230400 бод, по умолчанию 9600 бод. Чип способен отслеживать до 22 спутников на 50 каналах с большим уровнем чувствительности -161 дБ при потреблении тока питания всего 45 мА.
Так как рабочие напряжение чипа NEO-6M от 2.7 до 3.6, на модуле установлен стабилизатор напряжения MIC5205 с выходным напряжение 3.3 В.

На модуле дополнительно установлена микросхема HK24C32 (EEPROM) с памятью 4 КБ, которая подключена к NEO-6M через интерфейс I2C и перезаряжаемая батарейка, которая действует как суперконденсатор. С их помощью модуль NEO-6M значительно сокращает определение местоположение, до 1с.
В EEPROM хранятся данные часов, последние данные о местоположении (данные об орбите) и конфигурацию модуля. Батарейка автоматически заряжается при включении модуля и сохраняет данные до двух недель.
Так же, на моем модуле установлен microUSB разъем, с помощью которого можно подключить модуль напрямую к компьютеру, что позволяет получать данные минуя контроллер Arduino.

Светодиодный индикатор NEO-6M:
На модуле GPS NEO-6M установлен светодиод, который показывает состояние определения местоположения.
Не мигает — поиск спутников.
Мигает каждые 1 с — определение местоположения найдено (модуль видит достаточно спутников).

Назначение контактов модуля NEO-6M:
Модуль NEO-6M содержит 4 контакта, шагом 2.54 мм.
GND —  заземляющий вывод питания;
TxD — вывод для передачи данных;
RxD — вывод для получения данных;
VCC — вывод питания 5 В.

Пример №1 — Подключение модуля GPS NEO-6M к Arduino

Необходимые детали:
► Arduino UNO R3 x 1 шт.
► Модуль GPS на чипе NEO-6M с microUSB x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.

Особенность модуля NEO-6M в том, что он начинает выдавать данные по UART после включения. Если у Вас модуль без USB разъема, как у меня, можно воспользоваться обычным TTL конвертором (CH340 или PL2302), в моем случаи в качестве конвертора используется плата Arduino UNO.

Подключение:
В данном примере используем модуль GPS NEO-6M и Arduino UNO R3. Теперь необходимо подключить, выводы Tx и Rx на NEO-6М подключаем к выводам 2 и 3 на Arduino, так как будем использовать программный последовательный порт для связи. Осталось подключить питание GND к GND и VCC к 5V, схема собрана, теперь надо подготовить программную часть.

Программа:
Копируем данный скетч в среду разработки Arduino IDE.

  Скачать скетч

Загрузите скетч и откройте «Последовательный монитор» из Arduino IDE. 

Данные, передаваемые GPS-модулем NEO-6M, соответствуют стандарту 0183 (NMEA).

Пример №2 — Подключение модуля GPS NEO-6M к Arduino с библиотекой TinyGPSPlus

Чтобы не разбирается в стандарте NMEA, воспользуемся библиотекой TinyGPSPlus, которая обрабатываем всю информацию от модуля и предоставить нужную информацию. Подключение модуля NEO-6M и Arduino осталось прождём.

Установка библиотек:
Первым делом необходимо установить библиотеку «TinyGPSPlus«, скачать ее можно в конце статьи или с сайта github.com.

Программа:
После того, как установили библиотеку, можно скопировать ниже скетч и вставить в среду разработки Arduino. Данный скетч передает данные о местоположении (широта, долгота и высоту ) и UTC (дата и время) на последовательный порт.

  Скачать скетч

Открываем мониторинг порта, где можем увидеть данные.

Описание скетча:
Скетч начинается с подключением библиотеки TinyGPS и SoftwareSerial. Затем указываем вывода arduino, к которым подключен GPS-модуль NEO-6M, и переменную, которая хранит скорость передачи данных GPS по умолчанию.
Так же, создаем объект TinyGPSPlus, для получении специальных функций, связанным с библиотекой. Затем создаем программный последовательный порт, gpsSerial через который мы можем общаться с модулем.

В функции setup, инициализируем последовательную связь с ПК, а также с модулем GPS.

В функции loop вызываем displayInfo() функцию, которая печатает информацию о местоположении (широта, долгота и высота) и UTC (дата и время). Если прошло 5000 миллисекунд и в программный последовательный порт не поступили никакие символы, выдается ошибка «Нет обнаружения GPS».

Другие функции в библиотеке TinyGPS:
Есть несколько полезных функций, которые можно использовать в библиотеке.
gps.speed.value() — Функция возвращает текущую путевую скорость в сотых долях узла.
gps.course.value() — функция возвращает текущий курс земли в сотых долях градуса.
gps.satellites.value() — Функция возвращает количество видимых участвующих спутников.
gps.hdop.value() — функция возвращает уменьшение точности по горизонтали.

Ссылки
  Библиотека TinyGPSPlus

Купить на Aliexpress
  Контроллер Arduino UNO R3 на CH340G
  Контроллер Arduino UNO R3 на Atmega16U2
  Провода DuPont, 2,54 мм, 20 см
  Модуль GPS на чипе NEO-6M
  Модуль GPS на чипе NEO-6M с microUSB

.

Один комментарий к “Обзор GPS модуля NEO-6M”
  1. У вас на всех картинках модуль с пятью выводами, а в тексте — «четыре».
    А пятый вывод — PPS — важнее всех остальных, потому что без них оно может работать через USB, а функциональность пятого ничем не заменить. Он выдает один импульс в секунду, и с его использованием время можно синхронизировать на порядок точнее, чем без него — до десятка-другого, а то и до единиц микросекунд.

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

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