6.2 KiB
Les GPS-data - Wio Terminal
I denne delen av leksjonen skal du legge til en GPS-sensor på din Wio Terminal og lese verdier fra den.
Maskinvare
Wio Terminal trenger en GPS-sensor.
Sensoren du skal bruke er en Grove GPS Air530-sensor. Denne sensoren kan koble seg til flere GPS-systemer for en rask og nøyaktig posisjonsbestemmelse. Sensoren består av to deler - de elektroniske komponentene i sensoren og en ekstern antenne som er koblet til med en tynn ledning for å motta radiosignaler fra satellittene.
Dette er en UART-sensor, som sender GPS-data via UART.
Koble til GPS-sensoren
Grove GPS-sensoren kan kobles til Wio Terminal.
Oppgave - koble til GPS-sensoren
Koble til GPS-sensoren.
-
Sett den ene enden av en Grove-kabel inn i kontakten på GPS-sensoren. Den kan kun settes inn på én måte.
-
Med Wio Terminal frakoblet fra datamaskinen eller annen strømkilde, koble den andre enden av Grove-kabelen til den venstre Grove-kontakten på Wio Terminal, sett fra skjermen. Dette er kontakten nærmest av/på-knappen.
-
Plasser GPS-sensoren slik at den tilkoblede antennen har fri sikt til himmelen - helst ved et åpent vindu eller utendørs. Det er lettere å få et klart signal uten hindringer foran antennen.
-
Du kan nå koble Wio Terminal til datamaskinen.
-
GPS-sensoren har to LED-lys - en blå LED som blinker når data overføres, og en grønn LED som blinker hvert sekund når den mottar data fra satellitter. Sørg for at den blå LED-en blinker når du slår på Wio Terminal. Etter noen minutter vil den grønne LED-en begynne å blinke - hvis ikke, kan det være nødvendig å justere antennens plassering.
Programmer GPS-sensoren
Wio Terminal kan nå programmeres til å bruke den tilkoblede GPS-sensoren.
Oppgave - programmer GPS-sensoren
Programmer enheten.
-
Opprett et helt nytt Wio Terminal-prosjekt ved hjelp av PlatformIO. Kall dette prosjektet
gps-sensor
. Legg til kode isetup
-funksjonen for å konfigurere seriellporten. -
Legg til følgende
include
-direktiv øverst imain.cpp
-filen. Dette inkluderer en header-fil med funksjoner for å konfigurere den venstre Grove-porten for UART.#include <wiring_private.h>
-
Under dette, legg til følgende linje med kode for å deklarere en seriellport-tilkobling til UART-porten:
static Uart Serial3(&sercom3, PIN_WIRE_SCL, PIN_WIRE_SDA, SERCOM_RX_PAD_1, UART_TX_PAD_0);
-
Du må legge til litt kode for å omdirigere noen interne signalhåndterere til denne seriellporten. Legg til følgende kode under
Serial3
-deklarasjonen:void SERCOM3_0_Handler() { Serial3.IrqHandler(); } void SERCOM3_1_Handler() { Serial3.IrqHandler(); } void SERCOM3_2_Handler() { Serial3.IrqHandler(); } void SERCOM3_3_Handler() { Serial3.IrqHandler(); }
-
I
setup
-funksjonen, under derSerial
-porten er konfigurert, konfigurer UART-seriellporten med følgende kode:Serial3.begin(9600); while (!Serial3) ; // Wait for Serial3 to be ready delay(1000);
-
Under denne koden i
setup
-funksjonen, legg til følgende kode for å koble Grove-pinnen til seriellporten:pinPeripheral(PIN_WIRE_SCL, PIO_SERCOM_ALT);
-
Legg til følgende funksjon før
loop
-funksjonen for å sende GPS-data til den serielle monitoren:void printGPSData() { Serial.println(Serial3.readStringUntil('\n')); }
-
I
loop
-funksjonen, legg til følgende kode for å lese fra UART-seriellporten og skrive ut dataene til den serielle monitoren:while (Serial3.available() > 0) { printGPSData(); } delay(1000);
Denne koden leser fra UART-seriellporten. Funksjonen
readStringUntil
leser opp til et terminator-tegn, i dette tilfellet en ny linje. Dette vil lese en hel NMEA-setning (NMEA-setninger avsluttes med et ny linje-tegn). Så lenge data kan leses fra UART-seriellporten, leses de og sendes til den serielle monitoren viaprintGPSData
-funksjonen. Når det ikke er mer data å lese, venterloop
i 1 sekund (1 000 ms). -
Bygg og last opp koden til Wio Terminal.
-
Når koden er lastet opp, kan du overvåke GPS-dataene ved hjelp av den serielle monitoren.
> 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
💁 Du finner denne koden i code-gps/wio-terminal-mappen.
😀 GPS-sensorprogrammet ditt var en suksess!
Ansvarsfraskrivelse:
Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten Co-op Translator. Selv om vi tilstreber nøyaktighet, vær oppmerksom på at automatiserte oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.