3.5 KiB
Decode GPS-gegevens - Virtuele IoT-hardware en Raspberry Pi
In dit deel van de les decodeer je de NMEA-berichten die door de GPS-sensor worden gelezen via de Raspberry Pi of Virtuele IoT-apparaat, en haal je de breedte- en lengtegraad eruit.
Decodeer GPS-gegevens
Zodra de ruwe NMEA-gegevens van de seriële poort zijn gelezen, kunnen ze worden gedecodeerd met behulp van een open source NMEA-bibliotheek.
Taak - decodeer GPS-gegevens
Programmeer het apparaat om de GPS-gegevens te decoderen.
-
Open het
gps-sensor
-app-project als het nog niet geopend is. -
Installeer het
pynmea2
Pip-pakket. Dit pakket bevat code om NMEA-berichten te decoderen.pip3 install pynmea2
-
Voeg de volgende code toe aan de imports in het bestand
app.py
om de modulepynmea2
te importeren:import pynmea2
-
Vervang de inhoud van de functie
print_gps_data
door het volgende: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')
Deze code gebruikt de
pynmea2
-bibliotheek om de regel die is gelezen van de UART-seriële poort te parseren.Als het zinstype van het bericht
GGA
is, dan is dit een positie-fixbericht en wordt het verwerkt. De breedte- en lengtegraadwaarden worden uit het bericht gelezen en omgezet naar decimale graden vanuit het NMEA-formaat(d)ddmm.mmmm
. De functiedm_to_sd
voert deze conversie uit.Vervolgens wordt de richting van de breedtegraad gecontroleerd, en als de breedtegraad zuidelijk is, wordt de waarde omgezet naar een negatief getal. Hetzelfde geldt voor de lengtegraad: als deze westelijk is, wordt deze omgezet naar een negatief getal.
Uiteindelijk worden de coördinaten naar de console geprint, samen met het aantal satellieten dat is gebruikt om de locatie te bepalen.
-
Voer de code uit. Als je een virtueel IoT-apparaat gebruikt, zorg er dan voor dat de CounterFit-app actief is en de GPS-gegevens worden verzonden.
pi@raspberrypi:~/gps-sensor $ python3 app.py 47.6423109,-122.1390293 - from 3 satellites
💁 Je kunt deze code vinden in de map code-gps-decode/virtual-device, of in de map code-gps-decode/pi.
😀 Je GPS-sensorprogramma met gegevensdecodering is een succes!
Disclaimer:
Dit document is vertaald met behulp van de AI-vertalingsservice Co-op Translator. Hoewel we streven naar nauwkeurigheid, dient u zich ervan bewust te zijn dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor cruciale informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor eventuele misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.