Основы 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'а

Не люблю Android

Комментарии:

kukabu1
посмотрите qlandkartegt
ivanivs6
Отлично. То что нужно. Как только приедет, сразу буду пробовать, про JSON и сокеты порадовало, планирую получать данные прямо на php.
Azimuth
Ссылка на USB GPS не существует. Странно, но почему-то на всем сайте по GPS только Ваша статья. Я пытаюсь работать посредством Си с приемником через порт. Все хорошо, когда примемник один, но когда присутствует USB-модем, то переподключении/перезагрузки порты на dev/ttyUSBXXX у них меняются случайным образом. Пытался читать все сущевствуюшие порты, чтобы найти внутри NMEA, так если попытаться прочитать один из портов модема получаю отваливалие по ssh устройства.
piman
Надо парсить вывод команды dmesg, чтобы получить какому устройству какой ttyUSB файл назначился.
Azimuth
Подсказали еще один способ: настроить так, чтобы определенное устройство подключалось на нужный порт: robocraft.ru/blog/arduino/2985.html
BABUT
есть вменяемое навигационное ПО- «семь дорог» от навикей. сборка под армовый линь. проверял- пашет даже без gpsd(если гпс-приёмник отдаёт данные в nmea)
Nemolrs
Спасиб, мне попомгло
raspiman
Небольшое дополнение:

в Raspbian Jessie нет файла inittab. Чтобы убрать терминал с UART интерфейса нужно выполнить команду:

sudo systemctl stop serial-getty@ttyAMA0.service

и запретить запусу при последующих загрузках системы:

sudo systemctl disable serial-getty@ttyAMA0.service
veter900
видео есть как прописать кофиг, не понимаю где открывать и где прописать и как сохранить??????????????

Для написания комментариев необходимо зарегистрироваться