原创 用GPS模块和Arduino制作一个多功能车辆测速仪

2022-8-4 10:30 2722 11 2 分类: 智能硬件 文集: 方案

车辆测速装置有机械式和电子式两种,本项目利用GPS模块、Arduino和OLED显示屏测量并显示车辆的即时速度,属于智能仪表类别。

项目的核心是GPS接收器。目前最流行的GPS模块是ublox NEO-6M,这里我们采用了Quectel L86 GPS模块,因为其简单且天线非常小巧,只要与Arduino、0.96″ OLED显示屏连接,与速度相关参数就显示在OLED屏幕上。项目BOM清单如下:

Arduino Nano板         x1
L80/L86 GPS模块    x1
OLED显示屏         x1
杜邦线                x20
面包板                 x1


Quectel L86/L80 GPS模块


Quectel L86采用联发科技GNSS MT3333芯片,是一款集成16mm×16mm×4.0mm贴片天线的超紧凑型GNSS模块,使客户能灵活地从GPS切换到GNSS。L86采用LCC封装,内置贴片天线使其拥有超强的捕获和追踪能力。
通过先进的AGPS(EASY)轨道预测技术和省电模式(AlwaysLocate技术),L86模块能自动计算和预测长达三天的轨道信息,并将这些信息存储到内部RAM存储器中,即使在室内弱信号情况下也能实现低功耗快速定位。AlwaysLocate技术的运用,使得L86可以根据不同的环境状况和运行模式,自动调节定位时间,在确保定位精度的同时大大降低了模块功耗。

 

 

凭借超小尺寸,超高精度和灵敏度,L86几乎能满足M2M客户所有应用需求,尤其适用于车载、个人追踪、工业级PDA及其他相关手持设备等领域,特别适合于GPS接收机和OBD应用。主要优势包括:
支持多重卫星系统:GPS、GLONASS、QZSS
内嵌贴片天线:16mm×16mm×4.0mm
超紧凑型封装:18.4mm×18.4mm×6.45mm
支持内外置天线自动切换
支持短路保护和天线侦测
内置低噪声放大器,提高接收高灵敏度
支持自辅助AGPS(EASY技术,无需外部存储器)
极低的电流消耗:26mA@追踪模式
多种省电模式:待机模式、备份模式、周期模式、AlwaysLocate模式
LOCUS技术,支持日志信息自动记录保存
高灵敏度:-167dBm@追踪模式,-149dBm@捕获模式
99个捕获信道,33个追踪信道
支持Balloon模式,定位高度高达80km
支持DGPS和SBAS(WAAS/EGNOS/MSAS/GAGAN)
多频主动干扰消除技术增强抗干扰能力
授时服务支持PPS与NMEA同步功能
支持移远通信自主研发的SDK命令
UART接口:波特率范围4800~115200bps,默认波特率9600bps
更新速率:1Hz(默认),最高10Hz
输入/输出电压:2.7~2.9V
协议:NMEA 0183/PMTK 

 


作为一个SMD形式的工业级模块,项目制作时需要插入2.54间距排针,并焊接在底部PCB上。焊上所有12个针脚后,L86模块就变得十分友好,可轻易插接在面包板上。


连接Arduino GPS测速仪


Arduino GPS测速仪电路非常简洁,只要将三个组件按照电路图连接起来即可。

 


Quectel L86 GPS模块有12个引脚,本项目只用其中的5个。将VCC、GND连接到Arduino开发板的3.3V、GND引脚;V_BCKP引脚也要连接到3.3V,如果不连接的话模块就不能工作。L86模块的Rx、Tx引脚要分别连接到Arduino开发板的数字引脚2、3上。

 

 

OLED显示屏是I2C总线,其VCC、GND引脚要连接到Arduino开发板的3.3V、GND引脚。同样,SDA、SCL引脚则连接到Arduino板子的A4、A5引脚上。


编写代码


L80 GPS模块支持Tiny GPS++ Library,下载库文件并上传到Arduino库文件夹。除了Tiny GPS++ Library,代码还需要称作Adafruit SSD1306的SSD1306 Library文件。

以下是完整代码,拷贝并上传到Arduino Nano Board即可。

#include 
#include 
#include 
#include 

#define rxPin 2
#define txPin 3
SoftwareSerial mygps(rxPin, txPin);

#define SCREEN_WIDTH 128?????? // OLED display width, in pixels
#define SCREEN_HEIGHT 64?????? // OLED display height, in pixels
#define OLED_RESET -1??????????//Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C????//See datasheet for Address
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

TinyGPSPlus gps;


void setup()
{
Serial.begin(115200);
mygps.begin(9600);

if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS))
{
Serial.println(F("SSD1306 allocation failed"));
????for (;;); // Don't proceed, loop forever
}
display.clearDisplay();
display.display();
delay(2000);
}

void loop()
{
boolean newData = false;
for (unsigned long start = millis(); millis() - start < 1000;)
{
while (mygps.available())
{
if (gps.encode(mygps.read()))
{
newData = true;
}
}
}

//If newData is true
if (newData == true)
{
newData = false;
display.setTextColor(SSD1306_WHITE);

if (gps.location.isValid() == 1)
{
//String gps_speed = String(gps.speed.kmph());
display.setCursor(0, 0);
display.setTextSize(3);
display.print(gps.speed.kmph());

display.setCursor(75, 20);
display.setTextSize(2);
display.print("km/h");

display.setTextSize(1);
display.setCursor(0, 50);
display.print("SAT:");
display.setCursor(25, 50);
display.print(gps.satellites.value());

display.setTextSize(1);
display.setCursor(70, 50);
display.print("ALT:");
display.setCursor(95, 50);
display.print(gps.altitude.meters(), 0);

display.display();
delay(1500);
display.clearDisplay();
}
}

else
{
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.setTextSize(3);
display.print("No Data");
display.display();
delay(1500);
display.clearDisplay();
}
}


Arduino GPS测速仪调试


把上述代码上传到Arduino Nano Board后,OLED显示屏起初并不显示数据,因为L86 GPS接收器还没有与卫星系统同步。


稍微等一下,GPS就开始接收来自最近卫星系统的数据,信号的接收与同步情况设备驻地的内外环境有关。与卫星系统同步妥当后,OLED显示屏开始以每小时公里(kmph)为单位显示速度。当然,现在显示的是0kmph,因为板子放在静止的桌上。

 

 

如果将GPS测速仪放在运动的车辆上,就会显示以kmph为单位的车速,连接的卫星数量,以及以米为单位的海拔高度。

 

 

可见。这个测速仪不但简单,功能还真不少,只要带在身上你就能够获得汽车、自动车、公交车、火车和飞机的速度和所在的海拔高度,以及比赛和训练时的运动速度,还可带它取户外一起融入大自然。

作者: 硬之城Allchips, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3975615.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

luckyzy2000 2022-8-24 13:24

用GPS来测速精度低了点
相关推荐阅读
硬之城Allchips 2024-02-14 13:05
压电技术将使智能手机屏幕变成沉浸式交互扬声器
时至今日,包括手机在内的移动设备话筒(扬声器和触觉发生器)依然存在几个问题,而压电技术有望改变这一切,让显示器能够提供高质量的沉浸音频和交互触摸体验。首先是组件本身。智能手机中的扬声器和当你触摸虚拟按...
硬之城Allchips 2023-02-15 17:25
工程师为笔电、便携式工具和电动自行车开发出频率超过MHz的无线充电器
尽管目前手机等小型设备在无线充电方面取得了成功,但在我们完全实现无线充电之前,仍有几个技术挑战需要解决,特别是在耗电量更大的电子产品方面。在《IEEE电力电子新兴和精选主题期刊》中,专家们概述了克服这...
硬之城Allchips 2022-08-29 10:30
霍尔传感器原理、典型应用及与Arduino的接口
霍尔传感器(Hall Effect Sensor)是根据霍尔效应制作的一种磁场传感器,当恒定电流通过内部的霍尔半导体片时,将在垂直方向产生电位差即霍尔电压。这个霍尔电压随磁场强度的变化而变化,磁场越强...
硬之城Allchips 2022-08-26 08:59
传感器到云应用中的超低功耗Sub-1GHz RF收发方案
在ISM和SRD(短距离无线电设备)应用中,高性能和长电池寿命至关重要。本方案采用S2-LP sub-1GHz超低功耗的低数据率,可实现+27dBm(500mW)的输出功率,可使电池寿命从几个月延长为...
硬之城Allchips 2022-08-25 09:58
用IR传感器和Arduino制作一个数字转速计(附代码)
本项目采用IR传感器和Arduino开发板制作了一个数字转速计,以RPM为单位测量马达的转数。项目黑简单,只需将IR传感器和Arduino板子与16*2 LCD连接即可。BOM表及电路图本转速计可连续...
硬之城Allchips 2022-08-24 10:27
基于AP33772的家电及电动工具USB-C PD3.0/PPS接收方案
Type-C PD3.0适配器已经大量上市,这要求Type-C接口设备(TCD)配备灵活、精简且具成本效益的充电解决方案。本设计采用AP33772高效能USB Type-C PD3.0/PPS接收控制...
EE直播间
更多
我要评论
1
11
关闭 站长推荐上一条 /3 下一条