- Необхідні компоненти:
- Модуль 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 для підключення pi до ПК у режимі без голови
- Макет та кабелі перемички
- Резистор / потенціометр до РК-дисплея
- Картка пам'яті 8 або 16 Гб під управлінням Raspbian Jessie
Окрім цього нам потрібно встановити бібліотеку GPS Daemon (GPSD), 16x2 РК-бібліотеку Adafruit, яку ми встановимо пізніше у цьому посібнику.
Тут ми використовуємо Raspberry Pi 3 з ОС Raspbian Jessie. Всі основні вимоги до апаратного та програмного забезпечення вже обговорювалися раніше, ви можете переглянути їх у Вступі про Raspberry Pi.
Модуль GPS та його робота:
GPS розшифровується як система глобального позиціонування і використовується для виявлення широти та довготи будь-якого місця на Землі з точним часом UTC (координований за універсальним часом). Модуль GPS є головним компонентом проекту нашої системи відстеження транспортних засобів. Цей пристрій отримує координати від супутника щосекунди з часом та датою.
Модуль GPS надсилає дані, пов’язані з позицією відстеження, в режимі реального часу, і надсилає стільки даних у форматі NMEA (див. Знімок екрана нижче). Формат NMEA складається з декількох речень, у яких нам потрібне лише одне речення. Це речення починається з $ GPGGA і містить координати, час та іншу корисну інформацію. Цей GPGGA називається даними виправлення глобальної системи позиціонування. Дізнайтеся більше про читання даних GPS та їх рядків тут.
Ми можемо витягти координату з рядка $ GPGGA, підрахувавши коми у рядку. Припустимо, ви знайшли рядок $ GPGGA і зберегли його в масиві, тоді Latitude можна знайти після двох коми, а Longitude - після чотирьох коми. Тепер ці широту та довготу можна помістити в інші масиви.
Нижче наведено рядок $ 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 |
Дані виправлення системи глобального позиціонування |
HHMMSS.SSS |
Час у форматі години хвилини секунд та мілісекунд. |
Широта |
Широта (координата) |
N |
Напрямок N = Північ, S = Південь |
Довгота |
Довгота (координата) |
Е |
Напрямок E = Схід, W = Захід |
FQ |
Виправте дані про якість |
NOS |
Кількість використовуваних супутників |
HPD |
Горизонтальне розведення точності |
Висота над рівнем моря |
Висота над рівнем моря |
М |
Метр |
Висота |
Висота |
Контрольна сума |
Дані контрольної суми |
Ви можете перевірити інші наші GPS-проекти:
- Автомобільний трекер на базі Arduino за допомогою GPS та GSM
- Система оповіщення про аварії на базі Arduino за допомогою GPS, GSM та акселерометра
- Як користуватися GPS з Arduino
- Відстежуйте автомобіль на Картах Google за допомогою Arduino, ESP8266 та GPS
Підготовка Raspberry Pi до зв'язку з GPS:
Гаразд, так що застрибнути, так що це не стане нудно, я вважаю, ви вже знаєте багато про Raspberry Pi, достатньо, щоб встановити вашу ОС, отримати IP-адресу, підключитися до програмного забезпечення терміналу, як шпаклівка та інші речі про PI. Якщо у вас виникнуть проблеми з виконанням будь-чого з вищезазначеного, натисніть мене в розділі коментарів, і я буду радий допомогти.
Перше, що нам потрібно зробити, щоб почати реалізацію цього проекту, - це підготувати наш 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:
Перше, що мені подобається, я люблю робити перед початком кожного проекту - це оновлення малинового пі. Тож давайте виконуємо звичайне і запускаємо команди нижче;
sudo apt-get update оновлення sudo apt-get
потім перезавантажте систему за допомогою;
sudo reboot
Крок 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, щоб зберегти.
Переконайтеся, що немає помилок друку або помилок, подвійною перевіркою, оскільки помилка з цим може перешкодити завантаженню вашого pi.
У чому причини цих команд, force_turbo дозволяє UART використовувати максимальну частоту ядра, яку ми встановлюємо в цьому випадку, рівну 250. Причиною цього є забезпечення узгодженості та цілісності отриманих послідовних даних. На цьому етапі важливо відзначити, що використання force_turbo = 1 анулює гарантію вашого малинового пі, але, крім того, це досить безпечно.
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 = termin fsck.repair = так rootwait тихий сплеск plymouth.ignore-serial-consoles
Зберегти та вийти.
Після цього нам потрібно буде перезавантажити систему знову, щоб здійснити зміни ( sudo reboot ).
Крок 3: Вимкнення серійної служби Getty Raspberry Pi
Наступним кроком є вимкнення серійного сервісу Pi служби getty , команда запобіжить його повторному запуску при перезавантаженні:
sudo systemctl зупинити [email protected] sudo systemctl вимкнути [email protected]
Наступні команди можна використовувати, щоб увімкнути його знову, якщо це необхідно
sudo systemctl увімкнути [email protected] sudo systemctl запустити [email protected]
Перезавантажте систему.
Крок 4: Активація ttyAMAO:
Ми вимкнули ttyS0, наступне, що ми повинні увімкнути ttyAMAO .
sudo systemctl enable [email protected]
Крок 5: Встановіть Minicom та pynmea2:
Ми будемо мініком, щоб підключитися до модуля GPS і зрозуміти дані. Це також один із інструментів, який ми будемо використовувати для тестування - наш GPS-модуль працює нормально. Альтернативою minicom є демонове програмне забезпечення GPSD.
sudo apt-get install minicom - -
Для зручного аналізу отриманих даних ми скористаємось бібліотекою pynmea2 . Його можна встановити за допомогою;
sudo pip встановити pynmea2
Бібліотечну документацію можна знайти тут
Крок 6: Встановлення РК-бібліотеки:
Для цього підручника ми використовуватимемо бібліотеку AdaFruit. Бібліотека була створена для екранів AdaFruit, але також працює для дисплейних плат із використанням HD44780. Якщо ваш дисплей базується на цьому, він повинен працювати без проблем.
Я вважаю, що краще клонувати бібліотеку та просто встановлювати безпосередньо. Клонувати біг;
клон git
перейдіть у клонований каталог та встановіть його
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.
Тест також можна зробити за допомогою кота
sudo cat / dev / ttyAMA0
У вікні ви можете побачити речення NMEA, які ми обговорювали раніше.
Python Script для цього підручника з Raspberry Pi GPS наведено нижче в розділі коду.
По закінченні всього, час перевірити всю систему. Важливо, щоб ви переконалися, що ваш GPS отримує хороше виправлення, виймаючи його, більшість GPS вимагають від трьох до 4 супутників, щоб отримати виправлення, хоча мій працював у приміщенні.
Працює правильно? Так…
Є питання чи коментарі? Опустіть їх у розділі коментарів.
Демонстраційне відео наведено нижче, де ми показали розташування на широті та довготі на РК-дисплеї за допомогою GPS та Raspberry Pi.