Меню Закрыть

Gy neo6mv2 neo 6m

Содержание

Здравствуйте. В этой статье я расскажу Вам о своем опыте подключения к Arduino GPS-модуля, о том с какими проблемами я при этом столкнулся и как эти проблемы были решены.

GPS-модуль интересен не только тем, что определяет координаты, высоту над уровнем моря, время по Гринвичу, ряд других географических параметров Вашего местоположения. Когда у меня получилось установить связь с модулем, я был рад, в первую очередь тому, что установил связь с космосом. Спутники GPS движутся по геостационарной орбите – а это катастрофически высоко – почти 36 000 км.

Итак, у меня есть GPS-модуль GY- neo6mv2. Существует библиотека для работы с этим модулем, прямая ссылка на библиотеку есть в конце статьи. Ставлю библиотеку, открываю стандартный скетч для тестирования модуля, который шел в комплекте с библиотекой. Логично предположить, что он готов к работе. Подключаю свой GPS-модуль к Arduino по рекомендуемой схеме.

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

Редактирую стандартный скетч. Выставляю в коде скетча скорость интерфейса Arduino с ПК 9600 бод. Пробую снова. Теперь набор символов осмысленный, но не видно данных с самого модуля.

Снова редактирую скетч. Теперь выставляю скорость интерфейса модуля с контроллером – тоже 9600 бод. После нового компилирования и загрузки видно, что данные с модуля всё-таки начали поступать.

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

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

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


В этой статье я расскажу про подключение GPS приемника к микроконтроллеру, на примере модуля u-blox GY-NEO6MV2. Приемник представляет из себя небольшую плату на которой расположены модуль NEO-6M-0-001, стабилизатор напряжения 3.3В, EEPROM память, аккумулятор и светодиод. Модуль продается вместе с активной антенной квадратной формы. Как и все GPS приемники, для передачи данных, модуль использует широко распространенный интерфейс UART, что облегчает его сопряжение с микроконтроллером.

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

Модуль можно приобрести здесь , есть более дешевый вариант собранный на красной плате с маленькой антенной, можно заказать тут .

По стандарту NMEA все сообщения начинаются с символа “$” и заканчиваются спецсимволами – возврат каретки (шестнадцатеричное значение 0x0D) и – перевод строки (шестнадцатеричное значение 0x0A). Первые два символа после “$” являются идентификатором системы, следующие три символа – идентификатор сообщения, например $GPZDA, где GP – глобальная система позиционирования, ZDA – означает, что сообщение содержит информацию о дате по UTC и локальный часовой пояс. После идентификатора сообщения следуют поля, содержащие значения параметров, в конце сообщения после символа “*” находится контрольная сумма. Поля разделяются запятыми, некоторые значения в полях могут отсутствовать, при этом запятые в сообщении не удаляются.

Для того чтобы увидеть сообщения которые выдает GPS модуль, я подключил его к компьютеру через USB-UART преобразователь на чипе PL2303. Для подключения использовал только один вывод на GPS модуле, выход передатчика TX, так как отправлять команды на модуль я не буду, только принимать сообщения. В качестве терминальной программы использовал Terminal v1.9b by Bray. По умолчанию модуль настроен на скорость 9600 бит/сек, в программе необходимо установить следующие настройки: 8 бит данных, без проверки четности, один стоповый бит, управление потоком отключаем.

Ниже приведен скриншот окна программы с сообщениями, полученными от GPS модуля.

В зависимости от количества видимых спутников, данный модуль выдает от 6 до 8 сообщений, которые обновляются каждую секунду (стандартное время для большинства приемников). При достаточном количестве спутников и устойчивом сигнале на модуле начинает мигать светодиод.

Читайте также:  Destiny 2 ежедневные задания

Информация о координатах местоположения, времени и скорости в разных сообщениях могут дублироваться. Рассмотрим назначение полей каждого сообщения:

RMC – минимальная рекомендуемая навигационная информация, содержит информацию о времени, дате, координатах местоположения, скорости и направлении курса.

$GPRMC,170840.00,A,5509.68339,N,06125.49498,E,0.204,,311015. A*7D
170840.00 Время UTC: 17ч. 08м. 40.00 сек.
A Статус достоверности: A – достоверные данные, V – недостоверные данные
5509.68339 Широта: 55 градусов, 09.68339 минут
N N – северная, S – южная
06125.49498 Долгота: 061 градусов, 25.49498 минут
E E – восточная, W – западная
0.204 Горизонтальная скорость (узлов в час)
Направление курса относительно истинного севера (градусы)
311015 Дата: 31 октября 2015 года
Магнитное склонение (градусы)
Направление склонения: E – восточное, W – западное
A Режим: A – автономный, D – дифференциальный, E – аппроксимация, N – недостоверные данные
*7D Контрольная сумма

VTG – текущее направление курса и скорость относительно Земли.

$GPVTG,,T,,M,0.204,N,0.378,K,A*29
­­­– Направление курса (градусы)
T Курс относительно истинного севера
Направление курса (градусы)
M Курс относительно магнитного севера
0.204 Горизонтальная скорость
N Единица измерения скорости (узлов в час)
0.378 Горизонтальная скорость
K Единица измерения скорости (километров в час)
A Неизвестный параметр
*29 Контрольная сумма

GGA – зафиксированные данные глобальной системы позиционирования, содержит информацию о времени, координатах местоположения, высоте, статусе определения координат, количестве использованных спутников.

$GPGGA,170840.00,5509.68339,N,06125.49498,E,1,07,2.41,186.2,M,-13.5,M,,*77
170840.00 Время UTC: 17ч. 08м. 40.00 сек.
5509.68339 Широта: 55 градусов, 09.68339 минут
N N – северная, S – южная
06125.49498 Долгота: 061 градусов, 25.49498 минут
E E – восточная, W – западная
1 Статус определения координат: 0 – позиция не определена, 1 – позиция определена, 2- позиция определена с повышенной точностью (DGPS)
07 Количество использованных спутников
2.41 Снижение точности в горизонтальной плоскости (HDOP)
186.2 Высота над уровнем моря
M Единица измерения высоты (метры)
-13.5 Геоидальное различие — различие между земным эллипсоидом WGS-84 и уровнем моря (геоидом)
M Единица измерения геоидального различия (метры)
Время с момента последнего обновления DGPS (секунды), 0 – DGPS не используется
*77 Контрольная сумма

GSA – Уровень точности определения координат и активные спутники, содержит информацию о режиме работы, спутниках, снижении точности в различных плоскостях.

$GPGSA,A,3,06,29,23,26,02,09,31. 3.48,2.41,2.51*0D
A Режим 1: М – ручной 2D или 3D, A – автоматический 2D-разрешено переключение 2D/3D
3 Режим 2: 1 – позиция не определена, 2 – 2D позиция определена, высота не определена, 3 – 3D позиция и высота определена
06 Идентификатор 1-го спутника использованного для определения координат
29 Идентификатор 2-го спутника использованного для определения координат
……
­– Идентификатор 12-го спутника использованного для определения координат
3.48 Снижение точности по местоположению (PDOP)
2.41 Снижение точности в горизонтальной плоскости (HDOP)
2.51 Снижение точности в вертикальной плоскости (VDOP)
*0D Контрольная сумма

GSV – Информация о видимых спутниках, содержит число видимых спутников, их идентификаторы, высота, азимут, уровень сигнала.

$GPGSV,3,1,11,02,13,325,27,03,34,182,17,06,19,287,23,07,15,237,15*70
3 Количество сообщений GSV, (от 1 до 3), зависит от количества видимых спутников
1 Порядковый номер сообщения, (от 1 до 3)
11 Количество видимых спутников
02 Идентификатор спутника
13 Высота спутника (градусы)
325 Азимут спутника (градусы)
27 Уровень сигнала, отношение сигнал/шум от 00 до 99 дБ, 0 – нет сигнала.
03,34,182,17 То же самое для 2-го спутника
06,19,287,23 То же самое для 3-го спутника
07,15,237,15 То же самое для 4-го спутника
*70 Контрольная сумма

GLL – географическая позиция – широта/долгота, содержит информацию о времени, координатах местоположения.

$GPGLL,5509.68339,N,06125.49498,E,170840.00,A,A*65
5509.68339 Широта: 55 градусов, 09.68339 минут
N N – северная, S – южная
06125.49498 Долгота: 061 градусов, 25.49498 минут
E E – восточная, W – западная
170840.00 Время UTC: 17ч. 08м. 40.00 сек.
A Статус достоверности: A – достоверные данные, V – недостоверные данные
*65 Контрольная сумма

Теперь рассмотрим подключение GPS модуля к микроконтроллеру, для вывода информации я решил использовать LCD дисплей Nokia 5110, так как буду выводить значительное количество символов. Ниже приведена схема подключения:

Микроконтроллер PIC16F628A и LCD дисплей питаются напряжением 3,3В, для того чтобы избежать согласования уровней между линиями ввода/вывода дисплея и микроконтроллера. Чтение сообщений с GPS приемника осуществляется встроенным в микроконтроллер модулем USART. Светодиод HL1 служит индикатором приема и мигает при получении сообщения GPRMC.

  • Цена: $10.00
  • Перейти в магазин

Данная плата содержит на себе GPS-модуль NEO-6M от u-blox и была приобретена пару месяцев назад с целью создания GPS-логгера своими руками.

Читайте также:  Life is strange comics

В статье описывается «комплект» с модулем, программа u-center, немного USB-to-TTL-адаптер CH340G, а также проводится срвнение записи трека.

В «комплект» входит: сам модуль u-blox NEO-6M, стабилизатор напряжения (чтоб можно было питат от 5В) и активная керамическая антенна. ИМХО, реальная цена раза в два ниже, поскольку есть более дешевый конкурент — VK172 ($8.58) — с поддержкой ГЛОНАСС и USB-интерфейсом — $8.58, например. Может, и в нём есть UART, но его я в руках не держал.
Антенна телепается на тонком на экранированном кабеле длинной 2.5 см. Сильно телепать ею не стоит: за два дня телепаний у меня нарушился контакт экрана кабеля с землей антенны — и спутники перестали ловиться. Пришлось её разбирать и восстанавливать контакт экрана. Разбирается активная антенна при помощи паяльника ватт на 40-60, снимаем припой лёгкими прикосновениями к краям металлической крышки, одновременно подковыривая её:
(фото сделано через пару месяцев, взято из из этого обзора).

Практика показала, что, несмотря на металлическую пластину с обратной стороны, положение антенны в пространстве на точность определения позиции слабо влияет. Близкое расположение домов, и низкая скорость, как мне показалось, сильнее снижает точность. Если стоять на одном месте, начинают появляться точки на 5-30 метров от реальной позиции.

В описании сказано.

А ничего там не сказано, продавец снимает с себя всю ответственность =)
Модуль NEO-6M питается от напряжения 3.3В, он может выйти из строя при подключении к большему напряжению или некорректно работать при меньшем, но здесь имеется стабилизатор — и питать можно от 5В. Также, есть энергонезависимая память и батарейка:
Светодиод — зелёный, по умолчанию «мигает при 3D-виксации», настроить его поведение можно из приложения u-ctnter.
Пробовал подключать к 3.3В — вместо нужных данных, выдает текстовые сообщения с какой-то информацией, думаю, мощности не хватает. Вывод контактов J1 состоит из:
GND — минуса питания,
TX — линии передачи данных (от модуля),
RX — линии приёма данных (модулем),
VCC — плюса питания (5В).

Из всех особенностей UART для взаимодействия с данным модулем нужно знать только одну — скорость работы, у меня она установлена в 9600 бод. Из коробки пакетика, модуль, когда поймает, выдает такую информацию:

Это — текстовые сообщения протокола NMEA, подробнее о них можно почитать в Википедии, они могут немного отличаться от задокументированных.
По сути, этот модуль — микроконтроллер, который анализирует данные со спутников и производит действия, заданные в его настройках — не только выводит текущее положение… Есть подозрение, что он может вести объект по заданному маршруту (по треку, сохранённому в его памяти). Такие модули используют любители квадрокоптеров, они должны знать о нём больше.

CH340

Подключить GPS-модуль к компьютеру (или планшету) через USB можно с помощью USB to TTL модуля CH340 ($0.60) — это переходник USB-UART с возможностью выбора напряжения питания: 3.3 или 5В.
С верхней стороны, имеются три светодиода: питания — красный и два одинаковых синих, мигающих в унисон передаче или приёма данных… Так как цвета светодидов одинаковы, отличить передачу от приёма можно, разве что, выучив их расположение =)
С торца имеются следующие контакты:
первые три контакта — вывод плюса питания: ненужный соединяется с VCC, нужный — со входом питания устройства;
TXD — линия передачи данных (от компьютера к внешнему устройству);
RXD — линия приёма данных (от устройства);
GND — минус питания.

Таким образом, для подключения GPS-модуля к компьютеру, нужно соединить: RX с TXD; TX с RXD; GND с GND; VCC с 5V,
затем вставить USB в компьютер. После подключения к компьютеру и установки драйверов (кажется, сами ставятся), появляется виртуальный COM-порт, при подключении к новому USB-порту, создается еще один COM-порт…
После установки драйверов запускаем программу, указываем скорость обмена данными и выбираем в нужный COM-порт:

Показано на примере программы разработчика GPS-модуля, но в любой другой программе работы с COM-портом, будет то же самое. Если после сопряжения устройств ожидаемых данных не появляется (в терминале), то можно попробовать изменить скорость порта: вдруг мы забыли ее правильно вставить.
После работы — сначала в программе отключиться от пота, затем выдернуть USB; имхо, так более безопасно. Если ошибаюсь, — поправьте; также, могу слишком подробно описывать очевидные вещи, но я хотел бы изъясняться максимально понятно для минимально осведомлённого читателя.

Читайте также:  Как пользоваться функцией nfc на андроиде

Этим же модулем можно «прошивать» и популярный микроконтроллер Arduino.
Вообще-то, можно было на один из компьютерных COM-портов или на LPT-порт резисторов напаять и не покупать модуль… Но его еще можно к планшету с OTG подключать! Кстати, не всякая программа поддерживает данный адаптер; я успешно мониторил порт пргграммой UsbTerminal,
если скорость низкая (выбранного бодрейта недостаточно для объемов передачи данных), плохой контакт или неправильно настроены биты чётности, то будут теряться части строк;
если же бодрейт на двух устройствах не одинаков, то будут выводиться либо «крякозябрики», либо вообще не будет виден никакой вывод…

u-center

Разработчик модуля предоставляет специализированную программу для работы с ним, скачать её и другие программы можно бесплатно с официального сайта — www.u-blox.com/en/evaluation-software-and-tools — однако, их использование требует не только понимания английского, но и знания предметной области.

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

Настройки сообщений, GPS-модуля находятся в окне View -> Messages, иконкой или по F9:

Когда приходит то или иное сообщение, подсвечивается соответствующая ветка, из меню этого дерева можно отключать или подключать ненужные сообщения. Стоит отметить, что интерфейс программы рассчитан на множество разных модулей и некоторые функции не будут работать с нашим, например, даже если мы разрешим сообщения GLRMC, они не будут приходить, так как модуль не поддерживает ГЛОНАСС. Особо продвинутые отключают все NMEA-, подключают нужные UBX-сообщения — и экономят на этом гигабиты трафика и километры строк кода!

Кстати, у автора видео такой же модуль. Как видно из того же видео, можно настроить скорость работы GPS-модуля из окна
UBX -> CFG -> PRT:

А из UBX -> CFG -> RATE, путем подбора Measurement Period выставляется значение Navigation Frequency — на сколько я понял, это частота, с которой данные приходят в порт, если выставить 0.5 Гц, то порция данных будет отправляться нам по порту раз в две секунды.

Если нужно сохранить текущую конфигурацию устройства, выбираем из меню Receiver -> Action -> Save Config, после чего можно проверить, сохранилась ли конфигурация, отключив его (USB) и подключив обратно.

Там имеется еще много всякоразных настроек, как то частота кварцевого резонатора или энергосбережение; я еще не разбираюсь в них на столько, чтобы кому-то рассказывать. К сожалению, на русском я не нашел подробного описания настроек, применимого к реальным задачам. Но для их понимания можно прочесть документацию и подумать, как ими пользоваться.

Тест в реальных условиях

Подключив данный GPS-модуль и MicroSD-карту к Arduino Promini, я собрал GPS-логгер:

Положил его в сумку вместе с планшетом Asus MemoPad 7, запустил запись трека и прокатился на велике по району, по пути выехал к огородом, где нет домов, затем вернулся обратно, сделав круг и заехал в пару дворов.
Белым пунктиром отмечен путь, который не зафиксировал ни модуль, ни планшет; синяя линия — планшет, красная — модуль.
Постояв минуты три, мне надоело ждать, когда GPS на планшете стартанёт — и я поехал в огороды, вернувшись обратно, достал планшет, посмотрел, как там дела — и трек на нём начал записываться с этого места.

Оцениваю работу данного модуля по записи велотрека как достойную замену телефонного, главным образом, потому что он стартует быстрее; однако его поведение при стационарном положении меня немного пугает. Трек с него был получен путем конвертирования упомянутых выше NMEA-сообщений в GPX-файл посредством команды:

-x discard,hdop=1.2 — фильтр по hdop, теоретически, чем меньше величина — тем больше менее достоверных точек удаляется из трека; практически же, если поставить в 1, — удалятся все позиции.
За время поездки (20 минут), аккумулятор пятилетней давности BL-5CP (телефона Nokia 1616), от которого питается микроконтроллер, записывающий лог, разрядился с 4.10 до 3.97В. Ток GPS-модуля при старте, если верить дешёвому мультиметру DT832, составляет 70мА.

Рекомендуем к прочтению

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

Ваш адрес email не будет опубликован.