교통 경찰 용 차량 속도감 지회로

문제를 제거하기 위해 도구를 사용해보십시오





이 포스트에서는 도로와 고속도로에서 모든 차량의 속도를 측정 할 수있는 회로를 구성 할 것입니다. 제안 된 서킷은 차량이 과속으로 의심되는 장소에 고정되어 있습니다. 차량이 제한 속도를 초과하면 회로가 즉시 경고합니다. 차량의 속도를 측정하는 방법에 대한 코드, 회로도 및 로직을 살펴 보겠습니다.

객관적인

2015 년 인도에서 발생한 사고 사망 보고서에 따르면 과속으로 인해 75 %의 교통 사고가 발생합니다. 대부분의 교통 경찰은 도시 속도 제한을 넘어서 위험하게 운전하는 운전자를 구금하려고합니다.



교통 경찰이 과속 차량을 멈추고 충전 할 때마다는 아닙니다. 따라서 운전자가 잦은 사고가 발생하기 쉬운 지역, 교차로 등과 같이 과속이 의심되는 곳에 과속 카메라라는 장치가 설치됩니다.

우리는 과속 카메라와 비슷한 것을 만들 것입니다.하지만 훨씬 단순화 된 방식으로 학교, 대학, IT 공원과 같은 캠퍼스 안에 설치하거나 재미있는 프로젝트로 설치할 수 있습니다.



제안 된 프로젝트는 16 x 2 LCD 디스플레이로 구성되어 레이저 빔을 차단하면서 차량의 속도를 측정하기 위해 정확히 10m 떨어진 두 개의 레이저 빔을 통과하는 각 차량의 속도를 보여줍니다.

차량이 지나갈 때 부저음이 울리고 차량이 감지되었음을 알리고 각 차량의 속도가 LCD 디스플레이에 표시됩니다. 차량이 제한 속도를 초과하면 부저음이 계속 울리고 차량 속도가 디스플레이에 표시됩니다.

참고 : 차량의 속도는 차량이 속도를 초과하거나 속도가 부족한 상태에 관계없이 LCD에 표시됩니다.

이제 속도 측정을위한 회로의 논리를 살펴 보겠습니다.

우리 모두는 속도 – 거리 – 시간 공식이라는 간단한 공식을 알고 있습니다.
속도 = 거리 / 시간.

• 초당 미터 속도,
• 미터 거리
• 시간 (초).

속도를 알기 위해서는 차량이 이동 한 거리 'x'와 해당 거리 'x'를 커버하는 데 걸린 시간을 알아야합니다.

이를 위해 다음과 같은 방식으로 10 미터 거리에 두 개의 레이저 빔과 두 개의 LDR을 설정합니다.

교통 차량 속도 측정

우리는 거리가 고정 된 10 미터라는 것을 알고 있습니다. 이제 방정식에서 시간을 알아야합니다.

시간은 Arduino에 의해 계산됩니다. 차량이 '시작 레이저'를 중단하면 타이머가 시작되고 차량이 '종료 레이저'를 중단하면 타이머가 중지되고 값을 방정식에 적용하여 Arduino가 차량의 속도를 찾습니다.

차량의 속도는 한 방향으로 만 감지됩니다. 즉, 레이저를 시작하여 레이저를 멈추고, 다른 방향으로 차량을 감지하려면 다른 동일한 설정이 반대 방향에 배치되어야합니다. 따라서 이것은 IN 및 OUT 게이트가있는 학교, 콜라주 등과 같은 장소에 이상적입니다.

이제 회로도를 보겠습니다.

Arduino와 디스플레이 간의 연결 :

LCD 차량 속도 표시

위의 회로는 자명하며 회로에 따라 배선을 연결하십시오. 디스플레이 대비를 조정하려면 10K 전위차계를 조정하십시오.

추가 배선 세부 사항 :

속도 차량 거리 측정 배선 설정

위의 회로는 Arduino, 4 개의 푸시 버튼, 2 개의 10K 풀다운 저항 (저항 값을 변경하지 마십시오), 2 개의 LDR 및 1 개의 부저로 구성됩니다. 4 개의 누름 버튼의 기능에 대해 간단히 설명합니다. 이제 LDR을 올바르게 마운트하는 방법을 살펴 보겠습니다.

차량 속도 감지를위한 LDR 마우 팅

LDR은 햇빛으로부터 제대로 가려야하며 레이저 빔만 LDR에 닿아 야합니다. 레이저 모듈이 밝은 햇빛 아래에서 작동 할 수있을만큼 강력한 지 확인하십시오.
위의 목적으로 PVC 파이프를 사용하고 튜브 내부를 검정색으로 칠할 수 있습니다. 앞 부분을 덮는 것을 잊지 말고 창의력을 발휘하여 이것을 수행하십시오.

프로그램 코드 :

// ----------- Developed by R.GIRISH ---------//
#include
#include
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 {
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에 표시된 정보에 따라 수정하십시오.
• 처음에 회로는 회로가 경고하는 속도 제한 값을 km / h 단위로 입력하도록 요청합니다. 위 (S1) 및 아래 (S2)를 눌러 디스플레이의 숫자를 변경하고 설정 (S3)을 누를 수 있습니다. 값이 저장됩니다.
•이 속도 제한을 변경하려면 버튼 S4를 누르면 새로운 속도 제한을 설정할 수 있습니다.
• 이제 30km / h의 속도로 모터 바이크를 운전하고 레이저 빔을 차단하면 회로는 30km / h에 매우 가까운 숫자를 보여줄 것입니다.
• 완료되었으며 회로는 캠퍼스 안전을 위해 준비되었습니다.

저자의 프로토 타입 :

차량 속도 감지 프로토 타입

이 교통 경찰 차량 속도 감지기 회로에 대한 질문이 있으시면 언제든지 의견란에 질문하시면 빠른 답변을 받으실 수 있습니다.




이전 : PIR 센서 데이터 시트, 핀아웃 사양, 작동 다음 : 원격 제어 테스터 회로