تصميم روبوت طافئ للنار fire fighter

0

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

بعد اخر مشروع صممناه وهو التحكم بسيارة باستخدام ir remote

ويمكن الإطلاع عليه من هنا  



سنقوم اليوم بتصميم احد التطبيقات المهمه لروبوت السيارة وهو طافئ الحريق حيث سنقوم بتصميم روبوت سيارة يتنقل فى المكان ويتعقب اماكن النيران الى ان يصل اليها ثم يضخ المياه لإطفاءها


اولا الأدوات :

3x flame sensor

Arduino uno

2x motor dc

h-bridge

transistor pnp

pump 9v

battery 9v

flame sensor 

او حساس اللهب ولهذا الحساس القدرة على تعقب اماكن النيران

ويحتوى على 4 منافذ سبق لنا وقمنا بشرحه فى الدروس المتوسطه


arduino uno

المتحكم الذي سنستخدمه لقيام بمعالجه البيانات



motor dc

المواتير التى سنستخدمها لكى يستطيع الروبوت الحركة


water pump

مضخة المياه التى سنستخدمها لإطفاء اللهب

h-bridge

شريحة من اهم الشرائح التى سنستخدمها والتى منها سيتم التحكم بالمواتير و عملها واتجاه دورانها 


ثانيا التوصيلات :




تحتوى حساسات flame على 4 منافذ نحن سنستخدم 3 فقط

منفذ الطاقة ومنفذ السالب ومنفذ الخرج التماثلى يتم توصيل منفذ الطاقة الى 5 فولت وتوصيل منفذ السالب الى السالب وتوصيل منفذ الخرج التماثلي الى الأردوينو 

من ثم توصيل المواتير الى h-bridge كما هو موضح فى الأعلى

من ثم توصيل منافذ الداتا الى الأردوينو منافذ in الخاصه H-bridge

من ثم توصيل شريحة h-bridge بالطاقة من بطارية 9 فولت 

من ثم توصيل المضخه الى emiter الخاص بالترانزيستور وتوصيل collecotr الى البطارية 9 فولت +

وتوصيل الطرف السالب من المضخة الى -

وفى النهاية توصيل base الى الأردوينو

ثالثا المجسم :

ونتجه الأن الى تركيب جسم الروبوت 
اولا نحضر مثل هذا المجسم لا تهم المادة المصنعة لكن المهم هو ان تكون المادة وزنها خفيف 

ونقوم بتوصيل المواتير بالعجلات كما هو موضح بالصورة
ونقوم بلصق المواتير كما هو موضح فى الصورة


فينتج لدينا هذا الشكل 
كل ما عليكم وضع باقى التوصيلات على هذا المجسم وهذا الأمر يقف على حسب مهارتكم


رابعا الكود :-


#define IN1 6

#define IN2 5

#define IN3 4

#define IN4 3

#define EN1 7


const int pump = 8;

const int sensor_right = A2;

const int sensor_middle = A0;

const int sensor_left = A1;


void forward()

{

  digitalWrite(IN1, HIGH);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, HIGH);

  digitalWrite(IN4, LOW);

}


void reverse()

{

  digitalWrite(IN1, LOW);

  digitalWrite(IN2, HIGH);

  digitalWrite(IN3, LOW);

  digitalWrite(IN4, HIGH);

}


void left()

{

  digitalWrite(IN1, LOW);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, HIGH);

  digitalWrite(IN4, LOW);

}


void right()

{

  digitalWrite(IN1, HIGH);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, LOW);

  digitalWrite(IN4, LOW);

}


void stoprobot()

{

  digitalWrite(IN1, LOW);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, LOW);

  digitalWrite(IN4, LOW);

}

void setup()

  

  pinMode(IN1, OUTPUT);

  pinMode(IN2, OUTPUT);

  pinMode(IN3, OUTPUT);

  pinMode(IN4, OUTPUT);

  pinMode(EN1,OUTPUT);

  pinMode(pump,OUTPUT);

  digitalWrite(EN1,1);

  delay(100);

}

void loop()

{

  int right_state = analogRead(sensor_right);

  int left_state = analogRead(sensor_left);

  int middle_state = analogRead(sensor_middle);


  if(right_state > left_state && right_state > middle_state)

  {

    right();

  }

  if(left_state > right_state && left_state > middle_state)

  {

    left();

  }

   if(middle_state < 800)

  {

   forward(); 

  }

  if(middle_state > 800)

  {

  digitalWrite(pump,1);

  }

  else{

    digitalWrite(pump,0);

    stoprobot();

  }

}

خامسا شرح الكود :-

الكود كما هو موضح فى الأعلى يؤدى الغرض الأتي : 

في البداية تعريف المنافذ الخاصه بالموتور 

#define IN1 6

#define IN2 5

#define IN3 4

#define IN4 3

#define EN1 7


من ثم تعريف منافذ الحساسات والمضخه 

const int pump = 8;

const int sensor_right = A2;

const int sensor_middle = A0;

const int sensor_left = A1;

من ثم انشاء الدالات المسئولة عن تحريك الموتور

void forward()

{

  digitalWrite(IN1, HIGH);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, HIGH);

  digitalWrite(IN4, LOW);

}


void reverse()

{

  digitalWrite(IN1, LOW);

  digitalWrite(IN2, HIGH);

  digitalWrite(IN3, LOW);

  digitalWrite(IN4, HIGH);

}


void left()

{

  digitalWrite(IN1, LOW);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, HIGH);

  digitalWrite(IN4, LOW);

}


void right()

{

  digitalWrite(IN1, HIGH);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, LOW);

  digitalWrite(IN4, LOW);

}


void stoprobot()

{

  digitalWrite(IN1, LOW);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, LOW);

  digitalWrite(IN4, LOW);

}

ومن بعد ذلك القيام بتعريف جميع المنافذ السابقة كخرج ماعدا منافذ الحساسات التى لا يجب تعريفها لان المنافذ التماثليلة تمكون معرفة مسبقا كدخل

  pinMode(IN1, OUTPUT);

  pinMode(IN2, OUTPUT);

  pinMode(IN3, OUTPUT);

  pinMode(IN4, OUTPUT);

  pinMode(EN1,OUTPUT);

  pinMode(pump,OUTPUT);


من ثم انشاء ثلاثة متغيرات والقراءة من ثلاث حساسات وجعل القيمة كل حساس فى احد المتغيرات الثلاثة 

int right_state = analogRead(sensor_right);

 int left_state = analogRead(sensor_left);

 int middle_state=analogRead(sensor_middle);


بعد ذلك القيام بالشروط :

فإذا كانت قراءة الحساس الأيمن هى الأكبر قم بدوران ناحية اليمين

اذا كانت قراءة الحساس الأيسر هى الأكبر قم بدوران ناحية اليسار

اذا كانت قراءة الحساس الأوسط اقل من 800 قم بالتقدم الى الأمام

اذا كانت قراءة الحساس الأوسط اكبر من 800 قم بتشغيل المضخة واطفاء الروبوت 


لتحميل الكود اضغط هنا 

تصميم وبرمجة : بلال حسان سعدى

لا يوجد تعليقات

أضف تعليق