מעגל גלאי מהירות רכב למשטרת התנועה

נסה את הכלי שלנו לביטול בעיות





בפוסט זה אנו הולכים לבנות מעגל שיכול למדוד את המהירות של כל רכב בדרכים ובכבישים מהירים. המעגל המוצע נשמר במקום בו יש חשד שרכבים מהירים יתר על המידה. אם רכב כלשהו חורג ממגבלת המהירות, המעגל מתריע מיד. נבדוק את הקוד, דיאגרמת המעגל וההיגיון כיצד נמדדת מהירות הרכב.

מַטָרָה

מהירות מופרזת גורמת ל 75% תאונות דרכים על פי דו'ח מקרי מוות בשוגג 2015 בהודו, זה מספר עצום. מרבית משטרת התנועה מנסה לעצור את הנהגים שנוהגים ברכבם באופן מסוכן מעבר למגבלת המהירות העירונית.



לא בכל פעם שמשטרת תנועה יכולה לעצור רכב במהירות מופרזת ולהאשים אותם. אז מותקן מכשיר שנקרא מצלמת מהירות שבה חושדים כי הנהגים מהירים יתר על המידה כמו אזורים מועדים בתאונות תכופות, צמתים וכו '.

אנו הולכים לבנות משהו הדומה למצלמת מהירות, אך באופן פשוט בהרבה, אותו ניתן להתקין בתוך קמפוס כמו בית ספר, מכללות או פארקי IT או סתם כפרויקט מהנה.



הפרויקט המוצע מורכב מתצוגת LCD בגודל 16x2 כדי להציג את המהירות של כל רכב שעובר דרך שתי קרני לייזר שמונחות זו מזו בדיוק 10 מטרים כדי למדוד את מהירות הרכב תוך הפרעה של קרני הלייזר.

זמזום יצפצף כאשר עובר רכב המציין כי רכב מזוהה ומהירותו של כל רכב תוצג על צג ה- LCD. כאשר רכב חורג מהמגבלה המהירה הזמזם יצפצף ברציפות ומהירות הרכב תוצג בתצוגה.

הערה: מהירות הרכב תוצג על גבי LCD ללא קשר לרכב שעובר במהירות או מתחת למהירות.

עכשיו בואו נראה את ההיגיון שמאחורי המעגל למדידת מהירות.

כולנו מכירים נוסחה פשוטה הנקראת נוסחת מהירות - מרחק - זמן.
מהירות = מרחק / זמן.

• מהירות במטר לשנייה,
• מרחק במטר,
• זמן בשניות.

כדי לדעת את המהירות, עלינו לדעת שהמרחק אומר 'x' שנסע ברכב ואת הזמן שנדרש כדי לכסות את המרחק הזה 'x'.

לשם כך אנו מקימים שתי קרני לייזר ושתי LDR עם מרחק של 10 מטר באופן הבא:

מדידת מהירות רכב תנועה

אנו יודעים שהמרחק הוא 10 מטר קבוע, ועכשיו עלינו לדעת את הזמן במשוואה.

הזמן יחושב על ידי ארדואינו, כאשר הרכב קוטע את 'לייזר ההתחלה', הטיימר מתחיל וכאשר הרכב קוטע את 'לייזר הקצה' הטיימר נעצר והחלת הערכים על המשוואה ארדואינו ימצא את מהירות הרכב.

שים לב שמהירות הרכב תתגלה רק בכיוון אחד כלומר התחל לייזר כדי לעצור את הלייזר, כדי לזהות את הרכב בכיוון אחר יש להציב התקנה אחרת אותה בכיוון ההפוך. אז זה אידיאלי למקומות כמו בית ספר, קולאז 'וכו' שבו יש להם שערי IN ו- OUT.

בואו נראה את התרשים הסכימטי:

חיבור בין Arduino לתצוגה:

תצוגת מהירות רכב LCD

שם מעל המעגל מסביר את עצמו ופשוט חבר את החיווט לפי המעגל. כוונן את פוטנציומטר 10K להתאמת ניגודיות התצוגה.

פרטי חיווט נוספים:

הגדרת חיווט למדוד מרחק רכב במהירות

המעגל הנ'ל מורכב מארדואינו, 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.
• בתחילה המעגל יבקש מכם להזין ערך מהירות בקמ'ש שמעבר לו המעגל מתריע, על ידי לחיצה למעלה (S1) ומטה (S2) תוכלו לשנות את המספר בתצוגה וללחוץ על סט (S3), זה ערך יישמר.
• לשינוי הגבלת מהירות זו, לחץ על כפתור S4 ותוכל להגדיר הגבלת מהירות חדשה.
• עכשיו קח נסיעה באופנוע במהירות של 30 קמ'ש וקוטע את קרני הלייזר, המעגל אמור להראות לך מספר קרוב מאוד ל -30 קמ'ש.
• סיימת והמעגל שלך מוכן לשרת את בטיחות הקמפוס שלך.

אב הטיפוס של המחבר:

אב טיפוס לזיהוי מהירות רכב

אם יש לך שאלות בנוגע למעגל גלאי מהירות רכב זה של משטרת התנועה, אל תהסס לשאול בסעיף ההערות, ייתכן שתקבל תשובה מהירה.




קודם: גליון נתונים של חיישן PIR, מפרט Pinout, עבודה הבא: מעגל בודק שלט רחוק