دائرة استشعار وقوف السيارة العكسي مع إنذار

جرب أداة القضاء على المشاكل





في هذا المنشور ، سنقوم بإنشاء دائرة إنذار لمستشعر وقوف السيارات العكسي باستخدام اردوينو ومستشعر فوق صوتي ووحدة إرسال واستقبال 2.4 جيجا هرتز. يمكن أن يكون هذا المشروع ميزة إضافية لسيارتك إذا لم تكن مزودة بأجهزة استشعار لوقوف السيارات مدمجة.

مقدمة

يحتوي المشروع المقترح على وظائف مماثلة مثل جهاز استشعار وقوف السيارات التقليدي ، مثل المسافة بين السيارة والعائق على شاشة LCD وتنبيه الصفير الصوتي.



يمكن استخدام المشروع المقترح كجهاز استشعار ثابت لوقوف السيارات ، أي المستشعر الموضوع على مرآبك أو مستشعر وقوف السيارات المحمول ، أي مستشعر يوضع على الجزء الخلفي من سيارتك إذا كنت مستعدًا لتحمل مخاطر صغيرة في توصيل المشروع بالنظام الكهربائي للسيارة.

ومع ذلك ، فإن الدافع لهذا المشروع هو بناء جهاز استشعار وقوف السيارات ثابت التي يمكن بناؤها بدون مخاطر.



يتكون مشروع إنذار مستشعر وقوف السيارات باستخدام Arduino من جزأين ، جهاز الإرسال الذي يتكون من مستشعر فوق صوتي واردوينو وجرس ووحدة إرسال واستقبال 2.4 جيجا هرتز. ستقيس هذه الدائرة المسافة بين السيارة والعائق.

يتكون جهاز الاستقبال من وحدة الإرسال والاستقبال 2.4 جيجا هرتز ، وشاشة اردوينو وشاشة LCD 16x2.

سيتم وضع دائرة الاستقبال داخل السيارة مع بطارية 9V كمصدر للطاقة. سيعرض جهاز الاستقبال المسافة بين السيارة والعائق بالأمتار.

سيقوم جهاز الإرسال بإرسال بيانات المستشعر إلى جهاز الاستقبال داخل السيارة عبر رابط 2.4 جيجا هرتز. تم إنشاء ارتباط الاتصال باستخدام وحدة NRF24L01.

الآن دعنا نرى نظرة عامة على وحدة NRF24L01.

رسم توضيحي لـ NRF24L01:

وحدة NRF24L01

تم تصميم هذه الوحدة لإنشاء رابط اتصال ثنائي الاتجاه بين اثنين من وحدات التحكم الدقيقة. يعمل على بروتوكول الاتصال SPI. يحتوي على 125 قناة مختلفة ومعدل نقل بيانات بحد أقصى 2 ميجابت في الثانية. يبلغ أقصى مدى نظري 100 متر.

تكوين الدبوس:

يعمل على 3.3 فولت ، لذا فإن 5 فولت على طرف Vcc يمكن أن يقتله. ومع ذلك ، يمكنه قبول إشارات بيانات 5 فولت من ميكروكنترولر.

الآن دعنا ننتقل إلى جهاز إرسال المشروع.

حلبة الارسال استشعار وقوف السيارات إنذار

الدائرة موصلة بوحدة NRF24L01 مع 5 أسلاك متصلة بمنافذ إدخال / إخراج رقمية من اردوينو وبقية الاثنين إلى 3.3 فولت والأرضي. دبوس رقم 2 متصل بقاعدة الترانزستور التي ستعمل على تشغيل الجرس.

يتم توصيل أطراف طاقة المستشعر بالموجات فوق الصوتية بجهد 5 فولت ويتم توصيل 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 مقاس 16 × 2 لعرض قياس المسافة. اتصال الشاشة موضح أدناه:

وقوف السيارات الاستشعار شاشة الكريستال السائل إنذار الدائرة

اضبط مقياس الجهد 10K للحصول على تباين مشاهدة أفضل.

المخطط أعلاه هو بقية دارة المستقبل. يتم توفير زر ضغط لإعادة تعيين اردوينو في حالة عدم إنشاء اتصال ارتباط 2.4 جيجا هرتز.

يتم وضع دائرة الاستقبال داخل السيارة ويمكن أن تكون طاقة من بطارية 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-------//

الآن ، هذا يختتم المتلقي.

كيفية وضع المستشعر كمستشعر انتظار ثابت:

كيفية وضع المستشعر كمستشعر وقوف متحرك:

في مستشعر وقوف السيارات المتنقل ، يتم وضع مستشعر الموجات فوق الصوتية لجهاز الإرسال في الجانب الخلفي من السيارة ، ويتم توفير الطاقة من بطارية السيارة. يجب أن يكون سلكيًا بطريقة أنه عند إيقاف تشغيل الإشعال ، يجب فصل اردوينو عن الإمداد.

يمكن وضع المتلقي من الداخل كما ذكر من قبل.

كيفية تشغيل مشروع حساس مواقف السيارات (نوع ثابت)

• قم بتشغيل جهاز الإرسال أولاً ، انتقل إلى سيارتك وقم بتشغيل جهاز الاستقبال. إذا تم إنشاء الاتصال بين جهاز الإرسال والاستقبال ، فسيتم عرض 'Connection: OK' ويوضح المسافة بين السيارة والمستشعر.

• إذا ظهرت عبارة 'لم يتم تأسيس الاتصال' ، فاضغط على زر الضغط الموجود بجهاز الاستقبال.

• قد تعرض عبارة 'السيارة ليست في النطاق' إذا كانت علبتك بعيدًا عن المستشعر فوق الصوتي.

• خذ سيارتك بلطف للخلف أو قدمها إلى مكان وقوفك.

• نظرًا لأن المسافة بين السيارة والمستشعر أقل من 1.0 متر ، يصدر الجرس صفيرًا.

• مع اقترابك من المستشعر ، يزداد معدل صوت الصفير ، وبمجرد وصول السيارة إلى قدم واحدة أو 0.3 متر ، تطالب الشاشة بإيقاف السيارة ويجب عليك التوقف.

• سيتم إعادة تعيين جهاز الإرسال والانتقال إلى وضع الخمول تلقائيًا. قم بإيقاف تشغيل جهاز الاستقبال في سيارتك. إذا قمت بتشغيل جهاز الإرسال بالبطارية ، فأوقف تشغيله أيضًا.

كيفية تشغيل دائرة إنذار مستشعر وقوف السيارات هذه (مستشعر وقوف السيارات المحمول)

• إنها تعليمات مماثلة سبق ذكرها إذا كان جهاز الاستقبال يعرض عبارة 'سيارة ليست في النطاق' سيارتك بعيدة عن العائق.

• عند إيقاف تشغيل المحرك ، يجب إيقاف تشغيل دائرة جهاز الإرسال. قم بإيقاف تشغيل دائرة الاستقبال يدويًا.

النموذج الأولي للمؤلف:

المرسل:

المتلقي:

نموذج إنذار جهاز استشعار وقوف السيارات


Previous: Universal ESC Circuit for BLDC and Alternator التالي: دائرة التحكم في المحرك عالية التيار باستخدام Arduino