6.4 KiB
Ler dados de GPS - Wio Terminal
Nesta parte da lição, irá adicionar um sensor GPS ao seu Wio Terminal e ler os valores obtidos.
Hardware
O Wio Terminal necessita de um sensor GPS.
O sensor que irá utilizar é o sensor Grove GPS Air530. Este sensor pode conectar-se a múltiplos sistemas GPS para obter uma localização rápida e precisa. O sensor é composto por 2 partes - a eletrónica principal do sensor e uma antena externa conectada por um fio fino para captar as ondas de rádio dos satélites.
Este é um sensor UART, o que significa que envia dados GPS através de UART.
Conectar o sensor GPS
O sensor Grove GPS pode ser conectado ao Wio Terminal.
Tarefa - conectar o sensor GPS
Conecte o sensor GPS.
-
Insira uma extremidade de um cabo Grove na entrada do sensor GPS. O cabo só encaixa de uma forma.
-
Com o Wio Terminal desconectado do seu computador ou de outra fonte de energia, conecte a outra extremidade do cabo Grove à entrada Grove do lado esquerdo do Wio Terminal, olhando para o ecrã. Esta é a entrada mais próxima do botão de energia.
-
Posicione o sensor GPS de forma que a antena conectada tenha visibilidade para o céu - idealmente próximo de uma janela aberta ou no exterior. É mais fácil obter um sinal claro sem obstruções à antena.
-
Agora pode conectar o Wio Terminal ao seu computador.
-
O sensor GPS tem 2 LEDs - um LED azul que pisca quando os dados são transmitidos e um LED verde que pisca a cada segundo ao receber dados dos satélites. Certifique-se de que o LED azul está a piscar quando ligar o Wio Terminal. Após alguns minutos, o LED verde começará a piscar - se não, pode ser necessário reposicionar a antena.
Programar o sensor GPS
O Wio Terminal pode agora ser programado para utilizar o sensor GPS conectado.
Tarefa - programar o sensor GPS
Programe o dispositivo.
-
Crie um novo projeto Wio Terminal utilizando o PlatformIO. Chame este projeto
gps-sensor
. Adicione código na funçãosetup
para configurar a porta serial. -
Adicione a seguinte diretiva de inclusão no topo do ficheiro
main.cpp
. Isto inclui um ficheiro de cabeçalho com funções para configurar a entrada Grove do lado esquerdo para UART.#include <wiring_private.h>
-
Abaixo disso, adicione a seguinte linha de código para declarar uma conexão de porta serial para a porta UART:
static Uart Serial3(&sercom3, PIN_WIRE_SCL, PIN_WIRE_SDA, SERCOM_RX_PAD_1, UART_TX_PAD_0);
-
É necessário adicionar algum código para redirecionar alguns manipuladores de sinal internos para esta porta serial. Adicione o seguinte código abaixo da declaração
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(); }
-
Na função
setup
, abaixo da configuração da portaSerial
, configure a porta serial UART com o seguinte código:Serial3.begin(9600); while (!Serial3) ; // Wait for Serial3 to be ready delay(1000);
-
Abaixo deste código na função
setup
, adicione o seguinte código para conectar o pino Grove à porta serial:pinPeripheral(PIN_WIRE_SCL, PIO_SERCOM_ALT);
-
Adicione a seguinte função antes da função
loop
para enviar os dados do GPS para o monitor serial:void printGPSData() { Serial.println(Serial3.readStringUntil('\n')); }
-
Na função
loop
, adicione o seguinte código para ler da porta serial UART e imprimir a saída no monitor serial:while (Serial3.available() > 0) { printGPSData(); } delay(1000);
Este código lê da porta serial UART. A função
readStringUntil
lê até encontrar um carácter terminador, neste caso uma nova linha. Isto irá ler uma frase completa em formato NMEA (as frases NMEA terminam com um carácter de nova linha). Enquanto houver dados para ler da porta serial UART, estes são lidos e enviados para o monitor serial através da funçãoprintGPSData
. Quando não houver mais dados para ler, oloop
faz uma pausa de 1 segundo (1.000ms). -
Compile e carregue o código no Wio Terminal.
-
Após o carregamento, pode monitorizar os dados do GPS utilizando o monitor serial.
> 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
💁 Pode encontrar este código na pasta code-gps/wio-terminal.
😀 O seu programa para o sensor GPS foi um sucesso!
Aviso Legal:
Este documento foi traduzido utilizando o serviço de tradução por IA Co-op Translator. Embora nos esforcemos para garantir a precisão, é importante notar que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.