تصميم روبوت التحكم عن طريق ir remote

0

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

بعد ان قمنا بتصميم العديد من المشاريع التى لها علاقة بسيارة الروبوت  :- 

روبوت متتبع الخط line follower

روبوت التحكم عن طريق البلوتوث 

تصميم روبوت التحكم به عن طريق الصوت

تصميم روبوت التحكم به بالصوت عن طريق البلوتوث 


ولكن اليوم سنقوم ببعض التطويرات على هذا المشروع حيث سنتحكم بهذا الروبوت باستخدام ريموت كنترول 

اولا الأدوات 

ir remote reciever and sender

arduino uno

2 motor dc

l239d driver 

battery

ir remote reciever and sender

وسيلة التواصل التى سنستعملها فى هذا المشروع 

arduino uno

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


l239d driver 

هذه الشريحة تشبه شريحة h-bridge فهى تقوم بالتحكم فى محركات dc ويجب استخدام هذه الشريحة 

وان تم توصيل المواتير مباشرة الى الأردوينو سيتم حرق الأردوينو 





ثانيا المجسم :

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

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


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

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




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

رابعا الكود : 


فى البداية يجب ان نصل الى البيانات التى يقوم الريموت بارسالها عند الضغطة على اى زر
عن طريق هذا الكود 
#include <IRremote.h>
IRrecv rec(8);
decode_results res;
void setup(){
  rec.enableIRIn();
  Serial.begin(9600);
}
void loop(){
  if(rec.decode(&res)){
   Serial.println(res.value , HEX);
   rec.resume();
  }
}
حيث يقوم هذا الكود بقراءة البيانات المرسلة من الريموت وطباعتها فى السيريال مونيتور كل ما عليك تحديد الأزرار التى تريد ان تستعملها 

الكود النهائى :-


#include <IRremote.h>
#define IN1 12
#define IN2 11
#define IN3 10
#define IN4 9
IRrecv rec(8);
decode_results res;
void setup(){
 rec.enableIRIn();
 pinMode(IN1, OUTPUT);
 pinMode(IN2, OUTPUT);
 pinMode(IN3, OUTPUT);
 pinMode(IN4, OUTPUT);
 digitalWrite(IN1, LOW);
 digitalWrite(IN2, LOW);
 digitalWrite(IN3, LOW);
 digitalWrite(IN4, LOW);
}
void loop(){
  if(rec.decode(&res)){
    if(res.value == 0xZZZZZZZ){
      Serial.print("right");
      right();   }
    rec.resume();
    if(res.value == 0xZZZZZZZ){
      Serial.print("back");
      reverse();  }
    rec.resume();
    if(res.value == 0xZZZZZZZ){
      Serial.print("left");
      left(); }
    rec.resume();
    if(res.value == 0xZZZZZZZ){
      Serial.print("forward");
      forward();    }
    rec.resume();
    if(res.value == 0xZZZZZ){
      Serial.print("stop");
      stoprobot();  }
    rec.resume(); }}
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);
}

شرح الكود :-


فى البداية قمت باضافة المكتبة الأساسية لكي اتعامل مع ir remote

#include <IRremote.h>
من ثم انشاء متغيرات تحتوى على منافذ الموتور
#define IN1 12
#define IN2 11
#define IN3 10
#define IN4 9
من ثم قمت بانشاء كائنين كائن يتم وضع فيه منفذ الخاص بالمستلم
ثم كائن الأخر يتم انشائه وهو خاص بالبيانات المستلمة من الريموت
IRrecv rec(8);
decode_results res;
من ثم تشغيل المستلم وتهيئته لاستلام البيانات 
 rec.enableIRIn();
بعد ذلك القيام بتعيين جميع منافذ الموتور كخرج واخراج 0 فولت على جميع المنافذ
pinMode(IN1, OUTPUT);
 pinMode(IN2, OUTPUT);
 pinMode(IN3, OUTPUT);
 pinMode(IN4, OUTPUT);
 digitalWrite(IN1, LOW);
 digitalWrite(IN2, LOW);
 digitalWrite(IN3, LOW);
 digitalWrite(IN4, LOW);
بعد هذا بدء استلام البيانات عن طريق هذا الأمر
 if(rec.decode(&res)){
من ثم البدء فى عمل مقارنات من القيمة المرسلة وقيمة الزر الذي قمت بتعيينه ويجب استبدال ZZZZZ بقيمة الزر التى سبق ان قرانها من على السيريال مونيتر مع الحفاظ على وجود 0x
وباقى الكود لن نقوم بشرحه بسبب اننا قمنا بشرحه  العديد من المرات

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

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







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



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

أضف تعليق