构建一个交警用车速检测电路

在这篇文章中,我们将构建一个电路,可以测量道路和高速公路上任何车辆的速度。拟议的电路在怀疑车辆超速的地方保持静止。如果任何车辆超过限速,电路会立即发出警报。我们将查看如何测量车辆速度的代码、电路图和逻辑。
根据 75 年印度意外死亡报告,超速导致 2015% 的道路交通事故,这是一个巨大的数字。大多数交警试图拘留危险驾驶车辆超过城市限速的驾驶者。
并非每次交警都可以阻止超速车辆并向他们收费。因此,在怀疑驾驶者超速的地方安装了一种称为测速摄像头的设备,例如频繁发生事故的区域、十字路口等。
我们将构建类似于测速摄像头的东西,但要简化得多,它可以安装在校园内,例如学校,学院或it园区,或者只是一个有趣的项目。
拟议的项目包括 16 x 2 lcd 显示屏,以展示每辆车通过的速度;两束激光束相距10米,以测量车辆的速度,同时中断这些激光束。
车辆通过时蜂鸣器会发出哔哔声;表示检测到车辆,每辆车的速度将显示在lcd显示屏上。当车辆超过速度限制时,蜂鸣器将连续发出哔哔声,车辆速度将显示在显示屏上。
注意:无论车辆超速还是欠速,车辆的速度都将显示在lcd上。
现在让我们看看测量速度的电路背后的逻辑。
我们都知道一个简单的公式,叫做速度-距离-时间公式。
速度=距离/时间。
• 速度以米每秒为单位,• 距离以米为单位,
• 时间以秒为单位。
要知道速度,我们必须知道车辆行驶的距离(例如“x”)以及覆盖该距离“x”所需的时间。
为此,我们按以下方式设置两个激光束和两个距离为 10 米的 ldr:
我们知道距离是固定的 10 米,现在我们必须知道等式中的时间。
时间将由arduino计算,当车辆中断“启动激光”时,计时器开始,当车辆中断“结束激光”时,计时器停止并将值应用于方程arduino将找到车辆的速度。
请注意,车辆的速度只会在一个方向上检测,即启动激光以停止激光,要在另一个方向检测车辆,必须在相反的方向上放置另一个相同的设置。因此,这是学校,拼贴画等场所的理想选择。他们有进出门的地方。
现在让我们看一下示意图:
arduino和显示器之间的连接:
上面的电路是不言自明的,只需按照电路连接接线即可。调整 10k 电位计以调整显示对比度。
其他接线细节:
上述电路由arduino,4个按钮,两个10k下拉电阻(不要改变电阻的值),两个ldr和一个蜂鸣器组成。4个按钮的功能将很快解释。现在让我们看看如何正确安装
ldr。
ldr必须正确遮挡阳光,只有激光束才能击中ldr。确保您的激光模块足够强大,可以在明亮的阳光下工作。
您可以将pvc管用于上述目的,并在管内将其涂成黑色;不要忘记覆盖前部,利用您的创造力来完成这项工作。
程序代码:
// ----------- developed by r.girish ---------//
#include 《liquidcrystal.h》
#include《eeprom.h》
const int rs = 7;
const int en = 6;
const int d4 = 5;
const int d5 = 4;
const int d6 = 3;
const int d7 = 2;
liquidcrystal lcd(rs, en, d4, d5, d6, d7);
const int up = a0;
const int down = a1;
const int set = a2;
const int change = a3;
const int start = 8;
const int end = 9;
const int buzzer = 10;
const float km_h = 3.6;
int distance = 10; // in meters.
int variable = 0;
int count = 0;
int address = 0;
int value = 100;
int speed_address = 1;
int speed_value = 0;
int i = 0;
float ms = 0;
float seconds = 0;
float speed = 0;
boolean buzz = false;
boolean laser = false;
boolean x = false;
boolean y = false;
void setup()
{
pinmode(start, input);
pinmode(end, input);
pinmode(up, input);
pinmode(down, input);
pinmode(set, input);
pinmode(change, input);
pinmode(buzzer, output);
digitalwrite(change, high);
digitalwrite(up, high);
digitalwrite(down, high);
digitalwrite(set, high);
digitalwrite(buzzer, low);
lcd.begin(16, 2);
lcd.clear();
lcd.setcursor(0, 0);
lcd.print(f(“ vehicle speed”));
lcd.setcursor(0, 1);
lcd.print(f(“ detector”));
delay(1500);
if (eeprom.read(address) != value)
{
lcd.clear();
lcd.setcursor(0, 0);
lcd.print(“set speed limit”);
lcd.setcursor(0, 1);
lcd.print(“km/h:”);
lcd.setcursor(6, 1);
lcd.print(count);
while (x == false)
{
if (digitalread(up) == low)
{
lcd.setcursor(6, 1);
count = count + 1;
lcd.print(count);
delay(200);
}
if (digitalread(down) == low)
{
lcd.setcursor(6, 1);
count = count - 1;
lcd.print(count);
delay(200);
}
if (digitalread(set) == low)
{
speed_value = count;
lcd.clear();
lcd.setcursor(0, 0);
lcd.print(“speed limit is”);
lcd.setcursor(0, 1);
lcd.print(“set to ”);
lcd.print(speed_value);
lcd.print(“ km/h”);
eeprom.write(speed_address, speed_value);
delay(2000);
x = true;
}
}
eeprom.write(address, value);
}
lcd.clear();
lcd.setcursor(0, 0);
lcd.print(“testing laser”);
lcd.setcursor(0, 1);
lcd.print(“alignment.。..”);
delay(1500);
while (laser == false)
{
if (digitalread(start) == high && digitalread(end) == high)
{
laser = true;
lcd.clear();
lcd.setcursor(0, 0);
lcd.print(“laser alignment”);
lcd.setcursor(0, 1);
lcd.print(“status: ok”);
delay(1500);
}
while (digitalread(start) == low && digitalread(end) == low)
{
lcd.clear();
lcd.setcursor(0, 0);
lcd.print(“both lasers are”);
lcd.setcursor(0, 1);
lcd.print(“not aligned”);
delay(1000);
}
while (digitalread(start) == low)
{
lcd.clear();
lcd.setcursor(0, 0);
lcd.print(“start laser not”);
lcd.setcursor(0, 1);
lcd.print(“aligned”);
delay(1000);
}
while (digitalread(end) == low)
{
lcd.clear();
lcd.setcursor(0, 0);
lcd.print(“end laser not”);
lcd.setcursor(0, 1);
lcd.print(“aligned”);
delay(1000);
}
}
lcd.clear();
}
void loop()
{
if (digitalread(change) == low)
{
change_limit();
}
if (digitalread(start) == low)
{
variable = 1;
buzz = true;
while (variable == 1)
{
ms = ms + 1;
delay(1);
if (digitalread(end) == low)
{
variable = 0;
}
}
seconds = ms / 1000;
ms = 0;
}
if (speed 《 eeprom.read(speed_address))
{
y = true;
}
speed = distance / seconds;
speed = speed * km_h;
if (isinf(speed))
{
lcd.setcursor(0, 0);
lcd.print(“speed:0.00”);
lcd.print(“ km/h ”);
}
else
{
lcd.setcursor(0, 0);
lcd.print(“speed:”);
lcd.print(speed);
lcd.print(“km/h ”);
lcd.setcursor(0, 1);
lcd.print(“ ”);
if (buzz == true)
{
buzz = false;
digitalwrite(buzzer, high);
delay(100);
digitalwrite(buzzer, low);
}
if (speed 》 eeprom.read(speed_address))
{
lcd.setcursor(0, 0);
lcd.print(“speed:”);
lcd.print(speed);
lcd.print(“km/h ”);
lcd.setcursor(0, 1);
lcd.print(“overspeed alert!”);
if (y == true)
{
y = false;
for (i = 0; i 《 45; i++)
{
digitalwrite(buzzer, high);
delay(50);
digitalwrite(buzzer, low);
delay(50);
}
}
}
}
}
void change_limit()
{
x = false;
count = eeprom.read(speed_address);
lcd.clear();
lcd.setcursor(0, 0);
lcd.print(“set speed limit”);
lcd.setcursor(0, 1);
lcd.print(“km/h:”);
lcd.setcursor(6, 1);
lcd.print(count);
while (x == false)
{
if (digitalread(up) == low)
{
lcd.setcursor(6, 1);
count = count + 1;
lcd.print(count);
delay(200);
}
if (digitalread(down) == low)
{
lcd.setcursor(6, 1);
count = count - 1;
lcd.print(count);
delay(200);
}
if (digitalread(set) == low)
{
speed_value = count;
lcd.clear();
lcd.setcursor(0, 0);
lcd.print(“speed limit is”);
lcd.setcursor(0, 1);
lcd.print(“set to ”);
lcd.print(speed_value);
lcd.print(“ km/h”);
eeprom.write(speed_address, speed_value);
delay(2000);
x = true;
lcd.clear();
}
}
}
// ----------- developed by r.girish ---------//
现在让我们看看如何操作这个电路:
•完成您的电路并上传代码。
• 两个激光器/ldr 之间的距离应正好为 10 米,不少于或不超过,否则速度将计算错误(如第一张图所示)。
•激光和ldr之间的距离可以由您选择的和情况决定。
• 电路将检查激光与ldr的未对准,如果有,请根据lcd上显示的信息进行更正。
•最初,赛道会要求您输入以公里/小时为单位的速度限制值,超过该值赛道会发出警报,通过按向上(s1)和向下(s2),您可以更改显示屏上的数字并按设置(s3),该值将被保存。
•要更改此速度限制,请按s4按钮,您可以设置新的速度限制。
•现在以30公里/小时的速度驾驶摩托车并中断激光束,电路应该向您显示一个非常接近30 km / h的数字。

九号电动E系列正式开售 售价4999元起
高通宣布董事会已批准一项新的100亿美元股票回购计划
智能家居品牌推荐
无线充电系统设计原理与实物制作
健身房中的智能魔镜是什么,满满黑科技的一款产品
构建一个交警用车速检测电路
国内mems技术起步早发展缓慢
机器学习基础知识汇总(分类、应用、安全性)
正交DDS信号的上变频基波输出挑战
欲知真相?荣耀V9手机跑分诡异,原来是EMUI“搞的鬼”
断路器结构组成_断路器的技术参数
中国首个千万亿次超级计算机下月在天津启用
5G蜂窝专用网络,解绑“有线”带来的束缚
百度AI开发者大会将在“希壤”APP召开
莱克电气全新发布天狼星一体机,引领清洁家电新时代
罗彻斯特电子与东芝电子元件及存储装置株式会社展开正式合作
电容式触摸芯片在智能门锁中的应用
CEVA-XC架构第四代出炉 提供了无与伦比的性能
数字系统将如何解决模拟系统的不足
2025年以前欧盟各国的城市也将推出5G商用