跳至主要内容

解碼 GPS 數據 - Wio Terminal

在本課程的這一部分中,您將解碼從 Wio Terminal 的 GPS 傳感器讀取的 NMEA 訊息,並提取緯度和經度。

解碼 GPS 數據

一旦從串行端口讀取到原始 NMEA 數據,就可以使用開源 NMEA 庫對其進行解碼。

任務 - 解碼 GPS 數據

編程設備以解碼 GPS 數據。

  1. 如果尚未打開 gps-sensor 應用項目,請打開它

  2. 在項目的 platformio.ini 文件中添加 TinyGPSPlus 庫的庫依賴項。此庫具有解碼 NMEA 數據的代碼。

    lib_deps =
    mikalhart/TinyGPSPlus @ 1.0.2
  3. main.cpp 中,添加 TinyGPSPlus 庫的包含指令:

    #include <TinyGPS++.h>
  4. Serial3 聲明的下方,聲明一個 TinyGPSPlus 對象來處理 NMEA 句子:

    TinyGPSPlus gps;
  5. 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 解碼器中。每讀取一個字符後,它將檢查解碼器是否已讀取有效的句子,然後檢查是否已讀取有效的位置。如果位置有效,它會將其發送到串行監視器,並顯示貢獻於此定位的衛星數量。

  6. 構建並上傳代碼到 Wio Terminal。

  7. 上傳後,您可以使用串行監視器監控 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 傳感器程序與數據解碼成功了!