3.3 KiB
Avkoda GPS-data - Virtuell IoT-hårdvara och Raspberry Pi
I den här delen av lektionen kommer du att avkoda NMEA-meddelanden som lästs från GPS-sensorn av Raspberry Pi eller Virtuell IoT-enhet, och extrahera latitud och longitud.
Avkoda GPS-data
När rå NMEA-data har lästs från seriella porten kan den avkodas med hjälp av ett öppet källkods-bibliotek för NMEA.
Uppgift - avkoda GPS-data
Programmera enheten för att avkoda GPS-data.
-
Öppna projektet
gps-sensor
-appen om det inte redan är öppet. -
Installera
pynmea2
Pip-paketet. Detta paket innehåller kod för att avkoda NMEA-meddelanden.pip3 install pynmea2
-
Lägg till följande kod i importerna i filen
app.py
för att importera modulenpynmea2
:import pynmea2
-
Ersätt innehållet i funktionen
print_gps_data
med följande: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')
Den här koden använder biblioteket
pynmea2
för att analysera raden som lästs från UART-seriella porten.Om meddelandets sats-typ är
GGA
, är detta ett positionsfixeringsmeddelande och bearbetas. Latitud- och longitudvärdena läses från meddelandet och konverteras till decimalgrader från NMEA-formatet(d)ddmm.mmmm
. Funktionendm_to_sd
utför denna konvertering.Latitudens riktning kontrolleras sedan, och om latituden är söderut konverteras värdet till ett negativt tal. Samma sak gäller för longituden; om den är västerut konverteras den till ett negativt tal.
Slutligen skrivs koordinaterna ut till konsolen, tillsammans med antalet satelliter som används för att få positionen.
-
Kör koden. Om du använder en virtuell IoT-enhet, se till att CounterFit-appen körs och att GPS-data skickas.
pi@raspberrypi:~/gps-sensor $ python3 app.py 47.6423109,-122.1390293 - from 3 satellites
💁 Du kan hitta denna kod i mappen code-gps-decode/virtual-device, eller mappen code-gps-decode/pi.
😀 Ditt GPS-sensorprogram med dataavkodning blev en framgång!
Ansvarsfriskrivning:
Detta dokument har översatts med hjälp av AI-översättningstjänsten Co-op Translator. Även om vi strävar efter noggrannhet, bör det noteras att automatiska översättningar kan innehålla fel eller felaktigheter. Det ursprungliga dokumentet på dess originalspråk bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår vid användning av denna översättning.