Верига за детектор на скоростта на превозното средство за КАТ

Опитайте Нашия Инструмент За Премахване На Проблемите





В този пост ще изградим верига, която може да измерва скоростта на всяко превозно средство по пътищата и магистралите. Предложената схема се поддържа неподвижна на място, където се подозира, че превозните средства превишават скоростта. Ако някое превозно средство надхвърли ограничението на скоростта, веригата алармира незабавно. Ще разгледаме кода, електрическата схема и логиката как се измерва скоростта на автомобила.

Обективен

Превишената скорост причинява 75% пътнотранспортни произшествия, според доклад за инцидентна смърт за 2015 г. в Индия, това е огромен брой. Повечето пътни полицаи се опитват да задържат шофьорите, които опасно управляват автомобила си извън градската скорост.



Не всеки път пътна полиция може да спре превишаващо скоростта превозно средство и да ги натовари. Така че е инсталирано устройство, наречено скоростна камера, където се подозира, че шофьорите превишават скоростта, като чести райони, предразположени към аварии, кръстовища и т.н.

Ще изградим нещо подобно на камерата за скорост, но по много опростен начин, който може да бъде инсталиран в кампус като училище, колеж или ИТ паркове или просто като забавен проект.



Предложеният проект се състои от 16 x 2 LCD дисплей, за да покаже скоростта на всяко превозно средство, преминаващо през два лазерни лъча, които са разположени на разстояние точно 10 метра, за да се измери скоростта на автомобила, докато се прекъсват тези лазерни лъчи.

При преминаване на превозно средство се чува звуков сигнал, който показва, че е открито превозно средство и скоростта на всяко превозно средство ще се покаже на LCD дисплея. Когато дадено превозно средство надвишава ограничението на скоростта, зумерът ще издава непрекъснат звуков сигнал и скоростта на автомобила ще се показва на дисплея.

ЗАБЕЛЕЖКА: Скоростта на превозното средство ще се показва на LCD, независимо от това, че превозното средство се движи с по-висока или по-малка скорост.

Сега нека видим логиката зад веригата за измерване на скоростта.

Всички знаем проста формула, наречена формула скорост - разстояние - време.
Скорост = Разстояние / Време.

• Скорост в метър в секунда,
• Разстояние в метър,
• Време в секунди.

За да знаем скоростта, трябва да знаем разстоянието, което казва „х“, изминато от превозно средство, и времето, необходимо за изминаване на това разстояние „х“.

За да направим това, ние настройваме два лазерни лъча и два LDR на разстояние 10 метра по следния начин:

мярка за скорост на пътно превозно средство

Знаем, че разстоянието е 10 метра, което е фиксирано, сега трябва да знаем времето в уравнението.

Времето ще бъде изчислено от Arduino, когато превозното средство прекъсне „стартовия лазер“, таймерът започва и когато превозното средство прекъсне „крайния лазер“, таймерът спира и прилагайки стойностите към уравнението Arduino ще намери скоростта на превозното средство.

Моля, обърнете внимание, че скоростта на превозното средство ще се определя само в една посока, т.е. стартирайте лазер, за да спрете лазера, за да откриете превозното средство в друга посока, друга същата настройка трябва да бъде поставена в обратна посока. Така че, това е идеално за места като училище, колаж и др., Където имат IN и OUT порти.

Сега нека видим схематичната диаграма:

Връзка между Arduino и дисплея:

LCD дисплей за скорост на автомобила

Там по-горе веригата е обяснителна и просто свържете окабеляването според схемата. Регулирайте 10K потенциометъра за регулиране на контраста на дисплея.

Допълнителни подробности за окабеляването:

Настроено окабеляване за измерване на разстоянието на превозното средство

Горната схема се състои от Arduino, 4 бутони, два 10K резистора за изтегляне (не променяйте стойността на резисторите), два LDR и един зумер. Функцията на 4 бутони ще бъде обяснена скоро. Сега нека видим как правилно да монтирате LDR.

LDR изход за откриване на скорост на превозното средство

LDR трябва да ме покрие правилно от слънчевата светлина, само лазерният лъч трябва да удря LDR. Уверете се, че вашият лазерен модул е ​​достатъчно мощен, за да работи при ярко слънце.
Можете да използвате PVC тръба за горната цел и да я боядисате в черно в тръбата, не забравяйте да покриете предната част, използвайте креативността си, за да постигнете това.

Код на програмата:

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

Сега нека видим как да управляваме тази схема:

• Завършете веригата и качете кода.
• Разстоянието между два лазера / LDR трябва да бъде точно 10 метра, не по-малко или не повече, в противен случай скоростта ще бъде неправилно изчислена (показано на първата диаграма).
• Разстоянието между лазера и LDR може по ваш избор и обстоятелства.
• Веригата ще проверява за несъответствие на лазера с LDR, ако има такава, моля, коригирайте я според информацията, показана на LCD дисплея.
• Първоначално веригата ще ви помоли да въведете стойност на ограничение на скоростта в km / h, над която веригата предупреждава, като натиснете нагоре (S1) и надолу (S2) можете да промените номера на дисплея и да натиснете set (S3), това стойността ще бъде запазена.
• За да промените това ограничение на скоростта, натиснете бутона S4 и можете да зададете ново ограничение на скоростта.
• Сега вземете моторно шофиране с 30 км / ч и прекъснете лазерните лъчи, веригата трябва да ви покаже число много близо до 30 км / ч.
• Готово и вашата схема е готова да служи на безопасността на вашия кампус.

Прототип на автора:

прототип за откриване на скорост на превозното средство

Ако имате някакви въпроси относно тази схема на детектора за скорост на пътната полиция, моля не се колебайте да попитате в раздела за коментари, може да получите бърз отговор.




Предишен: Информационен лист за сензори за PIR, спецификации на пиновете, работещ Следваща: Тестери за дистанционно управление