Obwód detektora prędkości pojazdu dla policji drogowej

Wypróbuj Nasz Instrument Do Eliminowania Problemów





W tym poście zamierzamy zbudować tor, który może mierzyć prędkość każdego pojazdu na drogach i autostradach. Proponowany tor jest utrzymywany w miejscu, w którym istnieje podejrzenie, że pojazdy przekraczają prędkość. Jeśli jakikolwiek pojazd przekroczy ograniczenie prędkości, tor natychmiast ostrzega o tym. Będziemy patrzeć na kod, schemat połączeń i logikę pomiaru prędkości pojazdu.

Cel

Według raportu o wypadkach śmiertelnych z 2015 roku w Indiach nadmierna prędkość powoduje 75% wypadków drogowych, to ogromna liczba. Większość policjantów drogowych stara się zatrzymać kierowców, którzy niebezpiecznie kierują ich pojazdem poza miejskie ograniczenia prędkości.



Nie za każdym razem, gdy policja drogowa może zatrzymać przekraczający prędkość pojazd i go obciążyć. Tak więc urządzenie zwane fotoradarem jest instalowane tam, gdzie podejrzewa się kierowcę o przekroczenie prędkości, na przykład na obszarach często narażonych na wypadki, skrzyżowaniach itp.

Zamierzamy zbudować coś podobnego do fotoradaru, ale w znacznie uproszczony sposób, który można zainstalować w kampusie, takim jak szkoła, uczelnia lub parki IT lub po prostu jako zabawny projekt.



Proponowany projekt składa się z wyświetlacza LCD 16 x 2, który pokazuje prędkość każdego pojazdu przechodzącego przez dwie wiązki laserowe, które są oddalone od siebie o dokładnie 10 metrów w celu pomiaru prędkości pojazdu, przerywając te wiązki.

Brzęczyk włączy się, gdy pojazd przejeżdża, wskazując, że pojazd został wykryty, a prędkość każdego pojazdu zostanie wyświetlona na wyświetlaczu LCD. Kiedy pojazd przekracza ograniczenie prędkości, brzęczyk będzie wydawał ciągły sygnał dźwiękowy, a prędkość pojazdu zostanie wyświetlona na wyświetlaczu.

UWAGA: Prędkość pojazdu będzie wyświetlana na ekranie LCD niezależnie od tego, czy pojazd przekracza prędkość, czy też nie przekracza prędkości.

Przyjrzyjmy się teraz logice stojącej za obwodem do pomiaru prędkości.

Wszyscy znamy prosty wzór o nazwie prędkość - odległość - czas.
Prędkość = odległość / czas.

• Prędkość w metrach na sekundę,
• Odległość w metrach,
• Czas w sekundach.

Aby poznać prędkość, musimy znać odległość, powiedzmy „x”, przebytą przez pojazd i czas potrzebny na pokonanie tej odległości „x”.

Aby to zrobić, ustawiamy dwie wiązki laserowe i dwa LDR na odległość 10 metrów w następujący sposób:

pomiar prędkości pojazdów drogowych

Wiemy, że odległość wynosi 10 metrów, która jest stała, teraz musimy znać czas w równaniu.

Czas zostanie obliczony przez Arduino, gdy pojazd przerwie „laser startowy”, rozpocznie się odliczanie czasu, a gdy pojazd przerwie „laser końcowy”, stoper zatrzyma się i zastosuje wartości do równania Arduino znajdzie prędkość pojazdu.

Należy pamiętać, że prędkość pojazdu zostanie wykryta tylko w jednym kierunku, tj. Uruchom laser, aby zatrzymać laser, aby wykryć pojazd w innym kierunku, należy ustawić inną taką samą konfigurację w przeciwnym kierunku. Jest to więc idealne rozwiązanie dla miejsc takich jak szkoła, kolaż itp., W których mają bramki WEJŚCIA i WYJŚCIA.

Zobaczmy teraz schematyczny diagram:

Połączenie między Arduino a wyświetlaczem:

Wyświetlacz LCD prędkości pojazdu

Powyższy obwód jest oczywisty i wystarczy podłączyć okablowanie zgodnie z obwodem. Wyreguluj potencjometr 10K do regulacji kontrastu wyświetlacza.

Dodatkowe szczegóły okablowania:

Konfiguracja okablowania pomiaru odległości pojazdu

Powyższy obwód składa się z Arduino, 4 przycisków, dwóch rezystorów pull down 10K (nie zmieniają wartości rezystorów), dwóch LDR i jednego brzęczyka. Funkcja 4 przycisków zostanie wkrótce wyjaśniona. Zobaczmy teraz, jak prawidłowo zamontować LDR.

Mouting LDR do wykrywania prędkości pojazdu

LDR musi być odpowiednio osłonięty od światła słonecznego, tylko wiązka lasera powinna uderzać w LDR. Upewnij się, że twój moduł laserowy jest wystarczająco mocny, aby pracować w jasnym słońcu.
Możesz użyć rury PVC do powyższego celu i pomalować ją na czarno wewnątrz rury. Nie zapomnij zakryć przedniej części, użyj swojej kreatywności, aby to osiągnąć.

Kod programu:

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

Zobaczmy teraz, jak obsługiwać ten obwód:

• Uzupełnij obwód i prześlij kod.
• Odległość między dwoma laserami / LDR powinna wynosić dokładnie 10 metrów, nie mniej lub nie więcej. W przeciwnym razie prędkość zostanie błędnie obliczona (pokazana na pierwszym diagramie).
• Odległość między laserem a puszką LDR według własnego wyboru i okoliczności.
• Obwód sprawdzi niewspółosiowość lasera za pomocą LDR, jeśli występuje, popraw je zgodnie z informacjami wyświetlanymi na wyświetlaczu LCD.
• Początkowo tor poprosi Cię o wprowadzenie wartości ograniczenia prędkości w km / h, powyżej której tor ostrzega, naciskając w górę (S1) i w dół (S2) możesz zmienić liczbę na wyświetlaczu i nacisnąć przycisk ustaw (S3), to wartość zostanie zapisana.
• Aby zmienić to ograniczenie prędkości, naciśnij przycisk S4 i możesz ustawić nowe ograniczenie prędkości.
• Teraz jedź motocyklem z prędkością 30 km / h i przerywaj wiązki lasera, obwód powinien pokazywać liczbę bardzo bliską 30 km / h.
• Skończyłeś i twój obwód jest gotowy, aby służyć bezpieczeństwu twojego kampusu.

Prototyp autora:

prototyp wykrywania prędkości pojazdu

Jeśli masz jakiekolwiek pytania dotyczące tego obwodu czujnika prędkości pojazdu policji drogowej, możesz je zadać w sekcji komentarzy, możesz otrzymać szybką odpowiedź.




Poprzedni: Arkusz danych czujnika PIR, specyfikacje pinów, praca Dalej: Obwód testera zdalnego sterowania