Основы GPS навигации на Raspberry Pi

Привет. Сегодня будем рассматривать вопрос использования gps навигации на Raspberry Pi. Для того, чтобы превратить Raspberry Pi в gps навигатор потребуется:

1.GPS приёмник

Существует 2 варианта:

1. USB gps приёмник (подключается к USB порту, http://raspberrypi.ru/blog/readblog/220.html — вот есть небольшая статья по использованию USB GPS)

2. UART GPS модуль (подключается к линиям GPIO: 5v, GND, RX, TX). Мне больше нравится второй вариант, т.к он дешевле и меньше по размеру. Я использую GPS модуль на базе чипа u-Blox Neo 6M с подключаемой внешней антенной (покупал тут )
524b8d8de849e.jpg

Подключается очень просто: VCC-5V, GND-GND, RXD-TXD, TXD-RXD.

На модуле 2 светодиода — зелёный (включается при подаче питания), синий (включается при подаче питания, начинает мигать когда установлено соединение со спутниками). GPS сигнал сам по себе очень слабый, поэтому в помещении антенну нужно вынести как можно ближе к окну и направить в небо (если вы находитесь в помещении)
В ОС Raspbian UART интерфейс представлен устройством /dev/ttyAMA0 Если вы используете Raspbian, то там на UART'е висит терминал. Чтобы освободить UART интерфейс для GPS приёмника выполняем следующие процедуры:
1. В /etc/inittab эту строчку закоментить или удалитьT0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
2. В /boot/cmdline.txt console=ttyAMA0,115200 заменить на console=tty1 После того, как модуль подключён устанавливаем скорость UART 9600kbit/s stty -F 9600 /dev/ttyAMA0
Теперь, если всё правильно подключено, и в консоли набрать команду cat /dev/ttyAMA0, то в выводе побегут сообщения в формате NMEA, которые GPS приёмник передаёт на RasPi.

2. Навигационное программное обеспечение


gpsd — служба, которая принимает данные в NMEA формате от GPS модуля и «расшаривает» доступ к ним для стороннего программного обеспечения. Один из вариантов получения данных от gpsd — это получение их от сокет-сервера, который gpsd поднимает на порту 2947 (по умолчанию), в «человеческом» JSON формате. Значительная часть навигационного ПО требует наличия gpsd, установить можно из репозитория: sudo apt-get install gpsd После установки запускаем службу: gpsd /dev/ttyAMA0

Navit
К сожалению, качественного навигационного программного обеспечения (Navitel, iGo и т.д) для Linux'а практически не существует. Navit — единственное достойное навигационное ПО, которое мне удалось найти. Рассмотрим настройку Navit'а. В первую очередь нам нужно достать для него карты. Самый простой способ получения карт — вырезать нужную область из карты Open Street при помощи сервиса http://maps5.navit-project.org/. На этом сайте слева карта мира, справа панель управления. Выбираем справа пункт «Select» в блоке «Map controls» и мышкой на карте выделяем область, карту которой нужно получить, далее нажимаем кнопку «Get Map» и векторная карта в формате *.img начинается скачиваться. Главный минус таких карт — невозможность поиска точки по адресу. Navit поддерживает также карты Garmin, там такая возможность есть, но до прикручивания гарминовских карт руки у меня пока не дошли. Когда Open Street карта скачена, нужно прописать её в конфиг Navit'a (/etc/navit/navit.xml): <mapset enabled=«no»> <map type=«binfile» enabled=«yes» data=«ПУТЬ_ДО_КАРТЫ»/> </mapset> Остальным блокам mapset в конфиге поставить параметр enabled=no Ну вот собственно всё. В следующих статьях, попробую рассказать про более детальное конфигурирование Navit'а
  • 0

Комментарии (19)

0
посмотрите qlandkartegt
0
Отлично. То что нужно. Как только приедет, сразу буду пробовать, про JSON и сокеты порадовало, планирую получать данные прямо на php.
0
Ссылка на USB GPS не существует. Странно, но почему-то на всем сайте по GPS только Ваша статья. Я пытаюсь работать посредством Си с приемником через порт. Все хорошо, когда примемник один, но когда присутствует USB-модем, то переподключении/перезагрузки порты на dev/ttyUSBXXX у них меняются случайным образом. Пытался читать все сущевствуюшие порты, чтобы найти внутри NMEA, так если попытаться прочитать один из портов модема получаю отваливалие по ssh устройства.
0
Надо парсить вывод команды dmesg, чтобы получить какому устройству какой ttyUSB файл назначился.
0
Подсказали еще один способ: настроить так, чтобы определенное устройство подключалось на нужный порт: robocraft.ru/blog/arduino/2985.html
0
есть вменяемое навигационное ПО- «семь дорог» от навикей. сборка под армовый линь. проверял- пашет даже без gpsd(если гпс-приёмник отдаёт данные в nmea)
0
Спасиб, мне попомгло
0
Небольшое дополнение:
в Raspbian Jessie нет файла inittab. Чтобы убрать терминал с UART интерфейса нужно выполнить команду:
sudo systemctl stop serial-getty@ttyAMA0.service
и запретить запусу при последующих загрузках системы:
sudo systemctl disable serial-getty@ttyAMA0.service
0
видео есть как прописать кофиг, не понимаю где открывать и где прописать и как сохранить??????????????
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.