Krug detektora brzine vozila za prometnu policiju

Krug detektora brzine vozila za prometnu policiju

U ovom ćemo tekstu konstruirati krug koji može mjeriti brzinu bilo kojeg vozila na cestama i autocestama. Predloženi krug ne miruje na mjestu za koje se sumnja da su prebrza. Ako neko vozilo prijeđe ograničenje brzine, krug odmah upozorava. Tražit ćemo kod, shemu i logiku kako se mjeri brzina vozila.



Cilj

Prekomjerna brzina uzrokuje 75% prometnih nesreća, prema izvještaju o nesreći iz 2015. godine u Indiji, to je ogroman broj. Većina prometne policije pokušava zadržati automobiliste koji opasno voze svoje vozilo iznad gradske brzine.

Ne može svaki put prometna policija zaustaviti prebrzo vozilo i napuniti ih. Dakle, instaliran je uređaj nazvan kamera za kontrolu brzine na kojem se sumnja da vozači automobila prebrzi, kao što su česta područja sklona nesrećama, raskrižja itd.





Izgradit ćemo nešto slično brzinskoj kameri, ali na mnogo pojednostavljeni način, što se može instalirati u kampusu poput škole, fakulteta ili IT parkova ili samo kao zabavan projekt.

Predloženi projekt sastoji se od LCD zaslona 16 x 2 za prikaz brzine svakog vozila koje prolazi kroz dvije laserske zrake koje su odvojene točno 10 metara za mjerenje brzine vozila dok prekidaju te laserske zrake.



Kad prođe vozilo, oglasi se zvučni signal koji pokazuje da je vozilo otkriveno i da će se brzina svakog vozila prikazati na LCD zaslonu. Kad vozilo pređe ograničenje brzine, zujalica će neprestano oglašavati i brzina vozila će se prikazati na zaslonu.

NAPOMENA: Brzina vozila prikazat će se na LCD-u bez obzira na to što vozilo prelazi ili premalo.

Sada da vidimo logiku iza sklopa za mjerenje brzine.

Svi znamo jednostavnu formulu koja se naziva formula brzina - udaljenost - vrijeme.
Brzina = Udaljenost / Vrijeme.

• Brzina u metru u sekundi,
• Udaljenost u metru,
• Vrijeme u sekundama.

Da bismo znali brzinu, moramo znati udaljenost recimo 'x' koju je prešlo vozilo i vrijeme potrebno za prelazak te udaljenosti 'x'.

Da bismo to učinili postavljamo dvije laserske zrake i dva LDR-a s udaljenostom od 10 metara na sljedeći način:

mjera brzine prometnog vozila

Znamo da je udaljenost 10 metara koja je fiksna, sada moramo znati vrijeme u jednadžbi.

Vrijeme će izračunati Arduino, kada vozilo prekida 'startni laser', tajmer započinje, a kada vozilo prekida 'krajnji laser', tajmer se zaustavlja i primjenom vrijednosti na jednadžbu Arduino pronalazi brzinu vozila.

Imajte na umu da će se brzina vozila otkriti samo u jednom smjeru, tj. Pokrenuti laser da zaustavi laser, da bi se vozilo otkrilo u drugom smjeru, druga ista postavka mora biti postavljena u suprotnom smjeru. Dakle, ovo je idealno za mjesta poput škole, kolaža itd. Gdje imaju IN i OUT vrata.

Pogledajmo sada shematski dijagram:

Veza između Arduina i zaslona:

LCD zaslon brzine vozila

Tamo je gornji krug samorazumljiv i samo spojite ožičenje prema krugu. Podesite 10K potenciometar za podešavanje kontrasta zaslona.

Dodatni detalji ožičenja:

Postavljeno ožičenje za mjerenje udaljenosti vozila brzine

Gornji sklop sastoji se od Arduina, 4 tipke, dva 10K otpora (ne mijenjaju vrijednost otpornika), dva LDR-a i jedan zujalica. Ukratko će biti objašnjena funkcija 4 tipke. Sada ćemo vidjeti kako pravilno montirati LDR.

LDR mout za otkrivanje brzine vozila

LDR me mora pravilno pokrivati ​​sunčevom svjetlošću, samo bi laserska zraka trebala udarati u LDR. Provjerite je li vaš laserski modul dovoljno moćan za rad pod jakim suncem.
U gore navedene svrhe možete upotrijebiti PVC cijev i obojati je crnom bojom unutar cijevi, ne zaboravite prekriti prednji dio, iskoristite svoju kreativnost da to postignete.

Kod programa:

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

Sada da vidimo kako upravljati ovim krugom:

• Završite svoj krug i prenesite kod.
• Udaljenost između dva lasera / LDR-a trebala bi biti točno 10 metara, ni manje ni više, inače će brzina biti pogrešno izračunata (prikazano na prvom dijagramu).
• Udaljenost između lasera i LDR-a može biti po vašem izboru i okolnostima.
• Krug će provjeriti ima li laserskog nesklapanja s LDR-om, ako postoji, ispravite ga prema informacijama prikazanim na LCD-u.
• U početku će krug tražiti da unesete vrijednost ograničenja brzine u km / h preko koje krug upozorava, pritiskom na gore (S1) i dolje (S2) možete promijeniti broj na zaslonu i pritisnuti set (S3), ovaj vrijednost će biti spremljena.
• Da biste promijenili ovo ograničenje brzine, pritisnite gumb S4 i možete postaviti novo ograničenje brzine.
• Sada vozite motocikl brzinom od 30 km / h i prekidajte laserske zrake, krug bi vam trebao prikazati broj vrlo blizu 30 km / h.
• Gotovi ste i vaš krug je spreman da služi vašoj sigurnosti u kampusu.

Autorski prototip:

prototip za otkrivanje brzine vozila

Ako imate bilo kakvih pitanja u vezi s ovim krugom detektora brzine vozila prometne policije, slobodno pitajte u odjeljku za komentare, možda ćete dobiti brzi odgovor.




Prethodno: Liste podataka PIR senzora, Specifikacije pinouta, Radno Dalje: krug ispitivača daljinskog upravljača