3.3 KiB
Dekódovanie GPS údajov - Virtuálny IoT hardvér a Raspberry Pi
V tejto časti lekcie dekódujete NMEA správy, ktoré číta GPS senzor cez Raspberry Pi alebo Virtuálne IoT zariadenie, a extrahujete zemepisnú šírku a dĺžku.
Dekódovanie GPS údajov
Keď sú surové NMEA údaje prečítané zo sériového portu, môžu byť dekódované pomocou open source NMEA knižnice.
Úloha - dekódovanie GPS údajov
Naprogramujte zariadenie na dekódovanie GPS údajov.
-
Otvorte projekt aplikácie
gps-sensor
, ak ešte nie je otvorený. -
Nainštalujte balík
pynmea2
cez Pip. Tento balík obsahuje kód na dekódovanie NMEA správ.pip3 install pynmea2
-
Pridajte nasledujúci kód do importov v súbore
app.py
, aby ste importovali modulpynmea2
:import pynmea2
-
Nahraďte obsah funkcie
print_gps_data
nasledujúcim kódom:msg = pynmea2.parse(line) if msg.sentence_type == 'GGA': lat = pynmea2.dm_to_sd(msg.lat) lon = pynmea2.dm_to_sd(msg.lon) if msg.lat_dir == 'S': lat = lat * -1 if msg.lon_dir == 'W': lon = lon * -1 print(f'{lat},{lon} - from {msg.num_sats} satellites')
Tento kód použije knižnicu
pynmea2
na analýzu riadku prečítaného zo sériového portu UART.Ak je typ vety správy
GGA
, ide o správu o určení polohy, ktorá sa spracuje. Hodnoty zemepisnej šírky a dĺžky sa prečítajú zo správy a prevedú na desatinné stupne z NMEA formátu(d)ddmm.mmmm
. Funkciadm_to_sd
vykonáva tento prevod.Následne sa skontroluje smer zemepisnej šírky, a ak je šírka južná, hodnota sa prevedie na záporné číslo. To isté platí pre zemepisnú dĺžku, ak je západná, prevedie sa na záporné číslo.
Nakoniec sa súradnice vytlačia do konzoly spolu s počtom satelitov použitých na určenie polohy.
-
Spustite kód. Ak používate virtuálne IoT zariadenie, uistite sa, že aplikácia CounterFit je spustená a GPS údaje sa odosielajú.
pi@raspberrypi:~/gps-sensor $ python3 app.py 47.6423109,-122.1390293 - from 3 satellites
💁 Tento kód nájdete v priečinku code-gps-decode/virtual-device alebo v priečinku code-gps-decode/pi.
😀 Váš program pre GPS senzor s dekódovaním údajov bol úspešný!
Upozornenie:
Tento dokument bol preložený pomocou služby na automatický preklad Co-op Translator. Aj keď sa snažíme o presnosť, upozorňujeme, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre dôležité informácie sa odporúča profesionálny ľudský preklad. Nezodpovedáme za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu.