Skip to content
  • Категории
  • Главная
  • Документация
  • Последние
  • Пользователи
Collapse
  1. Главная
  2. Аппаратные модули
  3. Датчики, GPIO модули, HAT
  4. Основы GPS навигации на Raspberry Pi

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

Запланировано Прикреплена Закрыта Перенесена Датчики, GPIO модули, HAT
6 Сообщения 4 Posters 613 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • M Не в сети
    M Не в сети
    mojo
    написал в отредактировано pi
    #1

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

    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 с подключаемой внешней антенной (покупал тут)
      074052ed-c0b0-4a70-8034-b1a7c4189fd4-image.png

    Подключается очень просто:

    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

    piP 1 ответ Последний ответ
    0
    • piP Не в сети
      piP Не в сети
      pi
      replied to mojo on отредактировано pi
      #2

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

      sudo systemctl stop serial-getty@ttyAMA0.service
      

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

      sudo systemctl disable serial-getty@ttyAMA0.service
      
      piP 1 ответ Последний ответ
      0
      • piP Не в сети
        piP Не в сети
        pi
        replied to pi on отредактировано
        #3

        ответ
        Отлично. То что нужно. Как только приедет, сразу буду пробовать, про JSON и сокеты порадовало, планирую получать данные прямо на php.

        A 1 ответ Последний ответ
        0
        • piP pi сослался на эту тему в
        • A Не в сети
          A Не в сети
          AngelDust
          replied to pi on отредактировано
          #4

          @pi А есть возможность передавать данные с двух и более gps модулей через gpsd?

          Петр СвешниковП 1 ответ Последний ответ
          0
          • Петр СвешниковП Не в сети
            Петр СвешниковП Не в сети
            Петр Свешников
            replied to AngelDust on отредактировано
            #5

            @AngelDust можно.
            при запуске gpsd указываешь оба модуля

            sudo gpsd -n /dev/ttyAMA0 /dev/ttyAMA1 -F /var/run/gpsd.sock
            

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

            И соответственно когда команду WATCH будешь отправлять в TCP-сервер, который поднимает gpsd, то указываешь, данные от какого устройства нужны в ответ.

            ?WATCH={"enable":true,"json":true,"device":"/dev/ttyUSB0"}
            

            В принципе, если у тебя потребитель данных один, то обращайся к приёмнику напрямую. может тебе gpsd вообще не нужен

            A 1 ответ Последний ответ
            0
            • A Не в сети
              A Не в сети
              AngelDust
              replied to Петр Свешников on отредактировано
              #6

              @Петр-Свешников Спасибо, получилось. Я пока на gpsfake тренируюсь. На практике нужно будет собирать данные с четырех модулей в одно место.

              1 ответ Последний ответ
              0

              • Войти

              • Нет учётной записи? Зарегистрироваться

              • Login or register to search.
              • Первое сообщение
                Последнее сообщение
              0
              • Категории
              • Главная
              • Документация
              • Последние
              • Пользователи