利用Arduino 、GPS模块、OLED制作GPS车速仪
前言
车速表用于测量车辆的行驶速度。我们之前使用 IR 传感器和霍尔传感器分别构建了模拟车速表和数字车速表。今天我们将使用 GPS 来测量移动车辆的速度。GPS车速表比标准车速表更准确,因为它可以连续定位车辆并计算速度。GPS 技术广泛用于智能手机和车辆中,用于导航和交通警报。
在这个项目中,我们将使用带有 OLED 显示屏的 NEO6M GPS 模块 构建一个Arduino GPS 速度计。
使用的材料
Arduino Nano
NEO6M GPS模块
1.3英寸I2C OLED显示屏
面包板
连接跳线
NEO6M GPS模块
这里我们使用 NEO6M GPS 模块。NEO-6M GPS模块是一款流行的GPS接收器,内置陶瓷天线,提供强大的卫星搜索能力。该接收器能够感知位置并跟踪多达 22 颗卫星并识别世界任何地方的位置。通过板载信号指示灯,我们可以监控模块的网络状态。具有数据备份电池,当主电源意外关闭时,模块可以保存数据。
GPS 接收器模块内部的核心是 u-blox 的 NEO-6M GPS 芯片。它可以在 50 个通道上跟踪多达 22 颗卫星,并具有令人印象深刻的灵敏度水平,即 -161 dBm。这款 50 通道 u-blox 6 定位引擎拥有不到 1 秒的首次定位时间 (TTFF)。该模块支持的波特率范围为 4800-230400 bps,默认波特率为 9600。
特征:
工作电压:(2.7-3.6)V DC
工作电流:67毫安
波特率:4800-230400 bps(9600 默认)
通讯协议:NEMA
接口:UART
外置天线和内置 EEPROM。
GPS模块的引脚排列:
VCC: 模块输入电压引脚
GND: 接地引脚
RX, TX: 与微控制器的 UART 通信引脚
I2C OLED显示屏
技术规格:
驱动IC:SH1106
输入电压:3.3V-5V DC
分辨率:128x64
接口:I2C
电流消耗:8毫安
像素颜色:蓝色
视角:>160度
引脚说明:
VCC:输入电源3.3-5V DC
GND:接地参考引脚
SCL: I2C接口的时钟管脚
SDA: I2C 接口的串行数据引脚
电路原理图
下面给出了这个使用 OLED 的 Arduino GPS 速度计的电路图。
完整的设置如下所示:
编程 Arduino
该项目的完整代码在教程的底部给出。这里我们逐行解释完整的代码。
首先,包括所有库。这里TinyGPS++.h 库用于使用 GPS 接收器模块获取 GPS 坐标,Adafruit_SH1106.h用于 OLED
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
#include <Wire.h>
#include <Adafruit_SH1106.h>
然后,定义 OLED I2C 地址,可以是 OX3C 或 OX3D,在我的例子中是 OX3C。此外,必须定义显示器的复位引脚。在我的例子中,它被定义为 -1,因为显示器共享 Arduino 的复位引脚。
#define OLED_ADDRESS 0x3C
#define OLED_RESET -1
Adafruit_SH1106 display(OLED_RESET);
接下来,TinyGPSPlus和Softwareserial类的对象定义如下所示。软件串行类需要 Arduino 引脚号。用于串口通信,这里定义为2和3。
int RX