3.4 KiB
Dekódování GPS dat - Virtuální IoT zařízení a Raspberry Pi
V této části lekce budete dekódovat NMEA zprávy přečtené ze senzoru GPS pomocí Raspberry Pi nebo Virtuálního IoT zařízení a extrahovat zeměpisnou šířku a délku.
Dekódování GPS dat
Jakmile jsou surová NMEA data přečtena ze sériového portu, mohou být dekódována pomocí open source knihovny NMEA.
Úkol - dekódování GPS dat
Naprogramujte zařízení tak, aby dekódovalo GPS data.
-
Otevřete projekt aplikace
gps-sensor
, pokud již není otevřený. -
Nainstalujte balíček
pynmea2
pomocí Pip. Tento balíček obsahuje kód pro dekódování NMEA zpráv.pip3 install pynmea2
-
Přidejte následující kód do importů v souboru
app.py
, abyste importovali modulpynmea2
:import pynmea2
-
Nahraďte obsah funkce
print_gps_data
následujícím: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 knihovnu
pynmea2
k analýze řádku přečteného ze sériového portu UART.Pokud je typ věty zprávy
GGA
, jedná se o zprávu o určení polohy, která je zpracována. Hodnoty zeměpisné šířky a délky jsou přečteny ze zprávy a převedeny na desetinné stupně z formátu NMEA(d)ddmm.mmmm
. Funkcedm_to_sd
provádí tento převod.Poté je zkontrolován směr zeměpisné šířky, a pokud je šířka jižní, hodnota je převedena na záporné číslo. Stejně tak u zeměpisné délky, pokud je západní, je převedena na záporné číslo.
Nakonec jsou souřadnice vytištěny na konzoli spolu s počtem satelitů použitých k určení polohy.
-
Spusťte kód. Pokud používáte virtuální IoT zařízení, ujistěte se, že aplikace CounterFit běží a GPS data jsou odesílána.
pi@raspberrypi:~/gps-sensor $ python3 app.py 47.6423109,-122.1390293 - from 3 satellites
💁 Tento kód najdete ve složce code-gps-decode/virtual-device nebo ve složce code-gps-decode/pi.
😀 Vaše programování senzoru GPS s dekódováním dat bylo úspěšné!
Prohlášení:
Tento dokument byl přeložen pomocí služby pro automatický překlad Co-op Translator. Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za závazný zdroj. Pro důležité informace doporučujeme profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu.