0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

構(gòu)建一個交警用車速檢測電路

科技觀察員 ? 來源:homemade-circuits ? 作者:homemade-circuits ? 2023-07-25 14:28 ? 次閱讀

在這篇文章中,我們將構(gòu)建一個電路,可以測量道路和高速公路上任何車輛的速度。擬議的電路在懷疑車輛超速的地方保持靜止。如果任何車輛超過限速,電路會立即發(fā)出警報。我們將查看如何測量車輛速度的代碼、電路圖和邏輯。

根據(jù) 75 年印度意外死亡報告,超速導(dǎo)致 2015% 的道路交通事故,這是一個巨大的數(shù)字。大多數(shù)交警試圖拘留危險駕駛車輛超過城市限速的駕駛者。

并非每次交警都可以阻止超速車輛并向他們收費。因此,在懷疑駕駛者超速的地方安裝了一種稱為測速攝像頭的設(shè)備,例如頻繁發(fā)生事故的區(qū)域、十字路口等。

我們將構(gòu)建類似于測速攝像頭的東西,但要簡化得多,它可以安裝在校園內(nèi),例如學(xué)校,學(xué)院或IT園區(qū),或者只是一個有趣的項目。

擬議的項目包括 16 x 2 LCD 顯示屏,以展示每輛車通過的速度;兩束激光束相距10米,以測量車輛的速度,同時中斷這些激光束。

車輛通過時蜂鳴器會發(fā)出嗶嗶聲;表示檢測到車輛,每輛車的速度將顯示在LCD顯示屏上。當(dāng)車輛超過速度限制時,蜂鳴器將連續(xù)發(fā)出嗶嗶聲,車輛速度將顯示在顯示屏上。

注意:無論車輛超速還是欠速,車輛的速度都將顯示在LCD上。

現(xiàn)在讓我們看看測量速度的電路背后的邏輯。

我們都知道一個簡單的公式,叫做速度-距離-時間公式。

速度=距離/時間。

? 速度以米每秒為單位,? 距離以米為單位,

? 時間以秒為單位。

要知道速度,我們必須知道車輛行駛的距離(例如“x”)以及覆蓋該距離“x”所需的時間。

為此,我們按以下方式設(shè)置兩個激光束和兩個距離為 10 米的 LDR:

交通車輛速度測量

我們知道距離是固定的 10 米,現(xiàn)在我們必須知道等式中的時間。

時間將由Arduino計算,當(dāng)車輛中斷“啟動激光”時,計時器開始,當(dāng)車輛中斷“結(jié)束激光”時,計時器停止并將值應(yīng)用于方程Arduino將找到車輛的速度。

請注意,車輛的速度只會在一個方向上檢測,即啟動激光以停止激光,要在另一個方向檢測車輛,必須在相反的方向上放置另一個相同的設(shè)置。因此,這是學(xué)校,拼貼畫等場所的理想選擇。他們有進(jìn)出門的地方。

現(xiàn)在讓我們看一下示意圖:

Arduino和顯示器之間的連接:

液晶車速顯示

上面的電路是不言自明的,只需按照電路連接接線即可。調(diào)整 10K 電位計以調(diào)整顯示對比度。

其他接線細(xì)節(jié):

速度車輛測距接線設(shè)置

上述電路由Arduino,4個按鈕,兩個10K下拉電阻(不要改變電阻的值),兩個LDR和一個蜂鳴器組成。4個按鈕的功能將很快解釋?,F(xiàn)在讓我們看看如何正確安裝
LDR。

用于車速檢測的LDR銑削

LDR必須正確遮擋陽光,只有激光束才能擊中LDR。確保您的激光模塊足夠強(qiáng)大,可以在明亮的陽光下工作。

您可以將PVC管用于上述目的,并在管內(nèi)將其涂成黑色;不要忘記覆蓋前部,利用您的創(chuàng)造力來完成這項工作。

程序代碼

// ----------- 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 ---------//

現(xiàn)在讓我們看看如何操作這個電路:

?完成您的電路并上傳代碼。

? 兩個激光器/LDR 之間的距離應(yīng)正好為 10 米,不少于或不超過,否則速度將計算錯誤(如第一張圖所示)。

?激光和LDR之間的距離可以由您選擇的和情況決定。

? 電路將檢查激光與LDR的未對準(zhǔn),如果有,請根據(jù)LCD上顯示的信息進(jìn)行更正。

?最初,賽道會要求您輸入以公里/小時為單位的速度限制值,超過該值賽道會發(fā)出警報,通過按向上(S1)和向下(S2),您可以更改顯示屏上的數(shù)字并按設(shè)置(S3),該值將被保存。

?要更改此速度限制,請按S4按鈕,您可以設(shè)置新的速度限制。

?現(xiàn)在以30公里/小時的速度駕駛摩托車并中斷激光束,電路應(yīng)該向您顯示一個非常接近30 km / h的數(shù)字。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 檢測電路
    +關(guān)注

    關(guān)注

    13

    文章

    308

    瀏覽量

    58209
  • DIY
    DIY
    +關(guān)注

    關(guān)注

    176

    文章

    888

    瀏覽量

    348873
收藏 人收藏

    評論

    相關(guān)推薦

    如何構(gòu)建簡單的對講電路

    在這個電路中,我們將構(gòu)建非常簡單的對講電路,您可以使用該電路在房屋或?qū)W校內(nèi)以兩種方式進(jìn)行本地
    的頭像 發(fā)表于 11-21 17:26 ?1696次閱讀
    如何<b class='flag-5'>構(gòu)建</b><b class='flag-5'>一</b><b class='flag-5'>個</b>簡單的對講<b class='flag-5'>電路</b>

    構(gòu)建基于晶體管的簡單土壤濕度檢測電路

    在這個項目中,我們將構(gòu)建基于晶體管的簡單土壤濕度檢測電路。在本電路中,我們使用NPN晶體管
    的頭像 發(fā)表于 11-22 17:22 ?3738次閱讀
    <b class='flag-5'>構(gòu)建</b><b class='flag-5'>一</b><b class='flag-5'>個</b>基于晶體管的簡單土壤濕度<b class='flag-5'>檢測</b>器<b class='flag-5'>電路</b>

    構(gòu)建簡單的空氣流量檢測電路

    氣流檢測在許多項目和應(yīng)用中都很有用。在這里,我們正在構(gòu)建非常簡單的電路檢測氣流的存在。該
    的頭像 發(fā)表于 12-29 11:19 ?2598次閱讀
    <b class='flag-5'>構(gòu)建</b><b class='flag-5'>一</b><b class='flag-5'>個</b>簡單的空氣流量<b class='flag-5'>檢測</b>器<b class='flag-5'>電路</b>

    招聘警用設(shè)備銷售

    警用設(shè)備銷售(實習(xí))工作地:上海閔行區(qū)職位描述:1、負(fù)責(zé)警用設(shè)備(酒精檢測儀、測速儀等相關(guān)交警警用裝備)的銷售;2、分銷商和直接客戶的維護(hù)和
    發(fā)表于 09-25 10:28

    可變磁阻式車速傳感器的識別與檢測

    極交替排列,隨著磁環(huán)的回轉(zhuǎn)使其磁力線方向不斷 地變化,伴隨每回轉(zhuǎn),在內(nèi)置磁阻元件(MRE)的集成電路(IC)中發(fā)出⒛脈沖信號,該信號即車速信 號,送人速度表。磁通量的變化與磁環(huán)轉(zhuǎn)速
    發(fā)表于 10-29 15:10

    光電式車速傳感器的識別與檢測

    圈,傳感器有20脈沖輸出。  圖3為光電式車速傳感器在數(shù)字式車速報警系統(tǒng)中的應(yīng)用,數(shù)字式車速報警系統(tǒng)由熒光屏、微電腦、集成電路等構(gòu)成,根據(jù)
    發(fā)表于 11-16 16:10

    警用電擊器充電電路

    警用電擊器充電電路
    發(fā)表于 07-30 21:46 ?9364次閱讀
    <b class='flag-5'>警用</b>電擊器充電<b class='flag-5'>電路</b>

    車速控制裝置電路

    車速控制裝置電路
    發(fā)表于 02-14 11:21 ?722次閱讀
    <b class='flag-5'>車速</b>控制裝置<b class='flag-5'>電路</b>

    電動車速電路

    電動車速電路
    發(fā)表于 02-14 11:25 ?3897次閱讀
    電動<b class='flag-5'>車速</b>表<b class='flag-5'>電路</b>

    檢測車速的汽車路碼表電路

    檢測車速的汽車路碼表電路
    發(fā)表于 05-26 14:54 ?5675次閱讀
    <b class='flag-5'>檢測</b><b class='flag-5'>車速</b>的汽車路碼表<b class='flag-5'>電路</b>圖

    車速信號調(diào)理電路

    車速信號調(diào)理電路圖   車速信號是很通用的信號,儀表盤和車身模塊,甚至其他的模塊都需要它作為
    發(fā)表于 11-21 13:42 ?3923次閱讀

    構(gòu)建焦耳竊賊電路

    電子發(fā)燒友網(wǎng)站提供《構(gòu)建焦耳竊賊電路.zip》資料免費下載
    發(fā)表于 07-04 11:05 ?0次下載
    <b class='flag-5'>構(gòu)建</b><b class='flag-5'>一</b><b class='flag-5'>個</b>焦耳竊賊<b class='flag-5'>電路</b>

    構(gòu)建簡單的速度報警電路

    在高速行駛時,目視檢查車速表以保持在最大速度以下可能會很危險。如果我們放置音頻警報系統(tǒng),以便在速度達(dá)到某個閾值時發(fā)出警告,那會安全得多。為了構(gòu)建速度報警
    的頭像 發(fā)表于 07-15 17:08 ?666次閱讀
    <b class='flag-5'>構(gòu)建</b><b class='flag-5'>一</b><b class='flag-5'>個</b>簡單的速度報警<b class='flag-5'>電路</b>

    構(gòu)建帶Arduino代碼的顏色檢測電路

    在這篇文章中,我們將構(gòu)建可以檢測顏色并觸發(fā)相應(yīng)分配繼電器的電路。該項目是使用 TCS3200 顏色傳感器和 Arduino 板完成的。
    的頭像 發(fā)表于 07-27 11:23 ?1034次閱讀
    <b class='flag-5'>構(gòu)建</b><b class='flag-5'>一</b><b class='flag-5'>個</b>帶Arduino代碼的顏色<b class='flag-5'>檢測</b>器<b class='flag-5'>電路</b>

    基于脈沖整形的車速信號檢測的硬件設(shè)計

    電子發(fā)燒友網(wǎng)站提供《基于脈沖整形的車速信號檢測的硬件設(shè)計.pdf》資料免費下載
    發(fā)表于 10-23 11:29 ?1次下載
    基于脈沖整形的<b class='flag-5'>車速</b>信號<b class='flag-5'>檢測</b>的硬件設(shè)計