7.3 KiB
Læs GPS-data - Virtuel IoT-hardware
I denne del af lektionen vil du tilføje en GPS-sensor til din virtuelle IoT-enhed og læse værdier fra den.
Virtuel hardware
Den virtuelle IoT-enhed vil bruge en simuleret GPS-sensor, der er tilgængelig via UART gennem en seriel port.
En fysisk GPS-sensor har en antenne til at opfange radiobølger fra GPS-satellitter og konvertere GPS-signaler til GPS-data. Den virtuelle version simulerer dette ved at lade dig enten indstille en bredde- og længdegrad, sende rå NMEA-sætninger eller uploade en GPX-fil med flere lokationer, der kan returneres sekventielt.
🎓 NMEA-sætninger vil blive gennemgået senere i denne lektion
Tilføj sensoren til CounterFit
For at bruge en virtuel GPS-sensor skal du tilføje en til CounterFit-appen.
Opgave - tilføj sensoren til CounterFit
Tilføj GPS-sensoren til CounterFit-appen.
-
Opret en ny Python-app på din computer i en mappe kaldet
gps-sensor
med en enkelt fil kaldetapp.py
og et Python-virtuelt miljø, og tilføj CounterFit pip-pakkerne.⚠️ Du kan henvise til instruktionerne for at oprette og opsætte et CounterFit Python-projekt i lektion 1, hvis nødvendigt.
-
Installer en ekstra Pip-pakke for at installere en CounterFit shim, der kan kommunikere med UART-baserede sensorer via en seriel forbindelse. Sørg for, at du installerer dette fra en terminal med det virtuelle miljø aktiveret.
pip install counterfit-shims-serial
-
Sørg for, at CounterFit-webappen kører.
-
Opret en GPS-sensor:
-
I boksen Create sensor i panelet Sensors, vælg Sensor type og vælg UART GPS.
-
Lad Port være indstillet til /dev/ttyAMA0.
-
Vælg knappen Add for at oprette GPS-sensoren på porten
/dev/ttyAMA0
.
GPS-sensoren vil blive oprettet og vises i sensorlisten.
-
Programmer GPS-sensoren
Den virtuelle IoT-enhed kan nu programmeres til at bruge den virtuelle GPS-sensor.
Opgave - programmer GPS-sensoren
Programmer GPS-sensor-appen.
-
Sørg for, at
gps-sensor
-appen er åben i VS Code. -
Åbn filen
app.py
. -
Tilføj følgende kode øverst i
app.py
for at forbinde appen til CounterFit:from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000)
-
Tilføj følgende kode nedenunder for at importere nogle nødvendige biblioteker, inklusive biblioteket til CounterFit-seriel port:
import time import counterfit_shims_serial serial = counterfit_shims_serial.Serial('/dev/ttyAMA0')
Denne kode importerer
serial
-modulet fra Pip-pakkencounterfit_shims_serial
. Den forbinder derefter til den serielle port/dev/ttyAMA0
- dette er adressen på den serielle port, som den virtuelle GPS-sensor bruger til sin UART-port. -
Tilføj følgende kode nedenunder for at læse fra den serielle port og udskrive værdierne til konsollen:
def print_gps_data(line): print(line.rstrip()) while True: line = serial.readline().decode('utf-8') while len(line) > 0: print_gps_data(line) line = serial.readline().decode('utf-8') time.sleep(1)
En funktion kaldet
print_gps_data
defineres, som udskriver den linje, der sendes til den, til konsollen.Derefter kører koden i en uendelig løkke, hvor den læser så mange tekstlinjer som muligt fra den serielle port i hver iteration. Den kalder funktionen
print_gps_data
for hver linje.Når alle data er læst, sover løkken i 1 sekund og prøver derefter igen.
-
Kør denne kode, og sørg for, at du bruger en anden terminal end den, hvor CounterFit-appen kører, så CounterFit-appen forbliver aktiv.
-
Fra CounterFit-appen kan du ændre værdien af GPS-sensoren. Du kan gøre dette på en af følgende måder:
-
Indstil Source til
Lat/Lon
, og angiv en specifik breddegrad, længdegrad og antal satellitter, der bruges til at få GPS-fix. Denne værdi sendes kun én gang, så marker Repeat-boksen for at få dataene til at gentage hvert sekund. -
Indstil Source til
NMEA
, og tilføj nogle NMEA-sætninger i tekstboksen. Alle disse værdier sendes med en forsinkelse på 1 sekund, før hver ny GGA (positionsfix)-sætning kan læses.Du kan bruge et værktøj som nmeagen.org til at generere disse sætninger ved at tegne på et kort. Disse værdier sendes kun én gang, så marker Repeat-boksen for at få dataene til at gentage 1 sekund efter, at de alle er sendt.
-
Indstil Source til GPX-fil, og upload en GPX-fil med spor-lokationer. Du kan downloade GPX-filer fra en række populære kort- og vandresider, såsom AllTrails. Disse filer indeholder flere GPS-lokationer som en rute, og GPS-sensoren returnerer hver ny lokation med 1 sekunds interval.
Disse værdier sendes kun én gang, så marker Repeat-boksen for at få dataene til at gentage 1 sekund efter, at de alle er sendt.
Når du har konfigureret GPS-indstillingerne, skal du vælge knappen Set for at gemme disse værdier på sensoren.
-
-
Du vil se rå output fra GPS-sensoren, noget i stil med følgende:
$GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67 $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67
💁 Du kan finde denne kode i mappen code-gps/virtual-device.
😀 Dit GPS-sensorprogram var en succes!
Ansvarsfraskrivelse:
Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten Co-op Translator. Selvom vi bestræber os på at opnå nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os ikke ansvar for eventuelle misforståelser eller fejltolkninger, der måtte opstå som følge af brugen af denne oversættelse.