- Обязательные компоненты:
- Модуль GPS и его работа:
- Подготовка Raspberry Pi для связи с GPS:
- Подключения для модуля Raspberry Pi GPS Интерфейс:
- Тестирование перед скриптом Python:
Одна из самых крутых встраиваемых платформ, такая как Arduino, дала производителям и домашним мастерам возможность легко получать данные о местоположении с помощью модуля GPS и, таким образом, создавать вещи, которые зависят от местоположения. С такой мощностью, которую обеспечивает Raspberry Pi, было бы здорово создавать проекты на основе GPS с такими же дешевыми модулями GPS, и это является целью этой публикации. Сегодня в этом проекте мы подключим модуль GPS к Raspberry Pi 3.
Целью этого проекта является сбор данных о местоположении (долгота и широта) через UART от модуля GPS и отображение их на ЖК-дисплее 16x2, поэтому, если вы не знакомы с тем, как ЖК-дисплей 16x2 работает с Raspberry Pi, это еще один отличная возможность учиться.
Обязательные компоненты:
- Raspberry Pi 3
- Модуль GPS Neo 6m v2
- ЖК-дисплей 16 x 2
- Источник питания для Raspberry Pi
- Кабель LAN для подключения пи к ПК в режиме без головы
- Макетная плата и соединительные кабели
- Резистор / потенциометр к ЖК-дисплею
- Карта памяти 8 или 16Гб под управлением Raspbian Jessie
Помимо этого, нам нужно установить библиотеку GPS Daemon (GPSD), библиотеку Adafruit LCD 16x2, которую мы установим позже в этом руководстве.
Здесь мы используем Raspberry Pi 3 с Raspbian Jessie OS. Все основные требования к оборудованию и программному обеспечению обсуждаются ранее, вы можете найти их во введении Raspberry Pi.
Модуль GPS и его работа:
GPS расшифровывается как Global Positioning System и используется для определения широты и долготы любого места на Земле с точным временем UTC (всемирное координированное время). Модуль GPS является основным компонентом в нашем проекте системы слежения за транспортными средствами. Это устройство каждую секунду получает координаты со спутника с указанием времени и даты.
Модуль GPS отправляет данные, связанные с отслеживанием местоположения, в режиме реального времени, и он отправляет так много данных в формате NMEA (см. Снимок экрана ниже). Формат NMEA состоит из нескольких предложений, в которых нам нужно всего одно предложение. Это предложение начинается с $ GPGGA и содержит координаты, время и другую полезную информацию. Этот GPGGA называется данными о фиксации глобальной системы позиционирования. Узнайте больше о чтении данных GPS и их строк здесь.
Мы можем извлечь координату из строки $ GPGGA, посчитав запятые в строке. Предположим, вы нашли строку $ GPGGA и сохранили ее в массиве, тогда широту можно найти после двух запятых, а долготу можно найти после четырех запятых. Теперь эти широту и долготу можно поместить в другие массивы.
Ниже приведена строка $ GPGGA с ее описанием:
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0.9 510.4, M, 43.9, M,, * 47
$ GPGGA, HHMMSS.SSS, широта, N, долгота, E, FQ, NOS, HDP, высота, M, высота, M, данные контрольной суммы
Идентификатор |
Описание |
$ GPGGA |
Данные исправления глобальной системы позиционирования |
ЧЧММСС.ССС |
Время в формате часов, минут, секунд и миллисекунд. |
Широта |
Широта (координата) |
N |
Направление N = Север, S = Юг |
Долгота |
Долгота (координата) |
E |
Направление E = Восток, W = Запад |
FQ |
Исправить данные о качестве |
NOS |
Количество используемых спутников |
HPD |
Горизонтальное снижение точности |
Высота |
Высота от уровня моря |
M |
Метр |
Высота |
Высота |
Контрольная сумма |
Данные контрольной суммы |
Вы можете ознакомиться с другими нашими проектами GPS:
- Автомобильный трекер на базе Arduino с использованием GPS и GSM
- Система оповещения об авариях на базе Arduino с использованием GPS, GSM и акселерометра
- Как использовать GPS с Arduino
- Отслеживание автомобиля на картах Google с помощью Arduino, ESP8266 и GPS
Подготовка Raspberry Pi для связи с GPS:
Итак, приступим, чтобы не было скучно, я предполагаю, что вы уже много знаете о Raspberry Pi, достаточно, чтобы установить вашу ОС, получить IP-адрес, подключиться к программному обеспечению терминала, например, замазке, и другим вещам о ПИ. Если у вас возникнут проблемы с выполнением любого из упомянутых выше действий, напишите мне в разделе комментариев, и я буду рад помочь.
Первое, что нам нужно сделать, чтобы запустить этот проект, - это подготовить наш Raspberry Pi 3 к возможности связи с модулем GPS через UART, поверьте мне, это довольно сложно, и потребовалось довольно много попыток, чтобы сделать это правильно, но если вы последуете мое руководство внимательно вы получите его за один раз, это довольно сложная часть проекта. Здесь мы использовали GPS-модуль Neo 6m v2.
Чтобы погрузиться в подробности, вот небольшое объяснение того, как работает Raspberry Pi 3 UART.
Raspberry Pi имеет два встроенных UART, PL011 и мини-UART. Они реализованы с использованием разных аппаратных блоков, поэтому имеют немного разные характеристики. Однако на raspberry pi 3 модуль беспроводной связи / bluetooth подключен к PLO11 UART, а мини-UART используется для вывода консоли linux. В зависимости от того, как вы это видите, я определю PLO11 как лучший из двух UART по уровню реализации. Поэтому для этого проекта мы будем отключать модуль Bluetooth из PLO11 UART, используя оверлей, доступный в обновленной текущей версии Raspbian Jessie.
Шаг 1: Обновление Raspberry Pi:
Первое, что мне нравится делать перед началом каждого проекта, - это обновлять raspberry pi. Итак, давайте сделаем то же самое и выполним следующие команды;
sudo apt-get update sudo apt-get upgrade
затем перезагрузите систему с помощью;
перезагрузка sudo
Шаг 2: Настройка UART в Raspberry Pi:
Первое, что мы сделаем при этом, - это отредактируем файл /boot/config.txt . Для этого выполните следующие команды:
sudo nano /boot/config.txt
в конце файла config.txt добавьте следующие строки
dtparam = spi = on dtoverlay = pi3-disable-bt core_freq = 250 enable_uart = 1 force_turbo = 1
ctrl + x для выхода и нажмите y и enter для сохранения.
Убедитесь, что нет опечаток или ошибок, дважды проверив, так как ошибка может помешать загрузке вашего пи.
Каковы причины этих команд, force_turbo позволяет UART использовать максимальную частоту ядра, которую мы устанавливаем в данном случае равной 250. Причина этого заключается в обеспечении согласованности и целостности полученных последовательных данных. Здесь важно отметить, что использование force_turbo = 1 аннулирует гарантию вашего raspberry pi, но в остальном это довольно безопасно.
Dtoverlay = PI3-выключение-BT отсоединяет Bluetooth от ttyAMA0 , это позволит нам получить доступ использовать полную мощность UART доступной через ttyAMAO вместо мини - UART ttyS0.
Второй шаг в этом разделе настройки UART - отредактировать файл boot / cmdline.txt.
Я предлагаю вам сделать копию cmdline.txt и сохранить ее перед редактированием, чтобы вы могли вернуться к нему позже, если это необходимо. Это можно сделать с помощью;
sudo cp boot / cmdline.txt boot / cmdline_backup.txt sudo nano /boot.cmdline.txt
Замените содержимое на;
dwc_otg.lpm_enable = 0 console = tty1 root = / dev / mmcblk0p2 rootfstype = ext4 elevator = deadline fsck.repair = yes rootwait тихий всплеск plymouth.ignore-serial-consoles
Сохранить и выйти.
После этого нам нужно будет снова перезагрузить систему, чтобы изменения вступили в силу ( sudo reboot ).
Шаг 3. Отключение службы Getty Serial для Raspberry Pi
Следующим шагом является отключение последовательного порта Pi службы getty , команда предотвратит ее повторный запуск при перезагрузке:
sudo systemctl stop [email protected] sudo systemctl disable [email protected]
Следующие команды могут быть использованы для его повторного включения при необходимости.
sudo systemctl включить [email protected] sudo systemctl start [email protected]
Перезагрузите систему.
Шаг 4: Активация ttyAMAO:
Мы отключили ttyS0, теперь нам нужно включить ttyAMAO .
sudo systemctl включить [email protected]
Шаг 5: Установите Minicom и pynmea2:
Мы будем minicom для подключения к модулю GPS и анализа данных. Это также один из инструментов, который мы будем использовать для проверки того, что наш модуль GPS работает нормально. Альтернативой minicom является программа-демон GPSD.
sudo apt-get install minicom
Чтобы легко проанализировать полученные данные, воспользуемся библиотекой pynmea2 . Его можно установить с помощью:
sudo pip установить pynmea2
Документацию по библиотеке можно найти здесь
Шаг 6: Установка ЖК-библиотеки:
В этом уроке мы будем использовать библиотеку AdaFruit. Библиотека была создана для экранов AdaFruit, но также работает и для дисплеев, использующих HD44780. Если ваш дисплей основан на этом, он должен работать без проблем.
Я считаю, что лучше клонировать библиотеку и просто установить напрямую. Клонировать запустить;
git clone
перейдите в клонированный каталог и установите его
cd./Adafruit_Python_CharLCD sudo python setup.py установить
На этом этапе я предлагаю еще одну перезагрузку, чтобы мы были готовы перейти к подключению компонентов.
Подключения для модуля Raspberry Pi GPS Интерфейс:
Подключите модуль GPS и ЖК-дисплей к Raspberry Pi, как показано на схеме ниже.
Тестирование перед скриптом Python:
Я считаю важным протестировать соединение модуля GPS, прежде чем переходить к сценарию python. Для этого мы будем использовать minicom. Выполните команду:
sudo minicom -D / dev / ttyAMA0 -b9600
где 9600 представляет собой скорость передачи данных модуля GPS. Это можно использовать, если мы уверены в передаче данных между GPS и RPI, пора написать наш скрипт на Python.
Тест также можно провести с помощью cat
sudo cat / dev / ttyAMA0
В Window вы можете видеть предложения NMEA, которые мы обсуждали ранее.
Скрипт Python для этого руководства по Raspberry Pi GPS приведен ниже в разделе «Код».
Итак, самое время протестировать всю систему. Важно убедиться, что ваш GPS исправен, вынув его, большинству GPS требуется от трех до 4 спутников для исправления, хотя мой работал в помещении.
Правильно работает? Да…
Есть вопросы или комментарии? Оставьте их в разделе комментариев.
Ниже приведено демонстрационное видео, где мы показали местоположение по широте и долготе на ЖК-дисплее с помощью GPS и Raspberry Pi.