6.6 KiB
Leggere i dati GPS - Wio Terminal
In questa parte della lezione, aggiungerai un sensore GPS al tuo Wio Terminal e leggerai i valori da esso.
Hardware
Il Wio Terminal necessita di un sensore GPS.
Il sensore che utilizzerai è un Grove GPS Air530 sensor. Questo sensore può connettersi a più sistemi GPS per ottenere una posizione rapida e precisa. Il sensore è composto da 2 parti: l'elettronica principale del sensore e un'antenna esterna collegata tramite un filo sottile per captare le onde radio dai satelliti.
Questo è un sensore UART, quindi invia i dati GPS tramite UART.
Collegare il sensore GPS
Il sensore Grove GPS può essere collegato al Wio Terminal.
Attività - collegare il sensore GPS
Collega il sensore GPS.
-
Inserisci un'estremità di un cavo Grove nella presa del sensore GPS. Può essere inserito solo in un verso.
-
Con il Wio Terminal scollegato dal computer o da altre fonti di alimentazione, collega l'altra estremità del cavo Grove alla presa Grove sul lato sinistro del Wio Terminal, guardando lo schermo. Questa è la presa più vicina al pulsante di accensione.
-
Posiziona il sensore GPS in modo che l'antenna collegata abbia visibilità verso il cielo - idealmente vicino a una finestra aperta o all'esterno. È più facile ottenere un segnale chiaro senza ostacoli davanti all'antenna.
-
Ora puoi collegare il Wio Terminal al tuo computer.
-
Il sensore GPS ha 2 LED: un LED blu che lampeggia quando vengono trasmessi dati e un LED verde che lampeggia ogni secondo quando riceve dati dai satelliti. Assicurati che il LED blu lampeggi quando accendi il Wio Terminal. Dopo alcuni minuti, il LED verde inizierà a lampeggiare - se non lo fa, potrebbe essere necessario riposizionare l'antenna.
Programmare il sensore GPS
Ora il Wio Terminal può essere programmato per utilizzare il sensore GPS collegato.
Attività - programmare il sensore GPS
Programma il dispositivo.
-
Crea un nuovo progetto per il Wio Terminal utilizzando PlatformIO. Chiama questo progetto
gps-sensor
. Aggiungi del codice nella funzionesetup
per configurare la porta seriale. -
Aggiungi la seguente direttiva
include
all'inizio del filemain.cpp
. Questo include un file di intestazione con funzioni per configurare la porta Grove sinistra per UART.#include <wiring_private.h>
-
Sotto questa direttiva, aggiungi la seguente riga di codice per dichiarare una connessione alla porta seriale UART:
static Uart Serial3(&sercom3, PIN_WIRE_SCL, PIN_WIRE_SDA, SERCOM_RX_PAD_1, UART_TX_PAD_0);
-
È necessario aggiungere del codice per reindirizzare alcuni gestori di segnali interni a questa porta seriale. Aggiungi il seguente codice sotto la dichiarazione di
Serial3
:void SERCOM3_0_Handler() { Serial3.IrqHandler(); } void SERCOM3_1_Handler() { Serial3.IrqHandler(); } void SERCOM3_2_Handler() { Serial3.IrqHandler(); } void SERCOM3_3_Handler() { Serial3.IrqHandler(); }
-
Nella funzione
setup
, sotto la configurazione della portaSerial
, configura la porta seriale UART con il seguente codice:Serial3.begin(9600); while (!Serial3) ; // Wait for Serial3 to be ready delay(1000);
-
Sotto questo codice nella funzione
setup
, aggiungi il seguente codice per collegare il pin Grove alla porta seriale:pinPeripheral(PIN_WIRE_SCL, PIO_SERCOM_ALT);
-
Aggiungi la seguente funzione prima della funzione
loop
per inviare i dati GPS al monitor seriale:void printGPSData() { Serial.println(Serial3.readStringUntil('\n')); }
-
Nella funzione
loop
, aggiungi il seguente codice per leggere dalla porta seriale UART e stampare l'output sul monitor seriale:while (Serial3.available() > 0) { printGPSData(); } delay(1000);
Questo codice legge dalla porta seriale UART. La funzione
readStringUntil
legge fino a un carattere terminatore, in questo caso un carattere di nuova linea. Questo permette di leggere un'intera frase NMEA (le frasi NMEA terminano con un carattere di nuova linea). Finché è possibile leggere dati dalla porta seriale UART, questi vengono letti e inviati al monitor seriale tramite la funzioneprintGPSData
. Una volta che non è più possibile leggere dati, la funzioneloop
attende per 1 secondo (1.000ms). -
Compila e carica il codice sul Wio Terminal.
-
Una volta caricato, puoi monitorare i dati GPS utilizzando il monitor seriale.
> Executing task: platformio device monitor < --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time --- More details at http://bit.ly/pio-monitor-filters --- Miniterm on /dev/cu.usbmodem1201 9600,8,N,1 --- --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H --- $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67 $GPGSA,A,1,,,,,,,,,,,,,,,*1E $BDGSA,A,1,,,,,,,,,,,,,,,*0F $GPGSV,1,1,00*79 $BDGSV,1,1,00*68
💁 Puoi trovare questo codice nella cartella code-gps/wio-terminal.
😀 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 possono 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.