將GNSS接收器與Arduino連線以獲取速度


在本教程中,我們將Arduino與GNSS接收器連線,並獲取速度。如果可能,您可以在行駛的車輛中執行此程式碼,因為如果您的GNSS接收器處於靜止狀態,否則您將獲得0速度。任何GNSS接收器通常都使用UART進行通訊。我們將為此使用ublox Neo-6M GNSS模組

電路圖

如您所見,我們將Vcc連線到5V,GND連線到GND,Neo 6M的RX連線到Arduino Uno的3號引腳,Neo 6M的TX連線到Arduino Uno的4號引腳。

所需庫

與OLED顯示屏連線Arduino Uno需要TinyGPS庫。

轉到**工具→管理庫**,搜尋此庫,然後點選安裝。

程式碼演練

在之前的文章中,我們已經瞭解瞭如何使用TinyGPS庫從GNSS接收器獲取經度和緯度。您也可以從**檔案→示例→TinyGPS→simple_test**獲取該程式碼。

或者,可以在GitHub上訪問此程式碼:https://github.com/mikalhart/TinyGPS/blob/master/examples/simple_test/simple_test.ino

現在,我們不會再詳細介紹此程式碼。我們只討論獲取速度所需的更改。

在迴圈中,在if(newData)塊內,在第一行,定義flat、flon的位置,新增另一個浮點數speed_kmph

float flat, flon, speed_kmph;

然後,在此塊的末尾,新增以下行:

Serial.print(" SPEED=");
Serial.print(speed_kmph == TinyGPS::GPS_INVALID_F_SPEED ? 0 :
gps.f_speed_kmph(), 2);

就是這樣!現在GPS速度也將與位置一起打印出來。速度也可以使用不同的函式以其他單位列印:

gps.f_speed_knots(); // speed in knots
gps.f_speed_mph(); // speed in miles/hr
gps.f_speed_mps(); // speed in m/sec

同樣,還有其他函式可以給出接收器的航向(以度為單位)、當前日期和時間、兩點之間的距離等。

請參閱http://arduiniana.org/libraries/tinygps/

還建議您瀏覽此庫附帶的其他示例。

更新於:2021年5月31日

163次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告