Transportlīdzekļa ātruma detektora shēma ceļu policijai

Izmēģiniet Mūsu Instrumentu Problēmu Novēršanai





Šajā ziņojumā mēs izveidosim ķēdi, kas var izmērīt jebkura transportlīdzekļa ātrumu uz ceļiem un maģistrālēm. Piedāvātā trase tiek turēta nekustīgā vietā, kur ir aizdomas, ka transportlīdzekļi pārsniedz ātrumu. Ja kāds transportlīdzeklis pārsniedz atļauto ātrumu, ķēde brīdina nekavējoties. Mēs meklēsim kodu, ķēdes shēmu un loģiku, kā mēra transportlīdzekļa ātrumu.

Mērķis

Saskaņā ar 2015. gada ziņojumu par nejaušu nāves gadījumu gadījumiem Indijā pārmērīga ātruma pārsniegšana izraisa 75% ceļu satiksmes negadījumu. Tas ir milzīgs skaits. Lielākā daļa ceļu policijas mēģina aizturēt autobraucējus, kuri bīstami pārvietojas ar savu transportlīdzekli, pārsniedzot pilsētas ātruma ierobežojumu.



Ne katru reizi, kad ceļu policija var apturēt transportlīdzekli, kas pārsniedz ātrumu, un iekasēt no tiem maksu. Tātad tiek uzstādīta ierīce, ko sauc par fotoradaru, kur ir aizdomas, ka autobraucēji pārsniedz ātrumu, piemēram, bieži avārijas apdraudētās vietās, krustojumos utt.

Mēs gatavosim uzbūvēt kaut ko līdzīgu ātruma kamerai, taču daudz vienkāršotā veidā, ko var uzstādīt pilsētiņā, piemēram, skolā, koledžā vai IT parkos, vai vienkārši kā jautru projektu.



Piedāvātais projekts sastāv no 16 x 2 LCD displeja, lai parādītu katra transportlīdzekļa ātrumu, kas iet caur diviem lāzera stariem, kas ir izvietoti tieši 10 metru attālumā, lai izmērītu transportlīdzekļa ātrumu, vienlaikus pārtraucot šos lāzera starus.

Braucot garām transportlīdzeklim, atskan skaņas signāls, kas norāda, ka ir konstatēts transportlīdzeklis, un LCD displejā tiks parādīts katra transportlīdzekļa ātrums. Kad transportlīdzeklis pārsniedz ātruma ierobežojumu, skaņas signāls nepārtraukti pīkst un displejā tiks parādīts transportlīdzekļa ātrums.

PIEZĪME. Transportlīdzekļa ātrums tiks parādīts LCD, neatkarīgi no tā, vai transportlīdzeklis pārsniedz ātrumu vai ir zemāks.

Tagad aplūkosim ķēdes loģiku ātruma mērīšanai.

Mēs visi zinām vienkāršu formulu, ko sauc par ātruma - attāluma - laika formulu.
Ātrums = attālums / laiks.

• ātrums metros sekundē,
• attālums metros,
• Laiks sekundēs.

Lai zinātu ātrumu, mums jāzina attālums, sakot “x”, kuru braucis transportlīdzeklis, un laiks, kas vajadzīgs šī attāluma “x” veikšanai.

Lai to izdarītu, mēs izveidojam divus lāzera starus un divus LDR ar 10 metru attālumu šādā veidā:

satiksmes transportlīdzekļa ātruma mērījums

Mēs zinām, ka attālums ir fiksēts 10 metri, tagad mums ir jāzina laiks vienādojumā.

Laiku aprēķinās Arduino, kad transportlīdzeklis pārtrauc “starta lāzeru”, sākas taimeris un, kad transportlīdzeklis pārtrauc “beigu lāzeru”, taimeris apstājas un piemērojot vērtības vienādojumam Arduino atradīs transportlīdzekļa ātrumu.

Lūdzu, ņemiet vērā, ka transportlīdzekļa ātrums tiks noteikts tikai vienā virzienā, t.i., iedarbiniet lāzeru, lai apturētu lāzeru, lai noteiktu transportlīdzekli citā virzienā, pretējā virzienā ir jāievieto vēl viena iestatīšana. Tātad, tas ir ideāli piemērots tādām vietām kā skola, kolāža utt., Kur viņiem ir IN un OUT vārti.

Tagad aplūkosim shematisko shēmu:

Savienojums starp Arduino un displeju:

LCD transportlīdzekļa ātruma displejs

Virs ķēdes ir pašsaprotama un vienkārši pievienojiet elektroinstalāciju atbilstoši ķēdei. Pielāgojiet 10K potenciometru displeja kontrasta pielāgošanai.

Papildu informācija par elektroinstalāciju:

Ātrgaitas transportlīdzekļa attāluma mērīšanas vadu uzstādīšana

Iepriekš minētā shēma sastāv no Arduino, 4 spiedpogām, diviem 10K nolaižamiem rezistoriem (nemainiet rezistoru vērtību), diviem LDR un vienu skaņas signālu. Drīz tiks paskaidrota 4 spiedpogu funkcija. Tagad redzēsim, kā pareizi uzstādīt LDR.

LDR mouting transportlīdzekļa ātruma noteikšanai

LDR jānosedz pareizi no saules gaismas, tikai lāzera staram jāsit pa LDR. Pārliecinieties, ka jūsu lāzera modulis ir pietiekami jaudīgs, lai darbotos spožā saulē.
Iepriekš minētajam nolūkam varat izmantot PVC cauruli un krāsot to caurules iekšpusē melnā krāsā. Neaizmirstiet nosegt priekšējo daļu, izmantojiet savu radošumu, lai to paveiktu.

Programmas kods:

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

Tagad redzēsim, kā darbināt šo ķēdi:

• Pabeidziet ķēdi un augšupielādējiet kodu.
• Attālumam starp diviem lāzeriem / LDR jābūt tieši 10 metriem, ne mazākam vai ne vairāk. Pretējā gadījumā ātrums tiks nepareizi aprēķināts (parādīts pirmajā diagrammā).
• Attālums starp lāzeru un LDR tvertni pēc jūsu izvēles un apstākļiem.
• Kontūra pārbaudīs lāzera novirzi ar LDR, ja tāda ir, lūdzu, izlabojiet to atbilstoši LCD parādītajai informācijai.
• Sākumā ķēde lūgs ievadīt ātruma ierobežojuma vērtību km / h, pēc kuras ķēde brīdina, nospiežot augšup (S1) un lejup (S2), displejā var mainīt numuru un nospiest iestatīšanas taustiņu (S3). vērtība tiks saglabāta.
• Lai mainītu šo ātruma ierobežojumu, nospiediet pogu S4 un jūs varat iestatīt jaunu ātruma ierobežojumu.
• Tagad brauciet ar motociklu ar ātrumu 30 km / h un pārtrauciet lāzera starus, ķēdei vajadzētu parādīt skaitli, kas ir ļoti tuvu 30 km / h.
• Jūs esat pabeidzis, un jūsu trase ir gatava kalpot jūsu pilsētiņas drošībai.

Autora prototips:

transportlīdzekļa ātruma noteikšanas prototips

Ja jums ir kādi jautājumi par šo ceļu policijas transportlīdzekļa ātruma detektora shēmu, lūdzu, nekautrējieties uzdot komentāru sadaļā, jūs varat saņemt ātru atbildi.




Pāri: PIR sensora datu lapa, Pinout specifikācijas, darbs Nākamais: Tālvadības testera ķēde