Привет. Сегодня будем рассматривать вопрос использования gps навигации на Raspberry Pi. Для того, чтобы превратить Raspberry Pi в gps навигатор потребуется:
1.GPS приёмник
Существует 2 варианта:
1. USB gps приёмник (подключается к USB порту, http://raspberrypi.ru/220-raspberry-pi-podklyuchenie-gps-usb-priemnika - вот есть небольшая статья по использованию USB GPS)
2. UART GPS модуль (подключается к линиям GPIO: 5v, GND, RX, TX). Мне больше нравится второй вариант, т.к он дешевле и меньше по размеру. Я использую GPS модуль на базе чипа u-Blox Neo 6M с подключаемой внешней антенной (покупалтут)
Подключается очень просто:
VCC-5V
GND-GND
RXD-TXD
TXD-RXD.
На модуле 2 светодиода - зелёный (включается при подаче питания), синий (включается при подаче питания, начинает мигать когда установлено соединение со спутниками). GPS сигнал сам по себе очень слабый, поэтому в помещении антенну нужно вынести как можно ближе к окну и направить в небо (если вы находитесь в помещении)
В ОС Raspbian UART интерфейс представлен устройством /dev/ttyAMA0 (UPD: в новых моделях, начиная с Raspberry Pi 3 - /dev/tty/S0 ). Если вы используете 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 Ну вот собственно всё. В следующих статьях, попробую рассказать про более детальное конфигурирование Navit'а
7 дорог
Лучшее навигационное ПО для gps навигации от Navikey
Скачать можно отсюда -https://navikey.org/7ways/download
Комментариев: 10
kukabu1
15.01.2014 в 13:00 ответпосмотрите qlandkartegt
ivanivs6
15.01.2014 в 16:37 ответОтлично. То что нужно. Как только приедет, сразу буду пробовать, про JSON и сокеты порадовало, планирую получать данные прямо на php.
Azimuth
01.01.2015 в 18:59 ответСсылка на USB GPS не существует. Странно, но почему-то на всем сайте по GPS только Ваша статья. Я пытаюсь работать посредством Си с приемником через порт. Все хорошо, когда примемник один, но когда присутствует USB-модем, то переподключении/перезагрузки порты на dev/ttyUSBXXX у них меняются случайным образом. Пытался читать все сущевствуюшие порты, чтобы найти внутри NMEA, так если попытаться прочитать один из портов модема получаю отваливалие по ssh устройства.
piman
04.01.2015 в 16:57 ответНадо парсить вывод команды dmesg, чтобы получить какому устройству какой ttyUSB файл назначился.
Azimuth
04.01.2015 в 17:12 ответПодсказали еще один способ: настроить так, чтобы определенное устройство подключалось на нужный порт: robocraft.ru/blog/arduino/2985.html
ala_nicola
17.05.2024 в 12:27 ответМожно прописать правило в /etc/udev/rules.d - в котором присвоить имя для устройства, например "MyGPS" и обращайтесь к dev/MyGPS
BABUT
02.11.2015 в 09:08 ответесть вменяемое навигационное ПО- «семь дорог» от навикей. сборка под армовый линь. проверял- пашет даже без gpsd(если гпс-приёмник отдаёт данные в nmea)
Nemolrs
30.11.2015 в 11:04 ответСпасиб, мне попомгло
raspiman
10.05.2016 в 20:39 ответНебольшое дополнение: в Raspbian Jessie нет файла inittab. Чтобы убрать терминал с UART интерфейса нужно выполнить команду: sudo systemctl stop serial-getty@ttyAMA0.service и запретить запусу при последующих загрузках системы: sudo systemctl disable serial-getty@ttyAMA0.service
veter900
31.07.2016 в 22:11 ответвидео есть как прописать кофиг, не понимаю где открывать и где прописать и как сохранить??????????????