Основы GPS навигации на Raspberry Pi
-
Привет. Сегодня будем рассматривать вопрос использования gps навигации на Raspberry Pi. Для того, чтобы превратить Raspberry Pi в gps навигатор потребуется:
GPS приёмник
Существует 2 варианта:
-
USB gps приёмник (подключается к USB порту, http://raspberrypi.ru/220-raspberry-pi-podklyuchenie-gps-usb-priemnika - вот есть небольшая статья по использованию USB GPS)
-
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
-
-
Небольшое дополнение: в Raspbian Jessie нет файла inittab. Чтобы убрать терминал с UART интерфейса нужно выполнить команду:
sudo systemctl stop serial-getty@ttyAMA0.service
и запретить запуск при последующих загрузках системы:
sudo systemctl disable serial-getty@ttyAMA0.service
-
ответ
Отлично. То что нужно. Как только приедет, сразу буду пробовать, про JSON и сокеты порадовало, планирую получать данные прямо на php. -