NEO 6M GPS модуль подключение к Ардуино

Содержание

GPS модуль NEO-6MV2.
Как определить свои координаты, узнать скорость и направление движения.
Сколько километров до точки назначения. Найти стороны света используя компас.
Всё это можно узнать, подключив GPS модуль NEO-6M к Ардуино.
И всё это абсолютно бесплатно не используя интернет.

Посмотрев это видео вы узнаете как получать.
Свои координаты, скорость движения, дату и время, количество спутников, направление частей света.
Узнаем сколько километров до пункта назначения, а конкретно до моей дачи и в каком направлении двигаться. И всё это без подключения к интернету, то есть абсолютно бесплатно.
Я расскажу, как подключить GPS модуль NEO-6M. Это конечно не самый лучший датчик, но он довольно точен и главное не дорогой.
Сначала мы просто проверим, работает ли он.
А в конце видео я расскажу с какими проблемами мне пришлось столкнуться и как я их решил.

Сначала выведем данные в программу U-CENTER.
Для этого вам надо скачать программу от разработчика чипа U-BLOX на котором и создан этот модуль.
Вот ссылка на их сайт

Программа u-center

U-CENTER

Эта программа визуально показывает ваши координаты и месторасположение на карте, какие спутники найдены, определение частей света, часы, скорость и качество приёма сигналов от спутников. И многое другое.
Здесь так же можно, настраивать датчик, прошивать и сбрасывать до заводских настроек.
Я особо не вникал в эту программу, и если у вас появится интерес, то я могу изучить её и сделать про неё дополнительное видео.
Вам не обязательно устанавливать программу. Можно сразу подключить к Ардуино и получать все данные. Но для общего понимания лучше посмотреть, хотя бы на этом видео.

GPS модуль можно подключить с помощью переходника USB-UART или с помощью обычной Ардуино.
Я подключу вторым способом. Для этого сначала надо загрузить в Ардуино пустой скетч.
Затем подключить модуль так.
Контакты TX на датчике соединить с TX на Ардуино, а контакты RX на датчике соединить с RX на Ардуино.
То есть прямое подключение.

Теперь в программе выбираем порт на котором подключена Ардуино и выбираем скорость 9600 бод.
В эту программу также можно загружать данные из модуля и смотреть маршрут вашего передвижения.

Схема подключения, она очень простая, и на ней осталось много пустого места, но я надеюсь, что в следующих видео эта пустота будет заполнена.
Для работы нам понадобится библиотека SoftwareSerial.
В Ардуино реализована аппаратная поддержка интерфейса последовательной передачи данных через выводы 0 и 1 (которые также используются для связи с компьютером по USB). А так как мы хотим смотреть в мониторе порта, что у нас происходит в модуле, то нам надо подключить его к программному порту UART.
Вот это как раз и обеспечивает эта библиотека. Позволяя почти любые цифровые выводы работать как последовательный порт.
Я использовал выводы D10, D11.

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

Я вывел ряд параметров которые как мне показалось будут вам интересны.
Здесь можно указать координаты места назначения и модуль будет показывать расстояние и направление на него. Я указал координаты своей дачи. Напишите как далеко вы находитесь от этих координат.
Посмотрим, кто живёт дальше всех, а кто ближе.

Так же я вывел

  • количество спутников,
  • Точность по горизонту,
  • Широта и долгота,
  • Дата и время,
  • Высота над уровнем моря,
  • Направление движения (компас),
  • Скорость в километрах,
  • Направление,
  • Расстояние до дачи,
  • Направление к даче,

Чтобы значения не бегали очень быстро, я сделал интервал в 1 секунду. Это обычный delay().
Теперь надо сказать, что такое холодный запуск.
При первом включении датчик должен найти спутники и спозиционировать себя на местности. У этого датчика он довольно медленный. Правда других датчиков у меня не было, может у всех так.
Если модуль запускается с того же места, где и был остановлен, то поиск будет занимать меньше времени, так как в памяти были сохранены последние координаты.

Теперь я прокручу поиск координат, а то это процесс оказался очень долгим.
Вот сколько времени понадобилось чтобы модуль нашёл спутники. Правда он лежит у меня на подоконники и если бы он был на улице, процесс прошёл бы гораздо быстрее. Но что есть то есть.
14 минут.

Вы видите, как несколько скриншотов после того как модуль нашёл спутники. Данные постоянно прыгали, потому, что датчик хоть и видел 4 или 5 спутников, но показания не всегда были лучше.
А вот карта движения. Здесь я линейкой измерил расстояние. Расхождение из-за того что я не точно установил точки начала и конца.
Но эти плавающие данные возможно были из-за того, что модуль находится в помещении, а на улице приём будет лучше. В следующих видео я подключу к нему SD карту и посмотрю как он будет сохранять маршрут.

Так как я только купил этот модуль, то планирую ещё протестировать его.

В следующих видео, я покажу как

  • подключить к датчику LCD индикатор для вывода значений на экран.
  • Подключу датчик к ESP8266 и создам страницу с данными. Выведу на карту свою геопозицию.
  • Подключу SD карту для сохранения маршрута, и потом считаю значения и выведу пройденный маршрут на GOOGLE карту.
  • Есть ещё несколько интересных задумок, пока не скажу, так что подписывайтесь и не пропустите новые видео.

Теперь коротко про работу скетча.
Для работы понадобится вот такая библиотека и обязательно с плюсами. Это более новая библиотека и она лучше. Пока я тестировал этот датчик, то проверил несколько библиотек, но мне больше всего понравилась именно эта.
Про SoftwareSerial я уже рассказывал. Про пины D10 и D11, вроде тоже говорил.
Главное, не забудьте, что если будете пробовать примеры из этой библиотеки, не забудьте установить скорость 9600, иначе у вас ничего не будет работать.

Сюда нужно вставить координаты места назначения в формате Широта и долгота. Остальное я вроде написал по русски.

В архиве будет лежать ещё один скетч. Он позволяет получать необработанные данные, которые потом можно конвертировать другие форматы или загружать на сайты, которых очень много в интернете и которые из этих данных могут строить маршруты.

Ну, а теперь как и обещал рассказываю с какими проблемами я столкнулся и как удалось их решить.
Пришлось поискать на зарубежных форумах.

1. Библиотека. Есть несколько библиотек. Я их все попробовал, но больше всего мне понравилась TinyGPS++.h . Именно с плюсами. Потому, что есть просто TinyGPS.
2. Второе, это вывод информации, а точнее его отсутствие. При первом подключении даже не мигал светодиод. Потом я прочитал, что светодиод начинает мигать только после того как модуль найдёт спутники. А то я уже думал что у меня не рабочий датчик.
Оказалось, что аккумулятор на плате полностью разряжен, и для работы ему надо подзарядиться. Первые признаки жизни появились примерно минут через 30 — 40.
Сначала появилась дата. А потом, примерно через минут через 15 появились координаты.
Так, что если вы включили и у вас в течении часа ничего нет, ото не переживайте, возможно ещё не всё так плохо.
3. Приём в комнате. Если у вас не находит спутники, то поднесите к окну. У меня в комнате ловит 1 спутник и то не всегда. Около окна 6 спутников.

4. Подключение к UART аппаратная или программная. Проверьте правильность соединения RX-TX, TX-RX. То есть в перехлёст. Если вы используете SoftwareSerial.h то вам доступны почти все цифровые входы. Без библиотеки толь стандартные RX TX, пмны 0 и 1
5. Скорость вывода. Во всех примерах стоит скорость 4800 бод. При такой скорости не работает. Нужно установить 9600 бод.
6. Время в формате UTC. То есть не соответствует вашему региону. В следующих видео, когда буду выводить на экран, будем учиться изменять на свой регион для установки истинного времени.

Вот вроде и всё. Больше проблем не видел. Датчик работает хорошо. Ну если не считать, что координаты он начинает определять минут через 10. Повторюсь, на улице я его пока не тестировал.


Источник: arduino-kid.ru