解碼 GPS 數據 - Wio Terminal
在本課程的這一部分中,您將解碼從 Wio Terminal 的 GPS 傳感器讀取的 NMEA 訊息,並提取緯度和經度。
解碼 GPS 數據
一旦從串行端口讀取到原始 NMEA 數據,就可以使用開源 NMEA 庫對其進行解碼。
任務 - 解碼 GPS 數據
編程設備以解碼 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 串行端口讀取下一個字符到
gps
NMEA 解碼器中。每讀取一個字符後,它將檢查解碼器是否已讀取有效的句子,然後檢查是否已讀取有效的位置。如果位置有效,它會將其發送到串行監視器,並顯示貢獻於此定位的衛星數量。 -
構建並上傳代碼到 Wio Terminal。
-
上傳後,您可以使用串行監視器監控 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 傳感器程序與數據解碼成功了!