读取GPS数据-Wio终端


文档摘要

读取GPS数据 - Wio终端 在这节课的这一部分,你将为你的Wio终端添加一个GPS传感器,并从它那里读取数据。 硬件 Wio终端需要一个GPS传感器。 你将使用的传感器是Grove GPS Air530传感器。这个传感器可以连接到多个GPS系统以获得快速、准确的位置信息。该传感器由两部分组成:传感器的核心电子元件和一个通过细线连接的外部天线,用于接收来自卫星的无线电波。 这是一个UART传感器,因此通过UART发送GPS数据。 连接GPS传感器 Grove GPS传感器可以连接到Wio终端。 任务 - 连接GPS传感器 连接GPS传感器。 一个Grove GPS传感器 将Grove电缆的一端插入GPS传感器上的插座。它只能以一种方式插入。

读取GPS数据 - Wio终端

在这节课的这一部分,你将为你的Wio终端添加一个GPS传感器,并从它那里读取数据。

硬件

Wio终端需要一个GPS传感器。

你将使用的传感器是Grove GPS Air530传感器。这个传感器可以连接到多个GPS系统以获得快速、准确的位置信息。该传感器由两部分组成:传感器的核心电子元件和一个通过细线连接的外部天线,用于接收来自卫星的无线电波。

这是一个UART传感器,因此通过UART发送GPS数据。

连接GPS传感器

Grove GPS传感器可以连接到Wio终端。

任务 - 连接GPS传感器

连接GPS传感器。

一个Grove GPS传感器

  1. 将Grove电缆的一端插入GPS传感器上的插座。它只能以一种方式插入。

  2. 在断开Wio终端与计算机或其他电源连接的情况下,将Grove电缆的另一端连接到Wio终端左侧的Grove插座上(当你看着屏幕时)。这是最靠近电源按钮的那个插座。

    Grove GPS传感器连接到左侧插座

  3. 将GPS传感器放置好,确保附带的天线能清晰看到天空——最好是放在一个敞开的窗户旁边或室外。如果天线没有障碍物,更容易接收到清晰的信号。

  4. 现在你可以将Wio终端连接到计算机了。

  5. GPS传感器有两个LED灯——一个蓝色LED灯,在数据传输时闪烁,一个绿色LED灯,在接收到来自卫星的数据时每秒闪烁一次。确保在启动Wio终端时蓝色LED灯在闪烁。几分钟后绿色LED灯会开始闪烁——如果没有,请重新定位天线。

编程GPS传感器

现在可以编程Wio终端以使用附加的GPS传感器。

任务 - 编程GPS传感器

编程设备。

  1. 使用PlatformIO创建一个新的Wio终端项目,将其命名为gps-sensor。在setup函数中添加代码以配置串行端口。

  2. main.cpp文件顶部添加以下包含指令。这包括一个头文件,其中包含配置左侧Grove端口为UART的函数。

    #include <wiring_private.h>
  3. 在此之下,添加以下代码行以声明一个串行端口连接到UART端口:

    static Uart Serial3(&sercom3, PIN_WIRE_SCL, PIN_WIRE_SDA, SERCOM_RX_PAD_1, UART_TX_PAD_0);
  4. 你需要添加一些代码将某些内部信号处理器重定向到此串行端口。在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(); }
  5. setup函数中,在Serial端口配置之后,使用以下代码配置UART串行端口:

    Serial3.begin(9600); while (!Serial3) ; // Wait for Serial3 to be ready delay(1000);
  6. setup函数中的上述代码下方,添加以下代码以将Grove引脚连接到串行端口:

    pinPeripheral(PIN_WIRE_SCL, PIO_SERCOM_ALT);
  7. loop函数之前添加以下函数,将GPS数据发送到串行监视器:

    void printGPSData() { Serial.println(Serial3.readStringUntil('\n')); }
  8. loop函数中,添加以下代码以从UART串行端口读取数据并将其输出到串行监视器:

    while (Serial3.available() > 0) { printGPSData(); } delay(1000);

    这段代码从UART串行端口读取数据。readStringUntil function reads up until a terminator character, in this case a new line. This will read a whole NMEA sentence (NMEA sentences are terminated with a new line character). All the while data can be read from the UART serial port, it is read and sent to the serial monitor via the printGPSData function. Once no more data can be read, the loop延迟1秒(1,000毫秒)。

  9. 构建并上传代码到Wio终端。

  10. 上传完成后,你可以使用串行监视器来监控GPS数据。

    > 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

你可以在code-gps/wio-terminal文件夹中找到这段代码。

你的GPS传感器程序成功了!

声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。


作者与出处
原作者: microsoft
来源:microsoft
许可证:MIT
整理: 灏天文库整理
由灏天文库结构化整理,提供目录导航、全文检索与在线阅读,便于系统化学习
发布者: 作者: microsoft 转发
评论区 (0)
U