将 GNSS 接收器与 Arduino 连接以获取速度

arduinoarduino boardsarduino idearduino programming language

在本教程中,我们将 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。

所需库

将 Arduino Uno 与 OLED 显示屏连接起来需要 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(); // 速度(单位:节)
gps.f_speed_mph(); // 速度(单位:英里/小时)
gps.f_speed_mps(); // 速度(单位:米/秒)

同样,还有其他函数可以输出接收器的航向(单位:度)、当前日期和时间、两点之间的距离等。

请参阅 http://arduiniana.org/libraries/tinygps/

我们也鼓励您阅读此库附带的其他示例。


相关文章