將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/
還建議您瀏覽此庫附帶的其他示例。
廣告