将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库。

转到**工具→管理库**,搜索此库,然后点击安装。

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

代码演练

在之前的文章中,我们已经了解了如何使用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次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告