Køretøjshastighedsdetektor kredsløb til trafikpoliti

Prøv Vores Instrument Til At Fjerne Problemer





I dette indlæg skal vi konstruere et kredsløb, der kan måle hastigheden på ethvert køretøj på veje og motorveje. Det foreslåede kredsløb holdes stille på et sted, hvor køretøjerne mistænkes for at være for hurtige. Hvis et køretøj overskrider hastighedsgrænsen, advarer kredsløbet straks. Vi ser på koden, kredsløbsdiagrammet og logikken, hvordan køretøjets hastighed måles.

Objektiv

Overkørsel forårsager 75% trafikulykker ifølge rapporten om utilsigtet død 2015 i Indien, det er et stort antal. De fleste trafikpolitier forsøger at tilbageholde de bilister, der farligt kører deres køretøj ud over byens hastighedsgrænse.



Ikke hver gang et trafikpoliti kan standse et overkørende køretøj og oplade dem. Så der er installeret en enhed kaldet hastighedskamera, hvor bilisterne mistænkes for at være for hurtige såsom hyppige udsatte områder, kryds osv.

Vi skal bygge noget der ligner hastighedskamera, men på en meget forenklet måde, som kan installeres inde i en campus som skole, college eller IT-parker eller bare som et sjovt projekt.



Det foreslåede projekt består af 16 x 2 LCD-display for at fremvise hastigheden på hvert køretøj, der passerer gennem to laserstråler, der er placeret nøjagtigt 10 meter fra hinanden for at måle køretøjets hastighed, mens de afbryder disse laserstråler.

En summer bipper, når et køretøj passeres, hvilket indikerer, at et køretøj registreres, og hvert køretøjs hastighed vises på LCD-displayet. Når et køretøj overskrider hastighedsgrænsen, bipper summeren kontinuerligt, og køretøjets hastighed vises på displayet.

BEMÆRK: Køretøjets hastighed vises på LCD, uanset om køretøjet kører over hastighed eller under hastighed.

Lad os nu se logikken bag kredsløbet til måling af hastighed.

Vi kender alle en simpel formel kaldet hastighed - afstand - tidsformel.
Hastighed = Distance / tid.

• Hastighed i meter pr. Sekund,
• Afstand i meter,
• Tid i sekunder.

For at kende hastigheden er vi nødt til at kende afstanden sige 'x' tilbagelagt af et køretøj og den tid det tager at tilbagelægge den afstand 'x'.

For at gøre dette opretter vi to laserstråler og to LDR'er med 10 meters afstand på følgende måde:

trafik køretøjets hastighedsmåling

Vi ved, at afstanden er 10 meter, som er fast, nu skal vi kende tiden i ligningen.

Tiden beregnes af Arduino, når køretøjet afbryder 'startlaseren', starter timeren, og når køretøjet afbryder 'endelaseren', stopper timeren og anvender værdierne til ligningen Arduino finder køretøjets hastighed.

Bemærk, at køretøjets hastighed kun registreres i en retning, dvs. start laser for at stoppe laser, for at registrere køretøjet i en anden retning skal en anden samme opsætning placeres i modsat retning. Så dette er ideelt til steder som skole, collage osv., Hvor de har IN og OUT porte.

Lad os nu se det skematiske diagram:

Forbindelse mellem Arduino og skærm:

LCD køretøjshastighedsvisning

Der ovenfor kredsløb er selvforklarende og tilslut bare ledningerne som i kredsløbet. Juster 10K potentiometeret til justering af skærmkontrasten.

Yderligere detaljer om ledningsføring:

Hastighed køretøjs afstandsmåling ledninger oprettet

Ovenstående kredsløb består af Arduino, 4 trykknapper, to 10K pull-modstande (ændr ikke værdien af ​​modstande), to LDR'er og en summer. Funktionen af ​​4 trykknapper vil snart blive forklaret. Lad os nu se, hvordan du monterer LDR korrekt.

LDR mouting til registrering af køretøjshastighed

LDR skal være dækket ordentligt af sollyset, kun laserstrålen skal ramme LDR. Sørg for, at dit lasermodul er kraftigt nok til at arbejde i en solskin.
Du kan bruge et PVC-rør til ovennævnte formål og male det sort inde i røret. Glem ikke at dække den forreste del, brug din kreativitet til at opnå dette.

Programkode:

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

Lad os nu se, hvordan du betjener dette kredsløb:

• Fuldfør dit kredsløb og upload koden.
• Afstanden mellem to lasere / LDR'er skal være nøjagtigt 10 meter, ikke mindre eller ikke mere, ellers beregnes hastigheden forkert (vist i det første diagram).
• Afstanden mellem laseren og LDR kan efter eget valg og omstændigheder.
• Kredsløbet kontrollerer for laserjustering med LDR, hvis det er tilfældet, bedes du rette det i henhold til de oplysninger, der vises på LCD'et.
• Oprindeligt beder kredsløbet dig om at indtaste en hastighedsgrænseværdi i km / t ud over hvilken kredsløbet advarer. Ved at trykke op (S1) og ned (S2) kan du ændre nummeret på displayet og trykke på sæt (S3), dette værdi gemmes.
• For at ændre denne hastighedsgrænse skal du trykke på knap S4 og du kan indstille en ny hastighedsgrænse.
• Tag nu et motorcykeldrev i 30 km / t og afbryd laserstrålene, kredsløbet skal vise dig et tal meget tæt på 30 km / t.
• Du er færdig, og dit kredsløb er klar til at tjene din campus sikkerhed.

Forfatterens prototype:

prototype til registrering af køretøjshastighed

Hvis du har spørgsmål vedrørende dette trafikpolitiets køretøjshastighedsdetektor kredsløb, er du velkommen til at stille i kommentarsektionen, du kan få et hurtigt svar.




Forrige: PIR-sensorens datablad, pinout-specifikationer, arbejde Næste: Fjernbetjeningstesterkredsløb