- Požadované komponenty:
- GPS modul a jeho práce:
- Příprava Raspberry Pi na komunikaci s GPS:
- Připojení pro GPS modul Raspberry Pi:
- Testování před skriptem Python:
Jedna z nejlepších vestavěných platforem, jako je Arduino, dala tvůrcům a kutilům možnost snadno získat údaje o poloze pomocí modulu GPS a vytvářet tak věci, které se spoléhají na umístění. S množstvím energie zabalené Raspberry Pi bude určitě docela úžasné stavět projekty založené na GPS se stejnými levnými moduly GPS a to je zaměření tohoto příspěvku. Dnes v tomto projektu budeme propojovat GPS modul s Raspberry Pi 3.
Cílem tohoto projektu je shromáždit údaje o poloze (zeměpisná délka a šířka) přes UART z modulu GPS a zobrazit je na 16x2 LCD, takže pokud nejste obeznámeni se způsobem, jakým 16x2 LCD pracuje s Raspberry Pi, je to další skvělá příležitost učit se.
Požadované komponenty:
- Raspberry Pi 3
- GPS modul Neo 6m v2
- 16 x 2 LCD
- Zdroj energie pro Raspberry Pi
- Kabel LAN pro připojení pí k počítači v režimu bez hlavy
- Nepájivé pole a propojovací kabely
- Odpor / potenciometr k LCD
- Paměťová karta 8 nebo 16 Gb se spuštěnou Raspbian Jessie
Kromě toho musíme nainstalovat knihovnu GPS Daemon (GPSD), 16x2 LCD Adafruit library, kterou si nainstalujeme později v tomto tutoriálu.
Zde používáme Raspberry Pi 3 s Raspbian Jessie OS. Všechny základní požadavky na hardware a software jsou diskutovány dříve, můžete si je vyhledat v úvodu k Raspberry Pi.
GPS modul a jeho práce:
GPS znamená Global Positioning System a používá se k detekci zeměpisné šířky a délky jakéhokoli místa na Zemi s přesným časem UTC (Universal Time Coordinated). Modul GPS je hlavní součástí našeho projektu systému sledování vozidel. Toto zařízení přijímá souřadnice ze satelitu každou sekundu s časem a datem.
Modul GPS odesílá data související se sledováním polohy v reálném čase a odesílá tolik dat ve formátu NMEA (viz snímek obrazovky níže). Formát NMEA se skládá z několika vět, ve kterých potřebujeme pouze jednu větu. Tato věta začíná od $ GPGGA a obsahuje souřadnice, čas a další užitečné informace. Toto GPGGA se označuje jako opravná data globálního pozičního systému. Další informace o čtení dat GPS a jejich řetězcích naleznete zde.
Můžeme extrahovat souřadnice z řetězce $ GPGGA počítáním čárek v řetězci. Předpokládejme, že najdete řetězec $ GPGGA a uložíte jej do pole, pak Latitude najdete po dvou čárkách a Longitude najdete po čtyřech čárkách. Nyní lze tyto zeměpisné šířky a délky vložit do jiných polí.
Níže je řetězec $ GPGGA spolu s jeho popisem:
$ GPGGA, 104534 000 7791,0381, N, 06727,4434, E, 1,08,0,9 510,4, M, 43,9, M,, * 47
$ GPGGA, HHMMSS.SSS, zeměpisná šířka, N, zeměpisná délka, E, FQ, NOS, HDP, nadmořská výška, M, výška, M,, data kontrolního součtu
Identifikátor |
Popis |
$ GPGGA |
Údaje o opravách globálního pozičního systému |
HHMMSS.SSS |
Čas v hodinových minutových sekundách a milisekundách. |
Zeměpisná šířka |
Zeměpisná šířka (souřadnice) |
N |
Směr N = sever, S = jih |
Zeměpisná délka |
Zeměpisná délka (souřadnice) |
E |
Směr E = východ, W = západ |
FQ |
Opravte údaje o kvalitě |
NOS |
Počet použitých satelitů |
HPD |
Horizontální ředění přesnosti |
Nadmořská výška |
Nadmořská výška od hladiny moře |
M |
Metr |
Výška |
Výška |
Kontrolní součet |
Data kontrolního součtu |
Můžete zkontrolovat naše další projekty GPS:
- Arduino Vehicle Tracker na bázi GPS a GSM
- Arduino systém varování před nehodami vozidel pomocí GPS, GSM a akcelerometru
- Jak používat GPS s Arduino
- Sledujte vozidlo na Google Maps pomocí Arduino, ESP8266 a GPS
Příprava Raspberry Pi na komunikaci s GPS:
Dobře, takže skočte, takže to nebude nudné, předpokládám, že už víte hodně o Raspberry Pi, dost na to, abyste si nainstalovali svůj OS, získali IP adresu, připojili se k terminálovému softwaru, jako je tmel a další věci o PI. Pokud byste měli problém s některou z výše zmíněných věcí, udeřte mě do sekce komentářů a rád vám pomůžu.
První věc, kterou musíme udělat, aby tento projekt proběhl, je připravit náš Raspberry Pi 3, abychom mohli komunikovat s modulem GPS přes UART, věřte mi, je to docela ošemetné a docela se to snažilo napravit, ale pokud budete postupovat můj průvodce opatrně, dostanete to najednou, to je docela nejtěžší část projektu. Zde jsme použili modul GPS Neo 6m v2.
Chcete-li se ponořit, zde je malé vysvětlení toho, jak funguje Raspberry Pi 3 UART.
Raspberry Pi má dva vestavěné UART, PL011 a mini UART. Jsou implementovány pomocí různých hardwarových bloků, takže mají mírně odlišné vlastnosti. Na malině pi 3 je však bezdrátový / bluetooth modul připojen k PLO11 UART, zatímco mini UART se používá pro výstup linuxové konzoly. Podle toho, jak to uvidíte, definuji PLO11 jako nejlepší ze dvou UART kvůli jeho úrovni implementace. Takže pro tento projekt deaktivujeme modul Bluetooth z PLO11 UART pomocí překrytí dostupného v aktualizované aktuální verzi Raspbian Jessie.
Krok 1: Aktualizace Raspberry Pi:
První věc, kterou mám rád, je, že dělám před zahájením každého projektu aktualizaci maliny pi. Pojďme tedy udělat obvyklé a spustit níže uvedené příkazy;
sudo apt-get aktualizace sudo apt-get aktualizace
poté restartujte systém pomocí;
sudo restart
Krok 2: Nastavení UART v Raspberry Pi:
První věc, kterou v tomto rámci uděláme, je úprava souboru /boot/config.txt . Chcete-li to provést, spusťte níže uvedené příkazy:
sudo nano /boot/config.txt
ve spodní části souboru config.txt přidejte následující řádky
dtparam = spi = na dtoverlay = pi3-disable-bt core_freq = 250 enable_uart = 1 force_turbo = 1
ctrl + x pro ukončení a stiskněte y a stiskněte pro uložení.
Zajistěte, aby nedošlo k žádným překlepům nebo chybám dvojitou kontrolou, protože chyba s tímto může zabránit spuštění vašeho pi.
Jaké jsou důvody těchto příkazů, force_turbo umožňuje UART používat maximální frekvenci jádra, kterou v tomto případě nastavujeme na 250. Důvodem je zajistit konzistenci a integritu přijatých sériových dat. V tomto okamžiku je důležité si uvědomit, že použití force_turbo = 1 zruší záruku vaší malinové pi, ale kromě toho je to docela bezpečné.
Dtoverlay = PI3-disable-BT odpojí bluetooth z ttyAMA0 , to je umožnit nám přístup pro plné využití UART výkon dostupný prostřednictvím ttyAMAO místo mini UART ttyS0.
Druhým krokem v této části nastavení UART je úprava boot / cmdline.txt
Navrhuji, abyste si před editací vytvořili kopii souboru cmdline.txt a uložili ji, abyste se k ní mohli v případě potřeby později vrátit. To lze provést pomocí;
sudo cp boot / cmdline.txt boot / cmdline_backup.txt sudo nano /boot.cmdline.txt
Nahraďte obsah;
dwc_otg.lpm_enable = 0 console = tty1 root = / dev / mmcblk0p2 rootfstype = ext4 výtah = termín fsck.repair = ano rootwait tiché úvodní konzoly plymouth.ignore-serial
Uložit a odejít.
S tímto provedením budeme muset znovu provést restart systému, aby se provedly změny ( sudo reboot ).
Krok 3: Deaktivace služby Raspberry Pi Serial Getty Service
Dalším krokem je deaktivace služby Pi seriálu getty , příkaz zabrání jejímu opětovnému spuštění při restartu:
sudo systemctl stop [email protected] sudo systemctl vypnout [email protected]
Pomocí následujících příkazů je možné ji v případě potřeby znovu povolit
sudo systemctl povolit [email protected] sudo systemctl spustit [email protected]
Restartujte systém.
Krok 4: Aktivace ttyAMAO:
Deaktivovali jsme ttyS0, další věcí je, abychom povolili ttyAMAO .
sudo systemctl povolit [email protected]
Krok 5: Nainstalujte Minicom a pynmea2:
Budeme minicom pro připojení k modulu GPS a pochopení dat. Je to také jeden z nástrojů, které použijeme k testování, zda náš modul GPS funguje dobře. Alternativou k minicomu je démonový software GPSD.
sudo apt-get install minicom
Abychom snadno analyzovali přijatá data, využijeme knihovnu pynmea2 . Lze jej nainstalovat pomocí;
sudo pip install pynmea2
Dokumentaci knihovny naleznete zde
Krok 6: Instalace knihovny LCD:
V tomto kurzu budeme používat knihovnu AdaFruit. Knihovna byla vytvořena pro obrazovky AdaFruit, ale funguje také pro zobrazovací desky pomocí HD44780. Pokud je váš displej založen na tomto, měl by fungovat bez problémů.
Cítím se lépe naklonovat knihovnu a nainstalovat přímo. Klonovat běh;
git klon
přejděte do klonovaného adresáře a nainstalujte jej
cd./Adafruit_Python_CharLCD sudo python setup.py instalace
V této fázi navrhnu další restart, takže jsme připraveni pokračovat v připojování komponent.
Připojení pro GPS modul Raspberry Pi:
Připojte GPS modul a LCD k Raspberry Pi, jak je znázorněno na schématu níže.
Testování před skriptem Python:
Cítím, že je důležité otestovat připojení modulu GPS, než přistoupíme k pythonovskému skriptu. K tomu použijeme minicom. Spusťte příkaz:
sudo minicom -D / dev / ttyAMA0 -b9600
kde 9600 představuje přenosovou rychlost, kterou modul GPS komunikuje. To může být použito, jakmile jsme si jisti datovou komunikací mezi GPS a RPI, je čas napsat náš skript pythonu.
Zkoušku lze provést také pomocí kat
sudo cat / dev / ttyAMA0
V okně můžete vidět věty NMEA, o kterých jsme hovořili dříve.
Skript Python pro tento výukový program Raspberry Pi GPS je uveden níže v části Kód.
Po všem, co bylo řečeno, je čas otestovat celý systém. Je důležité, abyste zajistili, že vaše GPS bude mít dobrou opravu. Když ji vyjmete, většina GPS vyžaduje pro opravu tři až 4 satelity, i když moje fungovala uvnitř.
Funguje správně? Ano…
Máte dotazy nebo komentáře? Umístěte je do sekce komentářů.
Demonstrační video je uvedeno níže, kde jsme pomocí GPS a Raspberry Pi ukázali polohu na zeměpisné šířce a délce na LCD.