7.7 KiB
Leggere dati GPS - Hardware IoT Virtuale
In questa parte della lezione, aggiungerai un sensore GPS al tuo dispositivo IoT virtuale e leggerai i valori da esso.
Hardware Virtuale
Il dispositivo IoT virtuale utilizzerà un sensore GPS simulato accessibile tramite UART attraverso una porta seriale.
Un sensore GPS fisico avrà un'antenna per captare le onde radio dai satelliti GPS e convertire i segnali GPS in dati GPS. La versione virtuale simula questo permettendoti di impostare una latitudine e una longitudine, inviare frasi NMEA grezze o caricare un file GPX con più posizioni che possono essere restituite in sequenza.
🎓 Le frasi NMEA saranno trattate più avanti in questa lezione.
Aggiungere il sensore a CounterFit
Per utilizzare un sensore GPS virtuale, devi aggiungerne uno all'app CounterFit.
Attività - aggiungere il sensore a CounterFit
Aggiungi il sensore GPS all'app CounterFit.
-
Crea una nuova app Python sul tuo computer in una cartella chiamata
gps-sensor
con un singolo file chiamatoapp.py
e un ambiente virtuale Python, e aggiungi i pacchetti pip di CounterFit.⚠️ Puoi fare riferimento alle istruzioni per creare e configurare un progetto Python CounterFit nella lezione 1, se necessario.
-
Installa un pacchetto Pip aggiuntivo per installare uno shim di CounterFit che può comunicare con sensori basati su UART tramite una connessione seriale. Assicurati di installarlo da un terminale con l'ambiente virtuale attivato.
pip install counterfit-shims-serial
-
Assicurati che l'app web di CounterFit sia in esecuzione.
-
Crea un sensore GPS:
-
Nella casella Create sensor nel pannello Sensors, apri il menu a tendina Sensor type e seleziona UART GPS.
-
Lascia il Port impostato su /dev/ttyAMA0.
-
Seleziona il pulsante Add per creare il sensore GPS sulla porta
/dev/ttyAMA0
.
Il sensore GPS sarà creato e apparirà nella lista dei sensori.
-
Programmare il sensore GPS
Ora il dispositivo IoT virtuale può essere programmato per utilizzare il sensore GPS virtuale.
Attività - programmare il sensore GPS
Programma l'app del sensore GPS.
-
Assicurati che l'app
gps-sensor
sia aperta in VS Code. -
Apri il file
app.py
. -
Aggiungi il seguente codice all'inizio di
app.py
per connettere l'app a CounterFit:from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000)
-
Aggiungi il seguente codice sotto questo per importare alcune librerie necessarie, inclusa la libreria per la porta seriale di CounterFit:
import time import counterfit_shims_serial serial = counterfit_shims_serial.Serial('/dev/ttyAMA0')
Questo codice importa il modulo
serial
dal pacchetto Pipcounterfit_shims_serial
. Successivamente si connette alla porta seriale/dev/ttyAMA0
, che è l'indirizzo della porta seriale utilizzata dal sensore GPS virtuale per la sua porta UART. -
Aggiungi il seguente codice sotto questo per leggere dalla porta seriale e stampare i valori sulla console:
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)
Viene definita una funzione chiamata
print_gps_data
che stampa sulla console la linea passata come parametro.Successivamente, il codice esegue un ciclo infinito, leggendo quante più linee di testo possibile dalla porta seriale in ogni ciclo. Chiama la funzione
print_gps_data
per ogni linea.Dopo che tutti i dati sono stati letti, il ciclo si interrompe per 1 secondo, quindi riprende.
-
Esegui questo codice, assicurandoti di utilizzare un terminale diverso da quello in cui l'app CounterFit è in esecuzione, in modo che l'app CounterFit rimanga attiva.
-
Dall'app CounterFit, modifica il valore del sensore GPS. Puoi farlo in uno dei seguenti modi:
-
Imposta la Source su
Lat/Lon
e specifica una latitudine, una longitudine e il numero di satelliti utilizzati per ottenere il fix GPS. Questo valore verrà inviato solo una volta, quindi seleziona la casella Repeat per far sì che i dati si ripetano ogni secondo. -
Imposta la Source su
NMEA
e aggiungi alcune frasi NMEA nella casella di testo. Tutti questi valori verranno inviati, con un intervallo di 1 secondo prima che ogni nuova frase GGA (fix di posizione) possa essere letta.Puoi utilizzare uno strumento come nmeagen.org per generare queste frasi disegnando su una mappa. Questi valori verranno inviati solo una volta, quindi seleziona la casella Repeat per far sì che i dati si ripetano un secondo dopo che tutti sono stati inviati.
-
Imposta la Source su GPX file e carica un file GPX con posizioni di tracciamento. Puoi scaricare file GPX da numerosi siti di mappe e escursionismo popolari, come AllTrails. Questi file contengono più posizioni GPS come un percorso, e il sensore GPS restituirà ogni nuova posizione a intervalli di 1 secondo.
Questi valori verranno inviati solo una volta, quindi seleziona la casella Repeat per far sì che i dati si ripetano un secondo dopo che tutti sono stati inviati.
Una volta configurate le impostazioni GPS, seleziona il pulsante Set per confermare questi valori nel sensore.
-
-
Vedrai l'output grezzo del sensore GPS, qualcosa di simile al seguente:
$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
💁 Puoi trovare questo codice nella cartella code-gps/virtual-device.
😀 Il tuo programma per il sensore GPS è stato un successo!
Disclaimer:
Questo documento è stato tradotto utilizzando il servizio di traduzione automatica Co-op Translator. Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione.