מעגל חיישן חניה הפוך לרכב עם אזעקה

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





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

מבוא

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



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

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



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

המקלט מורכב ממודול משדר 2.4 GHz, ארדואינו ותצוגת LCD בגודל 16x2.

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

המשדר ישדר את נתוני החיישן למקלט בתוך המכונית באמצעות קישור 2.4 ג'יגה הרץ. קישור התקשורת נוצר באמצעות מודול NRF24L01.

עכשיו בואו נראה את הסקירה הכללית של מודול NRF24L01.

איור של NRF24L01:

מודול NRF24L01

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

תצורת סיכה:

הוא פועל על 3.3 וולט, ולכן 5 וולט במסוף Vcc יכולים להרוג אותו. עם זאת, הוא יכול לקבל אותות נתונים 5V ממיקרו-בקרים.

עכשיו בואו נעבור למשדר הפרויקט.

מעגל משדר אזעקה חיישן חניה לרכב

המעגל מחובר עם מודול NRF24L01 עם 5 חוטים המחוברים לסיכות קלט / פלט דיגיטליות של ארדואינו ושאר השניים ל -3.3 וולט ואדמה. סיכה מס '2 מחוברת לבסיס הטרנזיסטור שיניע את הזמזם.

מסופי הכוח של החיישן הקולי מחוברים ל- 5V ו- GND ו- A0 מחובר לסיכת ההדק ו- A1 מחובר לסי הד של החיישן.

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

-------------------------------------------------- ---------------------------------------- אנא הורד את קובץ הספרייה מהקישור הבא: github.com/nRF24/RF24.git------------------------------------------------ -------------------------------------------------- ---

תוכנית משדר:

//----------Program Developed by R.Girish-------------//
#include
#include
RF24 radio(7,8)
const byte address[][6] = {'00001', '00002'}
const int trigger = A0
const int echo = A1
const int buzzer = 2
float distance
float result
long Time
boolean state = false
boolean dummystate = 0
void setup()
{
pinMode(trigger, OUTPUT)
pinMode(buzzer, OUTPUT)
pinMode(echo, INPUT)
radio.begin()
radio.openWritingPipe(address[1])
radio.openReadingPipe(1, address[0])
radio.setChannel(100)
radio.setDataRate(RF24_250KBPS)
radio.setPALevel(RF24_PA_MAX)
radio.startListening()
while(!radio.available())
radio.read(&dummystate, sizeof(dummystate))
radio.stopListening()
if(dummystate == HIGH)
{
for(int j = 0 j <10 j++)
{
const char text[] = 'Connection:OK !!!'
radio.write(&text, sizeof(text))
delay(100)
}
}
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
delay(1000)
}
void(* resetFunc) (void) = 0
void loop()
{
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
Time = pulseIn(echo,HIGH)
distance = Time*0.034
result = distance/200
if(result > 2.00)
{
const char text[] = 'CAR NOT IN RANGE'
radio.write(&text, sizeof(text))
}
if(result 1.90)
{
const char text[] = 'Distance = 2.0 M'
radio.write(&text, sizeof(text))
}
if(result 1.80)
{
const char text[] = 'Distance = 1.9 M'
radio.write(&text, sizeof(text))
}
if(result 1.70)
{
const char text[] = 'Distance = 1.8 M'
radio.write(&text, sizeof(text))
}
if(result 1.60)
{
const char text[] = 'Distance = 1.7 M'
radio.write(&text, sizeof(text))
}
if(result 1.50)
{
const char text[] = 'Distance = 1.6 M'
radio.write(&text, sizeof(text))
}
if(result 1.40)
{
const char text[] = 'Distance = 1.5 M'
radio.write(&text, sizeof(text))
}
if(result 1.30)
{
const char text[] = 'Distance = 1.4 M'
radio.write(&text, sizeof(text))
}
if(result 1.20)
{
const char text[] = 'Distance = 1.3 M'
radio.write(&text, sizeof(text))
}
if(result 1.10)
{
const char text[] = 'Distance = 1.2 M'
radio.write(&text, sizeof(text))
}
if(result 1.00)
{
const char text[] = 'Distance = 1.1 M'
radio.write(&text, sizeof(text))
}
if(result 0.90)
{
state = true
const char text[] = 'Distance = 1.0 M'
radio.write(&text, sizeof(text))
while(state)
{
digitalWrite(buzzer, HIGH)
delay(700)
digitalWrite(buzzer, LOW)
delay(700)
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
Time = pulseIn(echo,HIGH)
distance = Time*0.034
result = distance/200
if(result 1.0)
{
state = false
}
}
}
if(result 0.80)
{
state = true
const char text[] = 'Distance = 0.9 M'
radio.write(&text, sizeof(text))
while(state)
{
digitalWrite(buzzer, HIGH)
delay(600)
digitalWrite(buzzer, LOW)
delay(600)
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
Time = pulseIn(echo,HIGH)
distance = Time*0.034
result = distance/200
if(result 0.90)
{
state = false
}
}
}
if(result 0.70)
{
state = true
const char text[] = 'Distance = 0.8 M'
radio.write(&text, sizeof(text))
while(state)
{
digitalWrite(buzzer, HIGH)
delay(500)
digitalWrite(buzzer, LOW)
delay(500)
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
Time = pulseIn(echo,HIGH)
distance = Time*0.034
result = distance/200
if(result 0.80)
{
state = false
}
}
}
if(result 0.60)
{
state = true
const char text[] = 'Distance = 0.7 M'
radio.write(&text, sizeof(text))
while(state)
{
digitalWrite(buzzer, HIGH)
delay(400)
digitalWrite(buzzer, LOW)
delay(400)
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
Time = pulseIn(echo,HIGH)
distance = Time*0.034
result = distance/200
if(result 0.70)
{
state = false
}
}
}
if(result 0.50)
{
state = true
const char text[] = 'Distance = 0.6 M'
radio.write(&text, sizeof(text))
while(state)
{
digitalWrite(buzzer, HIGH)
delay(300)
digitalWrite(buzzer, LOW)
delay(300)
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
Time = pulseIn(echo,HIGH)
distance = Time*0.034
result = distance/200
if(result 0.60)
{
state = false
}
}
}
if(result 0.40)
{
state = true
const char text[] = 'Distance = 0.5M'
radio.write(&text, sizeof(text))
while(state)
{
digitalWrite(buzzer, HIGH)
delay(200)
digitalWrite(buzzer, LOW)
delay(200)
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
Time = pulseIn(echo,HIGH)
distance = Time*0.034
result = distance/200
if(result 0.50)
{
state = false
}
}
}
if(result 0.30)
{
state = true
const char text[] = 'Distance = 0.4 M'
radio.write(&text, sizeof(text))
while(state)
{
digitalWrite(buzzer, HIGH)
delay(100)
digitalWrite(buzzer, LOW)
delay(100)
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
Time = pulseIn(echo,HIGH)
distance = Time*0.034
result = distance/200
if(result 0.40)
{
state = false
}
}
}
if(result <= 0.30)
{
const char text[] = ' STOP!!!'
radio.write(&text, sizeof(text))
digitalWrite(buzzer, HIGH)
delay(3000)
digitalWrite(buzzer, LOW)
resetFunc()
}
delay(200)
}
//----------Program Developed by R.Girish-------------//

זה מסכם את המשדר.

מַקְלֵט:

למקלט יש תצוגת LCD בגודל 16x2 להצגת מדידת המרחק. חיבור התצוגה ניתן להלן:

מעגל תצוגת LCD מעורר חיישן לרכב

כוונן את פוטנציומטר 10K לקבלת ניגודיות צפייה טובה יותר.

התרשים הנ'ל הוא שאר מעגל המקלט. כפתור לחיצה מסופק לאיפוס הארדואינו במקרה שלא נוצר חיבור קישור 2.4 GHz.

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

תוכנית למקלט:

//--------Program Developed by R.Girish-------//
#include
#include
#include
LiquidCrystal lcd(7, 6, 5, 4, 3, 2)
RF24 radio(9,10)
const byte address[][6] = {'00001', '00002'}
const int dummy = A0
boolean dummystate = 0
void setup()
{
Serial.begin(9600)
lcd.begin(16, 2)
pinMode(dummy , INPUT)
digitalWrite(dummy, HIGH)
radio.begin()
radio.openReadingPipe(1, address[1])
radio.openWritingPipe(address[0])
radio.setChannel(100)
radio.setDataRate(RF24_250KBPS)
radio.setPALevel(RF24_PA_MAX)
radio.stopListening()
dummystate = digitalRead(dummystate)
radio.write(&dummystate, sizeof(dummystate))
delay(10)
radio.startListening()
if(!radio.available())
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Connection not')
lcd.setCursor(0,1)
lcd.print('established')
delay(50)
}
}
void loop()
{
if(radio.available())
{
char text[32] = ''
radio.read(&text, sizeof(text))
lcd.clear()
lcd.setCursor(0,0)
lcd.print(text)
lcd.setCursor(0,1)
lcd.print('----------------')
}
}
//--------Program Developed by R.Girish-------//

עכשיו, זה מסכם את המקלט.

כיצד למקם את החיישן כחיישן חניה נייח:

כיצד למקם את החיישן כחיישן חניה נייד:

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

המקלט יכול להיות ממוקם בתוך המקור כפי שהוזכר קודם.

כיצד להפעיל פרויקט חיישן חניה לרכב זה (סוג נייח)

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

• אם מופיע 'חיבור לא נוצר' לחץ על כפתור הלחיצה שמופיע במקלט.

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

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

• מכיוון שהמרחק בין מכונית לחיישן מקבל פחות מ -1.0 מטר, הזמזם מצפצף.

• כשמתקרבים לחיישן קרוב יותר קצב הצפצוף עולה, ברגע שהמכונית מגיעה לרגל 1 מטר או 0.3 מטר, התצוגה תבקש לעצור את המכונית ועליך לעצור.

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

כיצד להפעיל את מעגל האזעקה של חיישן חניה לרכב (חיישן חניה נייד)

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

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

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

מַשׁדֵר:

מַקְלֵט:

אב טיפוס מעורר חיישן חניה לרכב


קודם: מעגל ESC אוניברסלי למנועי BLDC ואלטרנטור הבא: מעגל בקרת מנוע זרם גבוה באמצעות Arduino