解析GPS数据 - Wio终端 在本课程的这一部分中,您将解码由Wio终端从GPS传感器读取的NMEA消息,并提取纬度和经度。 解析GPS数据 一旦从串行端口读取了原始的NMEA数据,就可以使用开源的NMEA库进行解码。 任务 - 解析GPS数据 编写程序以解码GPS数据。 如果尚未打开,请打开 应用程序项目。 向项目的 文件添加一个库依赖项,该库是TinyGPSPlus,它包含了解码NMEA数据的代码。 在 中,为TinyGPSPlus库添加一个包含指令: 在 声明之后,声明一个TinyGPSPlus对象来处理NMEA语句: 将 函数的内容更改为以下内容: 这段代码会从UART串行端口读取下一个字符到NMEA解码器 中。
在本课程的这一部分中,您将解码由Wio终端从GPS传感器读取的NMEA消息,并提取纬度和经度。
一旦从串行端口读取了原始的NMEA数据,就可以使用开源的NMEA库进行解码。
编写程序以解码GPS数据。
如果尚未打开,请打开gps-sensor应用程序项目。
向项目的platformio.ini文件添加一个库依赖项,该库是TinyGPSPlus,它包含了解码NMEA数据的代码。
lib_deps = mikalhart/TinyGPSPlus @ 1.0.2
在main.cpp中,为TinyGPSPlus库添加一个包含指令:
#include <TinyGPS++.h>
在Serial3声明之后,声明一个TinyGPSPlus对象来处理NMEA语句:
TinyGPSPlus gps;
将printGPSData函数的内容更改为以下内容:
if (gps.encode(Serial3.read())) { if (gps.location.isValid()) { Serial.print(gps.location.lat(), 6); Serial.print(F(",")); Serial.print(gps.location.lng(), 6); Serial.print(" - from "); Serial.print(gps.satellites.value()); Serial.println(" satellites"); } }
这段代码会从UART串行端口读取下一个字符到NMEA解码器gps中。每读取一个字符后,它会检查解码器是否已读取有效句子,然后检查是否已读取有效位置。如果位置有效,则将其发送到串行监视器,并附上参与此定位的卫星数量。
构建并上传代码到Wio终端。
上传完成后,您可以使用串行监视器监控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 --- 47.6423109,-122.1390293 - from 3 satellites
您可以在code-gps-decode/wio-terminal文件夹中找到此代码。
您的带有数据解析功能的GPS传感器程序成功了!
声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。