- Požadované komponenty:
- GPS modul a jeho fungovanie:
- Príprava Raspberry Pi na komunikáciu s GPS:
- Pripojenia pre rozhranie GPS modulu Raspberry Pi:
- Testovanie pred skriptom Python:
Jedna z najlepších vstavaných platforiem, ako je Arduino, dala výrobcom a majiteľom domácich majstrov možnosť ľahko získať údaje o polohe pomocou modulu GPS a vytvárať tak veci, ktoré sa spoliehajú na polohu. Vzhľadom na množstvo energie zabalené v Raspberry Pi bude určite celkom úžasné budovať projekty založené na GPS s rovnakými lacnými modulmi GPS, a to je predmetom tohto príspevku. Dnes v tomto projekte predstavíme Interface GPS modul s Raspberry Pi 3.
Cieľom tohto projektu je zhromaždiť údaje o polohe (zemepisná dĺžka a šírka) pomocou modulu UART z modulu GPS a zobraziť ich na displeji LCD 16x2, takže ak nie ste oboznámení so spôsobom, akým displej 16x2 LCD pracuje s Raspberry Pi, je to ďalší skvelá príležitosť vzdelávať sa.
Požadované komponenty:
- Raspberry Pi 3
- GPS modul Neo 6m v2
- 16 x 2 LCD
- Napájací zdroj pre Raspberry Pi
- Kábel LAN na pripojenie pí k počítaču v bezhlavom režime
- Nepájivé pole a štartovacie káble
- Rezistor / potenciometer na LCD
- Pamäťová karta 8 alebo 16 Gb, na ktorej beží Raspbian Jessie
Okrem toho musíme nainštalovať knižnicu GPS Daemon (GPSD), 16x2 LCD Adafruit, ktorú si nainštalujeme neskôr v tomto výučbe.
Tu používame Raspberry Pi 3 s Raspbian Jessie OS. Všetky základné hardvérové a softvérové požiadavky sú už predtým diskutované. Môžete si ich vyhľadať v úvode k Raspberry Pi.
GPS modul a jeho fungovanie:
GPS je skratka pre Global Positioning System (Globálny pozičný systém) a používa sa na zisťovanie zemepisnej šírky a dĺžky ktoréhokoľvek miesta na Zemi s presným časom UTC (Universal Time Coordinated). Modul GPS je hlavnou súčasťou nášho projektu systému sledovania vozidiel. Toto zariadenie prijíma súradnice zo satelitu každú sekundu s časom a dátumom.
GPS modul odosiela údaje týkajúce sa polohy sledovania v reálnom čase a zasiela toľko údajov vo formáte NMEA (pozri snímku obrazovky nižšie). Formát NMEA pozostáva z niekoľkých viet, v ktorých nám stačí iba jedna veta. Táto veta začína od $ GPGGA a obsahuje súradnice, čas a ďalšie užitočné informácie. Toto GPGGA sa označuje ako opravné údaje globálneho pozičného systému. Viac informácií o čítaní údajov GPS a ich reťazcoch nájdete tu.
Môžeme extrahovať súradnice z reťazca $ GPGGA počítaním čiarok v reťazci. Predpokladajme, že nájdete reťazec $ GPGGA a uložíte ho do poľa, potom Latitude nájdete po dvoch čiarkach a Longitude nájdete po štyroch čiarkach. Teraz môžu byť tieto zemepisné šírky a dĺžky vložené do iných polí.
Ďalej je uvedený reťazec $ GPGGA spolu s jeho popisom:
$ GPGGA, 104534 000 7791,0381, N, 06727,4434, E, 1,08,0,9 510,4, M, 43,9, M,, * 47
$ GPGGA, HHMMSS.SSS, zemepisná šírka, N, zemepisná dĺžka, E, FQ, NOS, HDP, nadmorská výška, M, výška, M,, údaje kontrolného súčtu
Identifikátor |
Popis |
$ GPGGA |
Údaje o opravách globálneho pozičného systému |
HHMMSS.SSS |
Čas v hodinách, minútach a sekundách a milisekundách. |
Zemepisná šírka |
Zemepisná šírka (súradnice) |
N |
Smer N = sever, S = juh |
Zemepisná dĺžka |
Zemepisná dĺžka (súradnice) |
E |
Smer E = východ, Z = západ |
FQ |
Opravte údaje o kvalite |
NOS |
Počet použitých satelitov |
HPD |
Horizontálne riedenie presnosti |
Nadmorská výška |
Nadmorská výška od hladiny mora |
M |
Merač |
Výška |
Výška |
Kontrolný súčet |
Údaje kontrolného súčtu |
Môžete skontrolovať naše ďalšie projekty GPS:
- Sledovač vozidiel založený na Arduine využívajúci GPS a GSM
- Systém varovania o nehode vozidla založený na Arduine pomocou GPS, GSM a akcelerometra
- Ako používať GPS s Arduino
- Sledujte vozidlo na Mapách Google pomocou technológií Arduino, ESP8266 a GPS
Príprava Raspberry Pi na komunikáciu s GPS:
Dobre, takže skočte do toho, aby to nebolo nudné, predpokladám, že už viete veľa o Raspberry Pi, dosť na to, aby ste si nainštalovali operačný systém, získali adresu IP, pripojili sa k terminálovému softvéru, ako je tmel a ďalšie veci o PI. Ak by ste mali problém s vykonaním niektorej z vecí uvedených vyššie, kontaktujte ma v sekcii komentárov a rád pomôžem.
Prvá vec, ktorú musíme urobiť, aby sme tento projekt rozbehli, je pripraviť náš Raspberry Pi 3 tak, aby bol schopný komunikovať s GPS modulom cez UART, verte mi, že je to docela ošemetné a pokusilo sa to napraviť, ale ak budete postupovať môj sprievodca opatrne, dostaneš to naraz, toto je dosť najťažšia časť projektu. Tu sme použili modul GPS Neo 6m v2.
Ak sa chcete ponoriť, tu je malé vysvetlenie toho, ako funguje Raspberry Pi 3 UART.
Raspberry Pi má dva vstavané UART, PL011 a mini UART. Implementujú sa pomocou rôznych hardvérových blokov, takže majú mierne odlišné charakteristiky. Na Raspberry Pi 3 je však bezdrôtový / bluetooth modul pripojený k PLO11 UART, zatiaľ čo mini UART sa používa na výstup konzoly linux. Podľa toho, ako to uvidíte, zadefinujem PLO11 ako najlepší z dvoch UART vďaka svojej implementačnej úrovni. Takže pre tento projekt deaktivujeme modul Bluetooth z PLO11 UART pomocou prekrytia dostupného v aktualizovanej aktuálnej verzii Raspbian Jessie.
Krok 1: Aktualizácia Raspberry Pi:
Prvá vec, ktorú by som rád urobil pred začatím každého projektu, je aktualizácia malinovej pí. Poďme teda urobiť obvyklé a spustiť príkazy uvedené nižšie;
sudo apt-get aktualizácia sudo apt-get aktualizácia
potom reštartujte systém pomocou;
sudo reštart
Krok 2: Nastavenie UART v Raspberry Pi:
Prvá vec, ktorú v tejto súvislosti urobíme, je úprava súboru /boot/config.txt . Vykonáte to spustením nasledujúcich príkazov:
sudo nano /boot/config.txt
v dolnej časti súboru config.txt pridajte nasledujúce riadky
dtparam = spi = na dtoverlay = pi3-disable-bt core_freq = 250 enable_uart = 1 force_turbo = 1
ctrl + x ukončite a stlačte y a stlačte Enter pre uloženie.
Dvojitým skontrolovaním zabezpečte, aby neexistovali preklepy alebo chyby, pretože táto chyba môže zabrániť spusteniu vášho pi.
Aké sú dôvody týchto príkazov, force_turbo umožňuje UART používať maximálnu frekvenciu jadra, ktorú v tomto prípade nastavujeme na 250. Dôvodom je zabezpečenie konzistencie a integrity prijatých sériových údajov. V tejto chvíli je dôležité poznamenať, že použitie force_turbo = 1 zruší záruku na vašu malinovú pi, ale okrem toho je celkom bezpečná.
Dtoverlay = PI3-disable-BT odpojí bluetooth z ttyAMA0 , to je umožniť nám prístup pre plné využitie UART výkon dostupný prostredníctvom ttyAMAO miesto mini UART ttyS0.
Druhým krokom v tejto časti nastavenia UART je úprava súboru boot / cmdline.txt
Navrhujem, aby ste si pred úpravami vytvorili kópiu cmdline.txt a najskôr ju uložili, aby ste sa k nej mohli v prípade potreby neskôr vrátiť. To je možné vykonať pomocou;
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ýťah = termín fsck.repair = áno rootwait tiché úvodné konzoly plymouth.ignore-sériové konzoly
Uložiť a ukončiť.
Keď to urobíte, budeme musieť systém reštartovať, aby sa zmeny prejavili ( sudo reboot ).
Krok 3: Zakázanie služby Raspberry Pi Serial Getty Service
Ďalším krokom je deaktivácia služby Pi's serial the getty service , príkaz zabráni jej opätovnému spusteniu pri reštarte:
sudo systemctl stop [email protected] sudo systemctl vypnúť [email protected]
Pomocou nasledujúcich príkazov je možné v prípade potreby túto funkciu znova povoliť
sudo systemctl povoliť [email protected] sudo systemctl spustiť [email protected]
Reštartujte systém.
Krok 4: Aktivácia ttyAMAO:
Deaktivovali sme ttyS0, ďalšia vec je, aby sme povolili ttyAMAO .
sudo systemctl povoliť [email protected]
Krok 5: Nainštalujte Minicom a pynmea2:
Budeme minicom na pripojenie k modulu GPS a pochopenie údajov. Je to tiež jeden z nástrojov, ktoré použijeme na testovanie, či náš modul GPS funguje dobre. Alternatívou k minicom je démonový softvér GPSD.
sudo apt-get nainštalovať minicom
Na ľahkú analýzu prijatých údajov využijeme knižnicu pynmea2 . Môže byť inštalovaný pomocou;
sudo pip nainštalovať pynmea2
Dokumentáciu knižnice nájdete tu
Krok 6: Inštalácia knižnice LCD:
Pre tento tutoriál budeme používať knižnicu AdaFruit. Knižnica bola vyrobená pre obrazovky AdaFruit, ale funguje aj pre zobrazovacie dosky pomocou HD44780. Ak je váš displej založený na tomto, potom by mal fungovať bez problémov.
Cítim sa lepšie naklonovať knižnicu a jednoducho nainštalovať priamo. Klonovať beh;
git klon
zmeniť do klonovaného adresára a nainštalovať ho
cd./Adafruit_Python_CharLCD sudo python setup.py nainštalovať
V tejto fáze navrhnem ďalší reštart, takže sme pripravení pokračovať v pripájaní komponentov.
Pripojenia pre rozhranie GPS modulu Raspberry Pi:
Pripojte modul GPS a displej LCD k Raspberry Pi, ako je to znázornené na schéme nižšie.
Testovanie pred skriptom Python:
Považujem za dôležité otestovať pripojenie modulu GPS skôr, ako pristúpime k pythonovskému skriptu. Použijeme na to minicom. Spustite príkaz:
sudo minicom -D / dev / ttyAMA0 -b9600
kde 9600 predstavuje prenosovú rýchlosť, ktorou modul GPS komunikuje. Toto sa môže použiť, keď si budeme istí dátovou komunikáciou medzi GPS a RPI, je čas na napísanie nášho python skriptu.
Skúšku je možné vykonať aj pomocou kat
sudo cat / dev / ttyAMA0
V okne môžete vidieť vety NMEA, o ktorých sme hovorili už skôr.
Skript Python pre tento výukový program Raspberry Pi GPS je uvedený nižšie v časti Kód.
Keď už je všetko povedané, je čas otestovať celý systém. Je dôležité, aby ste sa ubezpečili, že váš systém GPS získava dobrú opravu. Keď ho vytiahnete, väčšina systémov GPS vyžaduje opravu medzi tromi až štyrmi satelitmi, hoci môj fungoval vo vnútri.
Funguje správne? Áno…
Máte otázky alebo pripomienky? Presuňte ich do sekcie komentárov.
Demonštračné video je uvedené nižšie, kde sme pomocou GPS a Raspberry Pi ukázali polohu na zemepisnej šírke a dĺžke.