روبوت مستكشف للحريق و الغازات (الجزء2)

بــــسم الله الرحمن الرحيــــم 


في هذ الجزء سنتحدث عن الحساسات المستخدمه في الروبوت و طريقة توصيلها ,
 و  برمجة الاردوينو . 




اولاً | الـحـسـاسـات :  


• حساس الغازات MQ-5 : 





يستخدم هذا الحساس لتحديد وجود بعض انواع الغازات ( مثل غاز الطبخ المنزلي ) !
تتغير مقاومة الحساس بتغير تركيز الغاز , يمكن الرجوع للنشرة الفنية للحساس لمعرفة قيمة مقاومة الحساس عند نسبة غاز محددة , و معرفة القيمة التي سيقرأها الاردوينو ( بعد معرفة قيم المقاومات الخارجية المضافة للحساس و فرق الجهد المطبق عليه ) !

او يمكن ببساطة تجريب الحساس و اخذ قراءات بدون وجود الغاز , و بعد وجود الغاز , و اختيار قيمة لنعتبرها حد فاصل بين القيم الطبيعية و الخطرة !
بعد تجريب الحساس , اعتبرنا انه اذا كانت قراءة الحساس اكبر من 300 تعتبر نسبة الغاز خطرة !!

توصيل الحساس كالتالي : 







• حساس اللهب :

حساس اللهب هو عبارة عن مستقبل اشعة تحت الحمراء , لأن لهب النار لديه طول موجي محدد يصنف بانه اشعة تحت حمراء ! و بالتالي يمكن تحديد وجود الحريق من خلال هذه الاشعة ! 



و يمكن تجريب الحساس لمعرفة القراءات التي يعطيها , و تعديل حساسيته من خلال تعديل قيمة المقاومة المتغيرة المضافه له .

توصيل الحساس يكون كالتالي : 





• حساس الحرارة :

حساس الحرارة من نوع LM35 ..




هذا الحساس ايضاً  تتغير مقاومة بتغير درجة الحرارة المحيطة به , و يمكن حساب درجة الحرارة من خلال معادلة بسيطة .

يتم توصيله كالتالي :






• حساس المسافة :
استخدمنا حساس من نوع 
Ultrasonic HC - SR04




يمكنك التعرف اكثر على هذا الحساس من خلال هذه المقالة :



و يتم توصيله كالتالي :







و بالنهاية نحتاج لتوصيل طنان كهربائي (Buzzer) لإصدار صوت التنبيه 
نقوم بتوصيله كما في الصورة :



شكل الروبوت النهائي : 









ثانياً | برمجة الاردوينو :  

التوصيلات مع الاردوينو كما في الشكل : 





نقوم بكتابة البرنامج التالي (تتبعه جيداً ) لينفذ الروبوت الوظائف التي ذكرناها في بداية المقال :






/* 
Ali Hadabeen 13/1/2014
Full experiment at :  ali-madness.blogspot.com
*/

#define Buzzer 11
#define trigPin 12
#define echoPin 13
const int IN1=3;
const int IN2=5;
const int IN3=6;
const int IN4=9;
int  Flame_sensor = 0; 
int  Gas_sensor = 0; 
int  Temp_sensor = 0;
int  SPEED_Control=200;


void setup() {
  
// fIRST , define the Motor's pin as an OUTPUT  
pinMode( IN1 ,OUTPUT);// Right Motor 1st wire
pinMode( IN2 ,OUTPUT);// Right Motor 2nd wire
pinMode( IN3 ,OUTPUT);// left Motor 1st wire
pinMode( IN4 ,OUTPUT);// left Motor 2nd wire
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode( Buzzer ,OUTPUT);// Right Motor 1st wire

Serial.begin(9600);

}


void BACKWARD(int Speed){
  //When we want to let Motor To Rotate clock wise
  // just void this part on the loop section .

  analogWrite(IN1,0);
  analogWrite(IN2,Speed);
  analogWrite(IN3,Speed);
  analogWrite(IN4,0);
}


void FORWARD (int Speed){
  //When we want to let Motor To Rotate Counter clock wise
  // just void this part on the loop section .
  analogWrite(IN1,Speed);
  analogWrite(IN2,0);
  analogWrite(IN3,0);
  analogWrite(IN4,Speed);
}


void LEFT(int Speed){
  //When we want to let Motor To Rotate Counter clock wise
  // just void this part on the loop section .
  analogWrite(IN1,0);
  analogWrite(IN2,Speed);
  analogWrite(IN3,0);
  analogWrite(IN4,Speed);
}


void RIGHT(int Speed){
  //When we want to let Motor To Rotate Counter clock wise
  // just void this part on the loop section .
  analogWrite(IN1,Speed);
  analogWrite(IN2,0);
  analogWrite(IN3,Speed);
  analogWrite(IN4,0);
}


void Stop(){
  //When we want to let Motor To Rotate clock wise
  // just void this part on the loop section .
  analogWrite(IN1,0);
  analogWrite(IN2,0);
  analogWrite(IN3,0);
  analogWrite(IN4,0);
}


void loop() 
{
  

// ---------------  Gas -------------------------------------  

Gas_sensor = analogRead(A0);
if ( Gas_sensor > 300 ) 
   { Stop();
     while (1){
        digitalWrite(Buzzer , HIGH );
        delay(60);
        digitalWrite(Buzzer , LOW );
        delay(60);}
   }
//-----------------------------------------------------------



// ---------------  Flame -----------------------------------        

Flame_sensor = analogRead(A1); 
if ( Flame_sensor < 950 ) 
    { Stop();
        while (1){
        digitalWrite(Buzzer , HIGH );
        delay(60);
        digitalWrite(Buzzer , LOW );
        delay(60);}
    }
//-----------------------------------------------------------     
   



// ---------------  Temp. -----------------------------------  

Temp_sensor = analogRead(A2);
if ( Temp_sensor > 100 ) 
   { Stop();
     while (1){
        digitalWrite(Buzzer , HIGH );
        delay(60);
        digitalWrite(Buzzer , LOW );
        delay(60);}
   }
//-----------------------------------------------------------



   
       
// ---------------  Ultrasonic ------------------------------       

int duration, distance;
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(1000);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1;        
if ( distance < 10 ) 
       { Stop();
        digitalWrite(Buzzer , HIGH );
        delay(100);
        digitalWrite(Buzzer , LOW );
        delay(100);
        digitalWrite(Buzzer , HIGH );
        delay(100);
        digitalWrite(Buzzer , LOW );
       
          BACKWARD (SPEED_Control);
          delay(200);
         Stop();
       }
//-----------------------------------------------------------          



        
// --------------  Drive the Robot --------------------------        
  if (Serial.available())

     {
     int BluetoothData=Serial.read();
   
     if(BluetoothData=='F'){   // if number 1 pressed .... 
      FORWARD(SPEED_Control);
     }
     if(BluetoothData=='B'){   // if number 1 pressed .... 
     BACKWARD(SPEED_Control);
     }
     if(BluetoothData=='L'){   // if number 1 pressed .... 
     RIGHT(SPEED_Control);

     }
     if(BluetoothData=='R'){   // if number 1 pressed ....
     LEFT(SPEED_Control);
     }
    if(BluetoothData=='S'){   // if number 1 pressed ....
     Stop();
     }
     if(BluetoothData=='0'){  SPEED_Control=0 ;}//Speed 
     if(BluetoothData=='1'){  SPEED_Control=50; }//Speed 
     if(BluetoothData=='2'){  SPEED_Control=100; }//Speed 
     if(BluetoothData=='3'){  SPEED_Control=120; }//Speed 
     if(BluetoothData=='4'){  SPEED_Control=140; }//Speed 
     if(BluetoothData=='5'){  SPEED_Control=160; }//Speed 
     if(BluetoothData=='6'){  SPEED_Control=180; }//Speed 
     if(BluetoothData=='7'){  SPEED_Control=200; }//Speed 
     if(BluetoothData=='8'){  SPEED_Control=220; }//Speed 
     if(BluetoothData=='9'){  SPEED_Control=240; }//Speed 
     if(BluetoothData=='q'){  SPEED_Control=255; }//Speed   
     }



//--------------------------Debug----------------------------        

/*
   Serial.println ("Gas_sensor = " );
   Serial.println (Gas_sensor);
   Serial.println ("Flame_sensor  =");
   Serial.println (Flame_sensor);
   Serial.println ("Temp_sensor  =");
   Serial.println (Temp_sensor);
   Serial.println ("-------------");
   delay(300); 
*/

//-----------------------------------------------------------          


}








هل أعجبك الموضوع ؟

هناك 7 تعليقات :

  1. لماذا في متحسس الدخان تم مقارنته ب 300ممكن توضيح

    ردحذف
    الردود
    1. القيمة 300 هي قيمة تجريبية .
      قمت بتجربة الحساس بأخذ القراءات عند وجود نسبة معينه من الغاز !!
      اذا اردت استخدام الحساس بشكل دقيق يمكنك الرجوع للنشرة الفنية الخاصة بالحساس و حساب مقاومة الحساس الداخلية عند نسبة غاز محددة و و حساب قراءة الحساس من خلال قانون اوم !

      حذف
  2. ممكن نعرف حساس المسافه شنو فائدته

    ردحذف
  3. شركة الأوائل توب في النقل و التخزين بالرياض 0506003079
    تعتبر شركة الأوائل توب في النقل والتخزين من أفضل الشركات في مجال النقل والتخزين ومن أهم مميزات شركتنا في هذا المجال ما يلي فهي تمتلك أسطول من السيارات مجهزة على أعلى مستوى من التجهيزات الحديثة و كذلك مجموعه من العمالة المدربة علي أعلى مستوى من الفنيات والمدربة علي التعامل بحرفية مع جميع أجهزة النقل والأوناش والناقلات الكبيرة

    شركة نقل اثاث بالرياض
    شركة نقل عفش بالرياض
    شركة تخزين عفش بالرياض
    شركة شراء اثاث مستعمل بالرياض
    شركة مقاولات عامة بالرياض
    شركة صيانة مكيفات بالرياض

    ردحذف

  4. شركة الأوائل توب للتنظيف وتسليك المجاري بالرياض 0506003079
    تهتم الشركة بخدمات التنظيف بشكل عام وتوفر كافة أدوات التنظيف الحديثة وكافة المنظفات التي تستخدم في تلك العملية وتهتم بشكل خاص بكافة أجهزة تسليك المجاري والمنظفات التي تقوم بتسليك كافة العوالق التي تتسبب في سد المجاري بشكل كامل كما توفر السيارات التي تستخدم في نقل كافة المعدات إلي موقع العمل

    شركة تسليك مجاري بالرياض
    شركة تنظيف بيارات بالرياض
    شركة كشف تسربات المياه بالرياض
    شركة تنظيف خزانات بالرياض
    شركة عزل فوم بالرياض
    شركة عزل اسطح بالرياض


    ردحذف
  5. السلام عليكم
    انا الان اعمل على نفس المشروع والتسليم قريب جدا واستفدت كثيرا من الموقع ولكن الصور غير موجوده في الجزء الثاني
    ممكن الحل للمشكلة؟؟؟

    ردحذف
  6. الحساسات الموجوده في الروبوت الحريق ومن مايتكون

    ردحذف

جميع الحقوق محفوظة - علي الهضابين ©2012-2013 | ، يرجى ذكر المصدر عند النقل . Privacy-Policy | أنضم ألى فريق التدوين


تصميم alwan-blogger | تطوير Reda Yagoub