Liikluspolitsei sõiduki kiiruse detektori vooluring

Proovige Meie Instrumenti Probleemide Kõrvaldamiseks





Selles postituses ehitame ringi, mis võimaldab mõõta mis tahes sõiduki kiirust teedel ja maanteedel. Kavandatud ringrada hoitakse paigal kohas, kus kahtlustatakse sõidukite kiirust. Kui mõni sõiduk ületab kiirusepiirangut, annab ringrada kohe märku. Vaatame koodi, elektriskeemi ja loogikat, kuidas sõiduki kiirust mõõdetakse.

Eesmärk

Kiiruse ületamine põhjustab Indias 2015. aasta juhusliku surma aruande kohaselt 75% liiklusõnnetustest, see on tohutu arv. Enamik liikluspolitseinikke üritab kinni pidada autojuhte, kes sõidavad ohtlikult oma sõidukiga üle linna lubatud piirkiiruse.



Mitte iga kord, kui liikluspolitsei suudab kiirust ületanud sõiduki peatada ja neid laadida. Nii paigaldatakse kiiruskaameraks nimetatud seade, kus kahtlustatakse, et autojuhid ületavad kiirust, näiteks sagedased õnnetusohtlikud alad, ristmikud jne.

Ehitame midagi kiiruskaameraga sarnast, kuid palju lihtsustatud viisil, mida saab paigaldada ülikooli, näiteks kooli, kolledži või IT-parkide sisse või lihtsalt lõbusa projektina.



Kavandatav projekt koosneb 16 x 2 LCD-ekraanist, et näidata iga sõiduki kiirust, mis läbib kahte laserkiirt, mis on paigutatud täpselt 10 meetri kaugusele, et mõõta sõiduki kiirust, katkestades need laserkiired.

Sõidukist möödumisel piiksub piiks, mis näitab, et sõiduk on tuvastatud ja iga sõiduki kiirus kuvatakse vedelkristallekraanil. Kui sõiduk ületab kiirusepiirangut, piiksub piiks pidevalt ja ekraanil kuvatakse sõiduki kiirus.

MÄRKUS. Sõiduki kiirus kuvatakse LCD-ekraanil olenemata sellest, kas sõiduk ületab kiirust või aeglustub.

Nüüd vaatame kiiruse mõõtmise skeemi taga olevat loogikat.

Me kõik teame lihtsat valemit, mida nimetatakse kiiruse - vahemaa - aja valemiks.
Kiirus = vahemaa / aeg.

• kiirus meetrites sekundis,
• kaugus meetrites,
• Aeg sekundites.

Kiiruse teadmiseks peame teadma sõiduki läbitud vahemaad 'x' ja selle vahemaa läbimiseks kulunud aega 'x'.

Selleks seadistame kaks laserkiirt ja kaks 10 meetri kaugusel asuvat LDR-d järgmiselt:

liiklussõiduki kiiruse mõõtmine

Me teame, et vahemaa on 10 meetrit, mis on fikseeritud, nüüd peame tundma võrrandis olevat aega.

Aega arvutab Arduino, kui sõiduk katkestab “stardilaseri”, taimer algab ja kui sõiduk “lõpplaseri” katkestab, taimer peatub ning väärtuste rakendamine võrrandile Arduino leiab sõiduki kiiruse.

Pange tähele, et sõiduki kiirust tuvastatakse ainult ühes suunas, st laseri peatamiseks käivitage laser, sõiduki tuvastamiseks teises suunas tuleb asetada teine ​​sama seadistus vastupidises suunas. Nii sobib see ideaalselt kohtadesse nagu kool, kollaaž jne, kus neil on sisse- ja väljaväravad.

Vaatame nüüd skemaatilist skeemi:

Arduino ja ekraani ühendus:

LCD sõiduki kiiruse näidik

Ülaltoodud vooluahel on iseenesestmõistetav ja lihtsalt ühendage juhtmestik vastavalt vooluahelale. Ekraani kontrastsuse reguleerimiseks reguleerige 10K potentsiomeetrit.

Juhtmete lisadetailid:

Kiirusõiduki vahemaa mõõtmise juhtmestik on üles seatud

Ülaltoodud vooluahel koosneb Arduinost, 4 nupust, kahest 10K allatõmbetakistist (ärge muutke takistite väärtust), kahest LDR-ist ja ühest summerist. Nelja nupu funktsiooni selgitatakse lähiajal. Vaatame nüüd, kuidas LDR korralikult paigaldada.

LDR mouting sõiduki kiiruse tuvastamiseks

LDR peab mind päikesevalguse eest korralikult katma, ainult laserkiir peaks lööma LDR-i. Veenduge, et teie lasermoodul on piisavalt võimas, et töötada ereda päikese käes.
Eespool nimetatud eesmärgil võite kasutada PVC toru ja värvida see toru sees mustaks. Ärge unustage esiosa katta, kasutage selle saavutamiseks oma loovust.

Programmi kood:

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

Vaatame nüüd, kuidas seda vooluringi juhtida:

• Lõpeta vooluring ja laadige kood üles.
• Kahe laseri / LDR-i vaheline kaugus peaks olema täpselt 10 meetrit, ei vähem ega rohkem, vastasel juhul arvutatakse kiirus valesti (näidatud esimesel diagrammil).
• Laseri ja teie valitud LDR-purgi vaheline kaugus ja olud.
• Vooluring kontrollib laseri LDR-i suhtes ebakindlust, kui see on olemas, parandage see vastavalt LCD-ekraanil kuvatud teabele.
• Esialgu palub ringkonnakoht sisestada kiirusepiirangu väärtuse (km / h), mille ületamisel ring hoiatab. Üles (S1) ja alla (S2) vajutades saate muuta ekraanil olevat numbrit ja vajutada seadet (S3). väärtus salvestatakse.
• Selle kiirusepiirangu muutmiseks vajutage nuppu S4 ja saate uue kiirusepiirangu seada.
• Nüüd võtke mootorrattasõit kiirusega 30 km / h ja laske kiired katkestada, ring peaks näitama numbrit, mis on väga lähedal 30 km / h-le.
• Olete valmis ja teie ringrada on valmis teie ülikoolilinnaku turvalisust tagama.

Autori prototüüp:

sõiduki kiiruse tuvastamise prototüüp

Kui teil on selle liikluspolitsei sõiduki kiiruseanduri vooluringi kohta küsimusi, küsige palun kommentaaride jaotises, võite saada kiire vastuse.




Eelmine: PIR-anduri andmeleht, Pinouti spetsifikatsioonid, töötamine Järgmine: Kaugjuhtimispuldi testeri vooluring