В этой статье показано, как работать с модулем глобальной системы позиционирования (GPS) u-blox NEO-6M, очень популярным, экономичным и высокопроизводительным модулем GPS с керамической антенной, встроенным чипом памяти и резервной батареей, которая в проектах может быть легко интегрирована с широким спектром микроконтроллеров. В настоящее время чрезвычайно популярны два GPS-модуля NEO-6M — GY-GPS6MV2 и GY-GPSV3-NEO.
Модуль u-blox NEO-6M GPS
GPS-движок u-blox NEO-6M на этих модулях достаточно хорош, а также имеет высокую чувствительность для применения внутри помещений. Кроме того, имеется одна перезаряжаемая аккумуляторная батарея, совместимая с MS621FE, для резервного копирования и EEPROM для хранения настроек конфигурации. Модуль хорошо работает со входом постоянного тока в диапазоне от 3,3 до 5 В (благодаря встроенному регулятору напряжения). Исходная принципиальная схема модуля, заимствованная из сети, показана ниже:
Как уже было сказано, модули GPS основаны на движке u-blox NEO-6M GPS. Номер типа NEO-6M — NEO-6M-0-001, а его версия ROM / FLASH — ROM 7.0.3 (ссылка на PCN UBX-TN-11047-1). Модуль NEO-6M включает в себя один настраиваемый интерфейс UART для последовательной связи, но скорость передачи по умолчанию UART (TTL) здесь составляет 9600. Поскольку сигнал GPS имеет правую круговую поляризацию (RHCP), стиль антенны GPS будет отличаться от обычных штыревых антенн, используемых для сигналов с линейной поляризацией. Самый популярный тип антенны — это патч-антенна. Пластинчатые антенны плоские, как правило, имеют керамический и металлический корпус, и установлены на металлической основе. Они часто упаковываются в корпус. Помните, что положение антенны очень важно для оптимальной работы приемника GPS. При использовании патч-антенны она должна быть ориентирована параллельно географическому горизонту. Антенна должна иметь полный обзор неба, обеспечивая прямую видимость с максимально возможным количеством видимых спутников.
Начальная инициализация
Для быстрого тестирования с помощью компьютера с Windows вам просто нужно установить последовательную связь с GPS модулем с помощью любого адаптера USB-UART, например, модуля преобразователя PL2303 USB-to-Serial Converter . Настройка оборудования довольно проста:
Затем загрузите и установите средство отладки и настройки Windows PC «u-center». После успешной установки запустите настройку программного обеспечения (и оборудования), чтобы передать данные позиционирования, собранные GPS-модулем NEO-6M, в программное обеспечение u-center, чтобы оно могло четко отображать данные / информацию GPS на экране (см. Снимок экрана ниже).
Обратите внимание, что, когда работает модуль GPS, зеленый индикатор на модуле GPS будет мигать (красный — для индикации включения), а цифры, касающиеся времени, широты, долготы и т. д. будут отображаться на экране u-center. В конечном итоге вы должны сравнить цифры, показанные программным обеспечением, с данными, собранными другим надежным GPS-устройством, чтобы убедиться, что ваш GPS-модуль NEO-6M работает достаточно точно.
Подключаем Arduino
Для хорошего начала работы с Arduino вам просто нужно скачать и установить библиотеку «TinyGPS ++», которая является очень классной библиотекой Arduino для анализа потоков данных NMEA, предоставляемых модулями GPS. После этого подключите GPS-модуль NEO-6M к Arduino, как показано в таблице ниже.
Затем откройте один из примеров библиотеки TinyGPS ++ — например, “Full Example” — и загрузите его на плату Arduino. Представленный в библиотеках GPS Arduino код обычно позволяет просматривать последовательный порт GPS, а когда данные поступают от модуля, они отправляются на последовательный монитор в удобочитаемом, понятном и полезном формате (см. Следующее изображение).
Обратите внимание, что примеры, представленные в библиотеке TinyGPS ++, предполагают скорость передачи данных 4800 для модуля GPS, но здесь вам нужно изменить это значение на 9600 для модуля NEO-6M. Данные, передаваемые модулем GPS NEO-6, соответствуют стандарту 0183 Национальной ассоциации морской электроники (NMEA), который поддерживает одностороннюю последовательную передачу данных от одного говорящего к одному или нескольким слушателям. Несмотря на то, что существует множество источников информации о стандарте NMEA 0183, этот особенно полезный — NMEA .
Заметки
Тщательная проверка показывает, что номера деталей некоторых компонентов в модуле NEO-6M (GY-GPSV3-NEO) отличаются от тех, которые указаны в исходной схеме. Например, номер детали регулятора 3.3 В — ME6211C33M5G (S2QJ), а чип памяти — ST432RK. Кроме того, добавление встроенного преобразователя логического уровня поможет нам подключить модуль GPS как к 5-вольтовым устройствам, так и к 3,3-вольтовым устройствам.
Стоит помнить, что приемник GPS должен быть привязан к сигналу как минимум трех спутников, чтобы рассчитать двухмерную позицию (широту и долготу) и отслеживать движение. При наличии четырех или более спутников приемник может определять трехмерное положение пользователя (широту, долготу и высоту). После определения местоположения пользователя блок GPS может рассчитать другую информацию, такую как скорость, направление, трек, расстояние поездки, расстояние до пункта назначения, время восхода и захода солнца и т. д.
Само собой разумеется, вы можете играть с необработанными данными из модуля GPS, или вы можете конвертировать сообщения NMEA в читаемый и полезный формат. Предложения NMEA начинаются с символа $, каждое поле данных отделяется запятой, а тип сообщения указывается символами перед первой запятой. Например, $ GPGGA обозначает базовое сообщение GPS NMEA, которое предоставляет трехмерные данные о местоположении и точности, а $ GPGLL объявляет географическую широту и долготу (см. Следующее изображение).
Чтобы получить необработанные данные GPS через последовательный монитор Arduino (как указано выше), вы можете попробовать эту простую программу:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#include <SoftwareSerial.h> SoftwareSerial ss(4, 3); // GPS Module’s TX to D4 & RX to D3 void setup(){ Serial.begin(9600); ss.begin(9600); } void loop(){ while (ss.available() > 0){ byte gpsData = ss.read(); Serial.write(gpsData); } } |
Здравствуйте!
Как изменить прошивку, чтобы выделять сигнал коррекции ежечасно для сторонних часов с кнопкой «Коррекция»?