Как работает GPS модуль NEO-6M и как его подключить к ESP32


В различных электронных проектах достаточно часто возникают задачи определения географических координат (широты и долготы) какого-либо устройства и, возможно, скорости его движения. Для решения данной задачи отлично подходят GPS модули. И в данной статье мы рассмотрим принципы работы GPS модуля NEO-6M и как его подключить к модулю ESP32.

Внешний вид проекта подключения GPS модуля NEO-6M к ESP32

Также на нашем сайте мы рассматривали подключение GPS модулей к другим микроконтроллерам (платам):

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

  1. Модуль ESP32 (купить на AliExpress).
  2. GPS модуль NEO-6M (купить на AliExpress).

Принципы работы GPS модуля NEO-6M

Распиновка GPS модуля NEO-6M

Распиновка GPS модуля NEO-6M показана на следующем рисунке. Как видим, он имеет всего 4 контакта: GND, TxD, RxD и VCC. При этом для взаимодействия с микроконтроллером используются контакты TxD и RxD.

Распиновка GPS модуля NEO-6M

Назначение контактов модуля:

GND – общий провод (земля) модуля, его необходимо подключить к общему проводу модуля ESP32.

TXD – передающий контакт GPS модуля, его необходимо подключить к контакту RX модуля ESP32.

RXD – приемный контакт GPS модуля, его необходимо подключить к контакту TX модуля ESP32.

VCC – контакт для подачи питания на GPS модуль, его необходимо подключить к контакту 3.3V модуля ESP32.

Компоненты GPS модуля NEO-6M

NEO-6M – это GSM GPS модуль, удобный для применения в различных проектах. Его компоненты показаны на следующем рисунке.

Компоненты GPS модуля NEO-6M

На плате GPS модуля NEO-6M расположены 5 его основных компонентов. Его первым главным компонентом является чип NEO-6M – это "сердце" модуля. Также в составе модуля имеется перезаряжаемая батарея и модуль энергонезависимой памяти EEPROM. Модуль EEPROM вместе с батареей позволяет хранить данные о времени, последние данные о местоположении и конфигурацию модуля, но он не предназначен для постоянного хранения данных. Без батарейки GPS модуль NEO-6M начинает свою работу с "холодного" старта, что увеличивает время включения модуля до "нормального" состояния. Батарейка в составе модуля начинает автоматически заряжаться при подаче на модуль питания и позволяет модулю хранить данные в течение двух недель после отключения от него питания.

Также на плате модуля имеется понижающий регулятор напряжения, поэтому его можно запитывать от напряжения 5V. Дополнительно в составе модуля имеется разъем UFL, к которому необходимо подключить внешнюю антенну для корректной работы модуля.

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

Внешний вид GPS модуля NEO-6M и антенны к нему

Глобальная система навигации и определения положения (Global Positioning System, GPS) состоит из 31 спутника на орбите Земли. Мы знаем их точное местоположение благодаря тому что они непрерывно передают информацию о местоположении при помощи радиосигналов. Сердцем модуля GPS модуля NEO-6M является бок, разработанный компанией u-blox. Он по размеру очень маленький, но возможности у него впечатляющие. Он может отслеживать до 22 спутников по 50 каналам и потребляет ток всего 45mA во время своей работы. Работает он от напряжения 2.7V ~ 3.6V. Его интересной особенностью является режим энергосбережения, который позволяет уменьшить потребление электроэнергии. В этом режиме потребляемый им ток снижается до 11 мА. Для более подробной информации по модулю NEO-6M вы можете посмотреть даташит на него.

Светодиод-индикатор режима работы

При внимательном рассмотрении на плате модуля NEO-6M вы можете обнаружить маленький светодиод, который используется для индикации его режимов работы:

- не мигает: модуль ищет спутники;

Модуль NEO-6M в режиме поиска спутников

- мигает каждую секунду: местоположение определено (модуль видит достаточное количество спутников);

Модуль NEO-6M в режиме когда необходимое число спутников найдено

Антенна

GPS модуль NEO-6M имеет чувствительность -161 дБм и содержит чувствительную антенну, которая может принимать радиосигналы от спутников. Антенна подключается к UFL разъему модуля.

Внешняя антенна для GPS модуля NEO-6M

Для большинства приложений вне помещений, возможностей антенны, показанной на рисунке ниже, вполне хватит, но для использования внутри помещений для обеспечения стабильной работы модуля может потребоваться активная GPS антенна, запитываемая от 3V.

Схема GPS модуля NEO-6M

Схема GPS модуля NEO-6M представлена на следующем рисунке. Как видите, она достаточно проста.

Схема GPS модуля NEO-6MНа схеме модуля мы имеем регулятор напряжения 3.3V, который отвечает за преобразование входного напряжения 5V в напряжение 3.3V. Также на схеме присутствует модуль EEPROM AT24C33 и батарейка – вместе они образуют временное ОЗУ (RAM), которое может хранить данные времени и местоположения в течение ограниченного времени. На схеме показан и разъем UFL, к которому подключается антенна.

Наиболее часто задаваемые вопросы про GPS модуль NEO-6M

Какая точность у GPS модуля NEO-6M?
Как следует из даташита на модуль NEO-6M, он в идеальных условиях имеет точность определения положения по горизонтали равную 2,5 метра.

Как узнать работает ли GPS модуль NEO-6M?
Подайте питание на модуль, подключите к нему преобразователь UART и установите бодовую скорость 9600 бод. Если модуль работает корректно, то вы должны получать данные от него каждую секунду.

Что такое GPS антенна?
GNSS или GPS антенна – это устройство, предназначенное для усиления и приема радиосигналов, транслируемых на определенных частотах спутниками GNSS (Global Navigation Satellite Systems, глобальная навигационная спутниковая система) и передачи их в GNSS или GPS приемник.

Почему для работы системы GPS нужно 4 спутника?
Для точного определения местоположения нужно именно 4 спутника. Каждый спутник передает сигнал, включающий точное время передачи сигнала и свою точную позицию относительно центра Земли.

Какие частоты использует система GPS?
Все спутники GPS передают сигналы на, как минимум, двух несущих частотах: L1 – 1575.42 MHz и L2 – 1227.6 MHz. Новые спутники могут также использовать частоту L5 – 1176 MHz.

Формат NMEA

GPS передает данные, идентифицирующие местоположение, в реальном времени. Но вместе с этими данными он передает и очень много других данных в формате NMEA – смотрите приведенный ниже рисунок. NMEA содержит несколько строк (предложений) – нам из всей этой совокупности данных будет нужна всего лишь одна строка. Эта строка начинается с $GPGGA и содержит координаты, время и другую полезную информацию. Эти данные относятся к фиксированным данным глобального позиционирования (Global Positioning System Fix Data).

Данные, передаваемые GPS модулем

Мы можем извлечь нужные нам данные из строки $GPGGA при помощи подсчета запятых в строке. К примеру, если вы нашли строку $GPGGA и сохранили ее в массиве, то широта может быть найдена в нем после двух запятых, а долгота – после четырех запятых. После извлечения значения широты и долготы можно поместить в другие массивы.

Приведем пример $GPGGA строки с расшифровкой:

$GPGGA,104534.000,7791.0381,N,06727.4434,E,1,08,0.9,510.4,M,43.9,M,,*47

$GPGGA,HHMMSS.SSS,latitude,N,longitude,E,FQ,NOS,HDP,altitude,M,height,M,,checksum data

В следующей таблице представлен перевод (описание) этих данных GPS.

Идентификатор Описание
$GPGGA Фиксированные данные системы глобального позиционирования
HHMMSS.SSS Время в формате: час минута секунда и миллисекунда
Latitude Широта (координата)
N Направление: N=North (север), S=South (юг)
Longitude Долгота (координата)
E Направление: E= East (восток), W=West (запад)
FQ Данные фиксированного качества (Fix Quality Data)
NOS Номер использованного спутника
HPD Фактор снижения точности при определении положения в горизонтальной плоскости (Horizontal Dilution of Precision)
Altitude Высота над уровнем моря
M Meter (метр)
Height Height (высота)
Checksum Данные контрольной суммы

Далее рассмотрим схему и программу проекта.

Схема проекта

Схема подключения GPS модуля NEO-6M к ESP32 представлена на следующем рисунке.

Схема подключения GPS модуля NEO-6M к ESP32

Объяснение кода программы для модуля ESP32

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Если вы подключите выход GPS модуля NEO-6M к монитору последовательной связи, то вы увидите в нем все те данные из NMEA предложений, которые были показаны на рисунке выше. Один из очевидных способов выделить из множества этих данных необходимые нам данные широты и долготы – это вычленить их из этого потока данных с помощью подсчета количества необходимых запятых в необходимом NMEA предложении, как это сделано, к примеру, в статье про подключение GPS модуля к микроконтроллеру AVR. Но мы упростим себе задачу и будем использовать для получения необходимых GPS данных библиотеку для модуля ESP32 под названием TinyGPSPlus, разработанную энтузиастом Mike Hart. Вы можете скачать ее с репозитория GitHub или использовать для ее установки менеджер библиотек Arduino IDE.

Первым делом в коде программы подключим необходимые библиотеки – у нас это будет всего одна библиотека.

Далее, чтобы иметь возможность работы с этой библиотекой, создадим объект типа TinyGPSPlus.

Затем, в функции void setup(), мы инициализируем два порта последовательной связи модуля ESP32 (Serial и Serial2), чтобы иметь возможность одновременной работы и с GPS модулем, и с компьютером.

Далее запрограммируем функцию updateSerial(). Эта функция представляет собой контур (петлю) обратной связи между портами UART1 и UART2 чтобы мы могли на компьютере мониторить данные, поступающие от GPS модуля.

После этого запрограммируем функцию displayInfo(), в которой мы будем считывать GPS данные широты и долготы с помощью функций gps.location.lat() и gps.location.lng() библиотеки TinyGPSPlus и выводить их в окно монитора последовательной связи.

И, наконец, в функции void loop() мы сначала будем вызывать функцию updateSerial() – она будет полезна для процесса отладки программы. После того как вы отладили программу данную функцию можно закомментарить. Далее мы будем проверять доступен ли serial2. Если он доступен, то мы будем считывать с модуля данные долготы и широты и отображать их в окне монитора последовательной связи.

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

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

Отладка работы GPS модуля NEO-6M

При отладке данного проекта его автор (ссылка на оригинал приведена в конце статьи) столкнулся с рядом трудностей:

  • первоначально он хотел запитать модуль от шины 3.3V модуля ESP32, но GPS модуль при этом не работал, поэтому ему пришлось использовать для питания модуля внешнюю батарею;
  • для работы внутри помещений антенна, использованная в этом проекте, оказалась достаточно слабой. Для более стабильной работы модуля в этих условиях автор рекомендует использовать активную антенну.

Исходный код программы

Источник статьи

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

Комментарии

Как работает GPS модуль NEO-6M и как его подключить к ESP32 — 12 комментариев

  1. Подключил neo6m через USB-TTL(ch340) к порту ноутбука. В программе u-center(8.21) модуль будто видит спутники но не может к ним подключиться и даже не принимает дату и время. в текстовой консоли есть какието данные, но гораздо больше запятых. В чем может быть проблема? может нужно чтото в конфигурации поменять?

    • Честно говоря, не знаю, не подключал таким образом gps модуль к компьютеру. Можете попробовать вот эту статью посмотреть, может она вам чем то поможет

  2. Добрый вечер! Ц меня почему то при подключении ни от 5 ни от 3.3 v модуль так и не работает. Лежал сутки на окне( Может быть сам модуль попался не рабочий? И второй вопрос. При подключении контактов RX-TX и TX -RX скетчи перестают заливаться, IDE не конектится с МК. Как олько отключаю один из контактов,то все норм.

    • Добрый вечер. Ну тут нужно попробовать либо другой модуль, либо попробовать подключать его к другому источнику питания/компьютеру. По поводу отключения контактов на время загрузки программы да, такое возможно, читал где то про это. Не у всех экземпляров модуля это, конечно, проявляется, но судя по имеющейся информации в сети интернет проблема такая иногда все таки встречается

      • Видимо попался плохой модуль. Питал его и от внешних источников разных,увы так и не запустился.
        Благодарю за ответ!

    • А куда он обычно должен идти? И как вы собираетесь использовать внутреннюю схему GPS модуля? В большинстве случаев нам же нужны только его внешних 4 контакта

  3. В тексте указана скорость 9660 - это видимо опечатка. 3.3V недостаточно для работы стабилизатора. Питать можно от 5V платы ESP32 при этом уровни TTL будут 3.3V

    • Да, спасибо, опечатку исправил. В разделе статьи "Отладка работы GPS модуля NEO-6M" написано что при питании от шины 3.3V модуля ESP32 модуль GPS у автора не работал, поэтому он запитал его от внешнего источника

      • Мне кажется если подать питание за стабилизатором модуля, то всё должно работать . На прямую в vcc на пинах - нет.

        • Возможно. Будем надеяться что кто-нибудь попробует так сделать и отпишется здесь о своих успехах

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

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