Okruh detektora rýchlosti vozidla pre dopravnú políciu

Vyskúšajte Náš Nástroj Na Odstránenie Problémov





V tomto príspevku postavíme okruh, ktorý dokáže merať rýchlosť akéhokoľvek vozidla na cestách a diaľniciach. Navrhovaný okruh sa nehybne drží na mieste, kde je podozrenie na nadmernú rýchlosť vozidiel. Ak niektoré vozidlo prekročí povolenú rýchlosť, okruh okamžite upozorní. Budeme sa pozerať na kód, schému zapojenia a logiku, ako sa meria rýchlosť vozidla.

Cieľ

Podľa správy o náhodnom úmrtí z roku 2015 v Indii je prekročenie rýchlosti 75% dopravných nehôd, čo je obrovské množstvo. Väčšina dopravných policajtov sa snaží zadržať motoristov, ktorí nebezpečne riadia svoje vozidlo nad povolenú rýchlosť v meste.



Nie vždy, keď môže dopravná polícia zastaviť vozidlo prekračujúce rýchlosť a nabiť ich. Takže je nainštalované zariadenie s názvom rýchlostná kamera, kde je podozrenie na nadmernú rýchlosť motoristov, ako sú oblasti často náchylné na nehody, križovatky atď.

Chystáme sa postaviť niečo podobné ako rýchlostné radary, ale oveľa zjednodušenejším spôsobom, ktorý je možné nainštalovať do areálu univerzity, napríklad do škôl, škôl alebo IT parkov, alebo len ako zábavný projekt.



Navrhovaný projekt pozostáva z 16 x 2 LCD displeja, ktorý zobrazuje rýchlosť každého vozidla prechádzajúceho cez dva laserové lúče, ktoré sú od seba vzdialené presne 10 metrov, aby bolo možné merať rýchlosť vozidla pri prerušení týchto laserových lúčov.

Pri prejazde vozidla pípne bzučiak, ktorý indikuje detekciu vozidla a na displeji LCD sa zobrazí rýchlosť každého vozidla. Keď vozidlo prekročí povolenú rýchlosť, bzučiak bude neustále pípať a na displeji sa zobrazí rýchlosť vozidla.

POZNÁMKA: Rýchlosť vozidla sa zobrazí na LCD bez ohľadu na to, či vozidlo ide nad alebo pod rýchlosť.

Teraz sa pozrime na logiku merania obvodu za obvodom.

Všetci poznáme jednoduchý vzorec nazývaný vzorec rýchlosť - vzdialenosť - čas.
Rýchlosť = vzdialenosť / čas.

• rýchlosť v metroch za sekundu,
• vzdialenosť v metroch,
• Čas v sekundách.

Aby sme vedeli rýchlosť, musíme poznať vzdialenosť „x“ prejdenú vozidlom a čas potrebný na prekonanie tejto vzdialenosti „x“.

Za týmto účelom nastavujeme dva laserové lúče a dve LDR so vzdialenosťou 10 metrov nasledujúcim spôsobom:

meranie rýchlosti dopravného vozidla

Vieme, že vzdialenosť je 10 metrov, ktorá je pevná, teraz musíme poznať čas v rovnici.

Čas vypočíta Arduino, keď vozidlo preruší „štartovací laser“, spustí sa časovač a keď vozidlo preruší „koncový laser“, časovač sa zastaví a aplikovaním hodnôt na rovnicu Arduino zistí rýchlosť vozidla.

Upozorňujeme, že rýchlosť vozidla bude detekovaná iba v jednom smere, t. J. Spustenie lasera na zastavenie laseru, na detekciu vozidla v inom smere musí byť umiestnené iné rovnaké nastavenie v opačnom smere. Je to ideálne riešenie pre miesta, ako sú školy, koláže atď., Kde majú vstupné a výstupné brány.

Teraz sa pozrime na schematický diagram:

Spojenie medzi Arduinom a displejom:

LCD displej rýchlosti vozidla

Vyššie uvedený obvod je samozrejmý a stačí pripojiť zapojenie podľa obvodu. Nastavte 10K potenciometer na nastavenie kontrastu displeja.

Ďalšie podrobnosti o zapojení:

Prepojenie rýchlosti vozidla je nastavené

Vyššie uvedený obvod pozostáva z Arduina, 4 tlačidiel, dvoch 10K sťahovacích rezistorov (nemeňte hodnotu rezistorov), dvoch LDR a jedného bzučiaka. Krátko bude vysvetlená funkcia 4 tlačidiel. Teraz sa pozrime, ako správne namontovať LDR.

LDR tlmenie pre detekciu rýchlosti vozidla

LDR musí byť chránený pred slnečným žiarením správne, iba laserový lúč by mal na LDR dopadať. Uistite sa, že je váš laserový modul dostatočne silný na to, aby pracoval na prudkom slnku.
Na vyššie uvedený účel môžete použiť PVC rúrku a vo vnútri tuby ju natrieť čiernou farbou. Nezabudnite zakryť prednú časť, na dosiahnutie toho použite svoju kreativitu.

Programový kód:

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

Teraz sa pozrime, ako tento obvod ovládať:

• Dokončite okruh a nahrajte kód.
• Vzdialenosť medzi dvoma lasermi / LDR by mala byť presne 10 metrov, nie menej ani viac, inak dôjde k nesprávnemu výpočtu rýchlosti (zobrazené na prvom diagrame).
• Vzdialenosť medzi laserom a LDR plechovkou podľa vášho výberu a okolností.
• Obvod skontroluje prípadné laserové vychýlenie s LDR, ak existuje, opravte ho podľa informácií zobrazených na LCD.
• Najskôr vás okruh vyzve na zadanie hodnoty rýchlostného limitu v km / h, po prekročení ktorej bude okruh upozornený, stlačením hore (S1) a nadol (S2) môžete zmeniť číslo na displeji a stlačiť set (S3), hodnota sa uloží.
• Ak chcete tento rýchlostný limit zmeniť, stlačte tlačidlo S4 a môžete nastaviť nový rýchlostný limit.
• Teraz choďte na motorke rýchlosťou 30 km / h a prerušte laserové lúče, okruh by vám mal ukázať číslo veľmi blízke 30 km / h.
• Hotovo a váš okruh je pripravený slúžiť vašej bezpečnosti v areáli.

Autorský prototyp:

prototyp detekcie rýchlosti vozidla

Ak máte akékoľvek otázky týkajúce sa tohto obvodu detektora rýchlosti vozidla dopravnej polície, neváhajte sa opýtať v sekcii komentárov, môžete dostať rýchlu odpoveď.




Predchádzajúci: Datasheet senzora PIR, špecifikácie Pinout, funkčné Ďalej: Obvod testera diaľkového ovládania