到目前為止,您可能已經看過我的一些與 Raspberry Pi 和位置數據相關的教程。我是這些小型物聯網 (IoT) 設備的忠實粉絲,并編寫了有關使用 Golang 進行 WLAN 定位 和 使用 Node.js 進行 GPS 定位的教程。
我想繼續沿著 Golang 路線,做一個關于 GPS 定位的教程,并將該數據存儲在 HERE XYZ 中以便實時查看。換句話說,讓 Raspberry Pi 使用 Golang 收集 GPS 數據,將其推送到 HERE XYZ,并通過查詢 HERE XYZ 中的數據在某些 Web 客戶端上實時查看。
我們將看看如何完成所有這些,如果一切順利,我們最終可能會得到如下所示的結果:
rpi-golang-gps-路線
上圖是我在車里帶著 Raspberry Pi 開車時得到的結果。
要求
要成功學習本教程,必須滿足一些要求。可能可以使用變體,但我只能確認什么對我有用。
在硬件方面,我使用以下設備:
樹莓派零W
新6M GPS
有源外置天線
用于外部天線的 U.FL 適配器
您可能可以使用任何具有 WiFi 的 Raspberry Pi 型號。如果你的 Raspberry Pi 有一個 LTE 模塊,那就更好了,因為我只是將手機連接到車上來訪問互聯網。
GPS 模塊與我在之前的教程中引用的模塊相同, ?它直接連接到我的計算機。你需要一個天線;否則,可能需要幾天時間才能修復衛星。
在軟件和服務方面,您需要以下內容:
Golang 安裝在您的開發主機上
一個免費的 HERE 帳戶
您需要一個 HERE 帳戶來配置 HERE XYZ 來存儲您的位置數據。由于 Golang 編譯為本機二進制文件,因此您只需要在開發計算機上使用它即可。如果您嘗試在 Raspberry Pi 上進行開發,由于硬件規格較弱,構建過程可能會很慢。
使用 Golang 在 Raspberry Pi 上收集 GPS 數據
如果您閱讀過我之前的教程,標題為 使用 Golang 和串行 UART 連接對 NEO 6M GPS 位置進行反向地理編碼,其中一些內容看起來會很熟悉。不過,復習一下也沒什么壞處。
在創建新項目之前,請執行以下命令:
1
去 獲取 github 。com / paulmach / go . 地理數據格式
2
去 獲取 github 。com / adrianmo / go - nmea
3
去 獲取 github 。com / jacobsa / go -串行/串行
上面的命令將會獲取我們所需要的包,為我們節省大量的開發時間。Serial ?包將允許我們訪問 Raspberry Pi 和 GPS 模塊之間的串行連接, ?go-nmea 包將允許我們將原始 GPS 數據解析為我們可以理解的內容,而 go.geojson包 將允許我們創建 GeoJSON要發送到 HERE XYZ 的格式化數據。
有了必要的包后, 在$GOPATH中的某個位置創建一個main.go 文件 ?并添加以下樣板代碼:
1
上面的代碼是一個很好的起點。我們所說的是打開 Raspberry Pi 上的/dev/ttyS0 串行端口并使用 9600 的波特率。對于傳入的任何數據,我們將使用 a 訪問它并將 Scanner 其打印出來。我們使用 a 是 Scanner 因為我們想要完整的數據行,而不是零散的數據。