- Необходими компоненти:
- GPS модул и неговата работа:
- Подготовка на Raspberry Pi за комуникация с GPS:
- Връзки за взаимодействие на GPS модул Raspberry Pi:
- Тестване преди Python Script:
Една от най-страхотните вградени платформи като Arduino е предоставила на производителите и „Направи си сам“ възможността лесно да получават данни за местоположението чрез GPS модул и по този начин да изграждат неща, които разчитат на местоположението. С количеството мощност, пакетирано от Raspberry Pi, със сигурност ще бъде доста страхотно да се изграждат GPS базирани проекти със същите евтини GPS модули и това е фокусът на тази публикация. Днес в този проект ще свържем GPS модул с Raspberry Pi 3.
Целта на този проект е да събира данни за местоположението (дължина и ширина) чрез UART от GPS модул и да ги показва на 16x2 LCD, така че ако не сте запознати с начина, по който 16x2 LCD работи с Raspberry Pi, това е още едно чудесна възможност за учене.
Необходими компоненти:
- Raspberry Pi 3
- GPS модул Neo 6m v2
- 16 x 2 LCD
- Източник на захранване за Raspberry Pi
- LAN кабел за свързване на pi към вашия компютър в режим без глава
- Макети и Jumper кабели
- Резистор / потенциометър към LCD
- Карта с памет 8 или 16Gb, работеща с Raspbian Jessie
Освен това трябва да инсталираме GPS Daemon (GPSD) библиотека, 16x2 LCD Adafruit библиотека, която инсталираме по-късно в този урок.
Тук използваме Raspberry Pi 3 с OS Raspbian Jessie. Всички основни хардуерни и софтуерни изисквания са обсъдени преди това, можете да ги потърсите във въведението на Raspberry Pi.
GPS модул и неговата работа:
GPS означава система за глобално позициониране и се използва за откриване на географската ширина и дължина на всяко местоположение на Земята, с точно UTC време (универсално координирано време). GPS модулът е основният компонент в нашия проект за система за проследяване на превозни средства. Това устройство получава координатите от спътника за всяка секунда, с час и дата.
GPS модулът изпраща данните, свързани с проследяващата позиция, в реално време и изпраща толкова много данни във формат NMEA (вижте екранната снимка по-долу). Форматът NMEA се състои от няколко изречения, в които се нуждаем само от едно изречение. Това изречение започва от $ GPGGA и съдържа координатите, времето и друга полезна информация. Този GPGGA се отнася до данните за корекция на системата за глобално позициониране. Научете повече за четенето на GPS данни и техните низове тук.
Можем да извлечем координати от низ $ GPGGA, като преброим запетаите в низа. Да предположим, че намерите $ GPGGA низ и го съхранявате в масив, тогава Latitude може да бъде намерен след две запетаи и Longitude може да бъде намерен след четири запетаи. Сега тези географска ширина и дължина могат да бъдат поставени в други масиви.
По-долу е $ GPGGA String, заедно с неговото описание:
$ 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 = север, S = юг |
Географска дължина |
Географска дължина (координати) |
Е. |
Посока E = Изток, W = Запад |
FQ |
Коригирайте данните за качеството |
NOS |
Брой използвани сателити |
HPD |
Хоризонтално разреждане на прецизността |
Надморска височина |
Надморска височина от морското равнище |
М |
Метър |
Височина |
Височина |
Контролна сума |
Данни за контролна сума |
Можете да проверите другите ни GPS проекти:
- Базиран на Arduino Vehicle Tracker с помощта на GPS и GSM
- Система за предупреждение за произшествия на базата на Arduino, използваща GPS, GSM и акселерометър
- Как да използвам GPS с Arduino
- Проследявайте превозно средство в Google Maps с помощта на Arduino, ESP8266 и GPS
Подготовка на Raspberry Pi за комуникация с GPS:
Добре, за да влезете, така че това да не стане скучно, предполагам, че вече знаете много за Raspberry Pi, достатъчно, за да инсталирате вашата операционна система, да получите IP адрес, да се свържете с терминален софтуер като шпакловка и други неща за PI. Ако имате някакъв проблем с някое от споменатите по-горе неща, натиснете ме в раздела за коментари и ще се радвам да помогна.
Първото нещо, което трябва да направим, за да стартираме този проект, е да подготвим нашия Raspberry Pi 3, за да можем да комуникираме с GPS модула чрез UART, повярвайте ми, това е доста сложно и направих доста опит да го направя правилно, но ако следвате ръководството ми внимателно ще го получите наведнъж, това е доста най-трудната част от проекта. Тук използвахме Neo 6m v2 GPS модул.
За да се потопите, ето малко обяснение за това как работи 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 актуализация sudo apt-get надстройка
след това рестартирайте системата с;
sudo рестартиране
Стъпка 2: Настройване на UART в Raspberry Pi:
Първото нещо, което ще направим по това, е да редактираме файла /boot/config.txt . За да направите това, изпълнете командите по-долу:
sudo nano /boot/config.txt
в долната част на файла config.txt, добавете следните редове
dtparam = spi = на 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-деактивиране-БТ изключва 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 конзола = tty1 корен = / dev / mmcblk0p2 rootfstype = ext4 асансьор = краен срок fsck.repair = да rootwait тихо изпръскване plymouth.ignore-serial-consoles
Запази и излез.
След това ще трябва да рестартираме системата отново, за да извършим промени ( sudo рестартиране ).
Стъпка 3: Деактивиране на услугата Raspberry Pi Serial Getty
Следващата стъпка е да деактивирате серийния сервиз на getty на Pi, командата ще предотврати повторното му стартиране при рестартиране:
sudo systemctl спрете [email protected] sudo systemctl деактивирайте [email protected]
Следните команди могат да се използват, за да го активирате отново, ако е необходимо
sudo systemctl активира [email protected] sudo systemctl стартира [email protected]
Рестартирайте системата.
Стъпка 4: Активиране на ttyAMAO:
Деактивирахме ttyS0, следващото нещо е да активираме ttyAMAO .
sudo systemctl разреши [email protected]
Стъпка 5: Инсталирайте Minicom и pynmea2:
Ще бъдем миником, за да се свържем с GPS модула и да осмислим данните. Това е и един от инструментите, които ще използваме, за да тестваме, че нашият GPS модул работи добре. Алтернатива на minicom е демонният софтуер GPSD.
sudo apt-get инсталирайте minicom
За да анализираме лесно получените данни, ще използваме библиотеката pynmea2 . Може да се инсталира с помощта на;
sudo pip инсталирайте pynmea2
Документацията на библиотеката може да бъде намерена тук
Стъпка 6: Инсталиране на LCD библиотеката:
За този урок ще използваме библиотеката AdaFruit. Библиотеката е създадена за екрани AdaFruit, но работи и за дисплейни табла, използващи HD44780. Ако вашият дисплей се основава на това, той трябва да работи без проблеми.
Чувствам, че е по-добре да клонирам библиотеката и просто да инсталирам директно. За клониране на бягане;
git clone
превключете в клонираната директория и я инсталирайте
cd./Adafruit_Python_CharLCD sudo python setup.py инсталиране
На този етап ще предложа още едно рестартиране, за да сме готови да продължим към свързването на компонентите.
Връзки за взаимодействие на GPS модул Raspberry Pi:
Свържете GPS модула и LCD дисплея с Raspberry Pi, както е показано на схемата по-долу.
Тестване преди Python Script:
Смятам, че е важно да тествате връзката на GPS модула, преди да преминете към скрипта на python, за това ще използваме minicom. Изпълнете командата:
sudo minicom -D / dev / ttyAMA0 -b9600
където 9600 представлява скоростта на предаване, при която GPS модулът комуникира. Това може да се използва, след като сме сигурни в комуникация на данни между GPS и RPI, време е да напишем нашия python скрипт.
Тестът може да се направи и с помощта на котка
sudo cat / dev / ttyAMA0
В Window можете да видите NMEA изречения, които обсъждахме по-рано.
Python Script за този урок за Raspberry Pi GPS е даден по-долу в раздел Код.
С всичко казано и направено, време е да тестваме цялата система. Важно е да се уверите, че вашият GPS получава добра корекция, като го извадите, повечето GPS изискват между три до 4 сателита, за да получат корекция, въпреки че моят работи на закрито.
Работи ли? Да…
Имате въпроси или коментари? Пуснете ги в раздела за коментари.
Демонстрационно видео е дадено по-долу, където показахме местоположението по географска ширина и дължина на LCD, използвайки GPS и Raspberry Pi.