3.3 KiB
Dekode GPS-data - Virtuell IoT-maskinvare og Raspberry Pi
I denne delen av leksjonen skal du dekode NMEA-meldingene som leses fra GPS-sensoren av Raspberry Pi eller Virtuell IoT-enhet, og hente ut breddegrad og lengdegrad.
Dekode GPS-data
Når de rå NMEA-dataene er lest fra seriellporten, kan de dekodes ved hjelp av et åpen kildekode NMEA-bibliotek.
Oppgave - dekode GPS-data
Programmer enheten til å dekode GPS-dataene.
-
Åpne
gps-sensor
-app-prosjektet hvis det ikke allerede er åpent. -
Installer
pynmea2
Pip-pakken. Denne pakken inneholder kode for å dekode NMEA-meldinger.pip3 install pynmea2
-
Legg til følgende kode i importene i
app.py
-filen for å importerepynmea2
-modulen:import pynmea2
-
Erstatt innholdet i
print_gps_data
-funksjonen med følgende: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')
Denne koden bruker
pynmea2
-biblioteket til å analysere linjen som leses fra UART-seriellporten.Hvis setningstypen til meldingen er
GGA
, er dette en posisjonsfikseringsmelding, og den behandles. Bredde- og lengdegradsverdiene leses fra meldingen og konverteres til desimalgrader fra NMEA-formatet(d)ddmm.mmmm
. Funksjonendm_to_sd
utfører denne konverteringen.Retningen til breddegraden sjekkes deretter, og hvis breddegraden er sør, konverteres verdien til et negativt tall. Det samme gjelder lengdegraden; hvis den er vest, konverteres den til et negativt tall.
Til slutt skrives koordinatene ut til konsollen, sammen med antall satellitter som ble brukt for å finne posisjonen.
-
Kjør koden. Hvis du bruker en virtuell IoT-enhet, må du sørge for at CounterFit-appen kjører og at GPS-dataene sendes.
pi@raspberrypi:~/gps-sensor $ python3 app.py 47.6423109,-122.1390293 - from 3 satellites
💁 Du finner denne koden i code-gps-decode/virtual-device-mappen, eller i code-gps-decode/pi-mappen.
😀 Programmet ditt for GPS-sensor med datadekoding var en suksess!
Ansvarsfraskrivelse:
Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten Co-op Translator. Selv om vi streber etter nøyaktighet, vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.