0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

科技观察员 来源:homemade-circuits 作者:homemade-circuits 2023-07-25 14:28 次阅读

在这篇文章中,我们将构建一个电路,可以测量道路和高速公路上任何车辆的速度。拟议的电路在怀疑车辆超速的地方保持静止。如果任何车辆超过限速,电路会立即发出警报。我们将查看如何测量车辆速度的代码、电路图和逻辑。

根据 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必须正确遮挡阳光,只有激光束才能击中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的数字。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 检测电路
    +关注

    关注

    13

    文章

    305

    浏览量

    58106
  • DIY
    DIY
    +关注

    关注

    176

    文章

    886

    浏览量

    348232
收藏 人收藏

    评论

    相关推荐

    如何构建简单的对讲电路

    在这个电路中,我们将构建非常简单的对讲电路,您可以使用该电路在房屋或学校内以两种方式进行本地
    的头像 发表于 11-21 17:26 1564次阅读
    如何<b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个</b>简单的对讲<b class='flag-5'>电路</b>

    构建基于晶体管的简单土壤湿度检测电路

    在这个项目中,我们将构建基于晶体管的简单土壤湿度检测电路。在本电路中,我们使用NPN晶体管
    的头像 发表于 11-22 17:22 3611次阅读
    <b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个</b>基于晶体管的简单土壤湿度<b class='flag-5'>检测</b>器<b class='flag-5'>电路</b>

    构建简单的空气流量检测电路

    气流检测在许多项目和应用中都很有用。在这里,我们正在构建非常简单的电路检测气流的存在。该
    的头像 发表于 12-29 11:19 2471次阅读
    <b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个</b>简单的空气流量<b class='flag-5'>检测</b>器<b class='flag-5'>电路</b>

    招聘警用设备销售

    警用设备销售(实习)工作地:上海闵行区职位描述:1、负责警用设备(酒精检测仪、测速仪等相关交警警用装备)的销售;2、分销商和直接客户的维护和
    发表于 09-25 10:28

    可变磁阻式车速传感器的识别与检测

    极交替排列,随着磁环的回转使其磁力线方向不断 地变化,伴随每回转,在内置磁阻元件(MRE)的集成电路(IC)中发出⒛脉冲信号,该信号即车速信 号,送人速度表。磁通量的变化与磁环转速
    发表于 10-29 15:10

    光电式车速传感器的识别与检测

    圈,传感器有20脉冲输出。  图3为光电式车速传感器在数字式车速报警系统中的应用,数字式车速报警系统由荧光屏、微电脑、集成电路等构成,根据
    发表于 11-16 16:10

    警用电击器充电电路

    警用电击器充电电路
    发表于 07-30 21:46 9247次阅读
    <b class='flag-5'>警用</b>电击器充电<b class='flag-5'>电路</b>

    车速控制装置电路

    车速控制装置电路
    发表于 02-14 11:21 707次阅读
    <b class='flag-5'>车速</b>控制装置<b class='flag-5'>电路</b>

    电动车速电路

    电动车速电路
    发表于 02-14 11:25 3868次阅读
    电动<b class='flag-5'>车速</b>表<b class='flag-5'>电路</b>

    检测车速的汽车路码表电路

    检测车速的汽车路码表电路
    发表于 05-26 14:54 5650次阅读
    <b class='flag-5'>检测</b><b class='flag-5'>车速</b>的汽车路码表<b class='flag-5'>电路</b>图

    车速信号调理电路

    车速信号调理电路图   车速信号是很通用的信号,仪表盘和车身模块,甚至其他的模块都需要它作为
    发表于 11-21 13:42 3877次阅读

    构建焦耳窃贼电路

    电子发烧友网站提供《构建焦耳窃贼电路.zip》资料免费下载
    发表于 07-04 11:05 0次下载
    <b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个</b>焦耳窃贼<b class='flag-5'>电路</b>

    构建简单的速度报警电路

    在高速行驶时,目视检查车速表以保持在最大速度以下可能会很危险。如果我们放置音频警报系统,以便在速度达到某个阈值时发出警告,那会安全得多。为了构建速度报警
    的头像 发表于 07-15 17:08 598次阅读
    <b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个</b>简单的速度报警<b class='flag-5'>电路</b>

    构建带Arduino代码的颜色检测电路

    在这篇文章中,我们将构建可以检测颜色并触发相应分配继电器的电路。该项目是使用 TCS3200 颜色传感器和 Arduino 板完成的。
    的头像 发表于 07-27 11:23 947次阅读
    <b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个</b>带Arduino代码的颜色<b class='flag-5'>检测</b>器<b class='flag-5'>电路</b>

    基于脉冲整形的车速信号检测的硬件设计

    电子发烧友网站提供《基于脉冲整形的车速信号检测的硬件设计.pdf》资料免费下载
    发表于 10-23 11:29 1次下载
    基于脉冲整形的<b class='flag-5'>车速</b>信号<b class='flag-5'>检测</b>的硬件设计