الرئيسية / متحكمات / أردوينو / روبوت الأردوينو و التحكم به بواسطة الأندرويد
car_01

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

اصنع روبوت الأردوينو و تحكم به بواسطة الأندرويد
pic3
 

قد ترغب في بناء روبوت تستطيع التحكم به عن بُعد , سيكون هذا مسلياً جداً خصوصاً إذا استطعت أن تتحكم فيه بواسطة جهازك الذكي العامل على نظام الأندرويد Android .

سنشرح كيفية صناعة روبوت نتحكم به عن بعد عن طريق جهاز الأندرويد بواسطة البلوتوث .

pic8
 

القطع التي سنحتاجها :

1) بطاقة أردوينو  Uno ” ميجا ستحتاج لتعديل في البرنامج “

uno

2)غطاء قيادة المحركات L293 Motor driver

او دارة قيادة المحرك  L298

 
Arduino-Official-Motor-Drive-Shield-L293D1
 

3) هيكل روبوت Magician Chassis من شركة spark fun  او الهيكل 4Wheel Robot او هيكل روبوت Zumo من Pololu

pic4
 
Chassis
 

4) قطعة البلوتوث HC-05 او HC-06 او احياناً تسمى Linvor .

 

pic2
 

5)بطاريتان , واحدة لتغذية المحرك “يجب ان تكون أكبر من 5 فولت ” و الثانية  بطارية 9 فولت مع الحاضنة  لتغذية الأردوينو .

450px-NiMH_2500mAh
 
.
6) جهاز ذكي او لوح مزود لنظام التشغيل أندرويد 4.0 واكثر
hqdefault
7) قطع اخرى , مثل  اسلاك توصيل , ستحتاج لأسلاك توصيل female-female عدد 4 , و ايضاً ستحتاج ل dc jack male+female لتسهيل توصيل البطارية مع غطاء الأردوينو الخاص بالمحرك, و اخيراً pin header male عدد 1 
pic7
 
 

التوصيل :

لأنني سأستخدم الغطاء L293 Motor driver فسأربط البلوتوث مع الأرجل A0,A1 على التوالي , و الجيد في هذا الغطاء هو امكانية توصيل المداخل التناظرية بسهولة .

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

schematic
وفي حال استخدام دارة القيادة L298 يكون التوصيل كالآتي :
 
Connection
arduino-bluetooth-rc-car-5-0-s-307x512
 

هذا التطبيق متوافق مع هذا البرنامج

                                         البرنامج للروبوت سواءاً كانت ب 4 عجلات ام بعجلين .                                        

                                                         الكود مع دارة القيادة L298                                                              


// Robot 2wheel , 4 wheel controlled via Bluetooth
// Written By :Mohannad Rawashdeh
//http://www.genotronex.com/
#include "SoftwareSerial.h"// import the serial library\

const int IN1=3;
const int IN2=5;
const int IN3=6;
const int IN4=9;
 int BluetoothData;
 SoftwareSerial HC05(10, 11); // RX, TX
 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
 HC05.begin(9600);
}
void FORWARD(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 BACKWARD(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() {
 //Rise Up

  if (HC05.available()){
 BluetoothData=HC05.read();
 Serial.println(BluetoothData);
   
  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   
  }
}

 

 

 

 

الكود مع دارة غطاء قيادة المحرك L293  

 


 

#include <AFMotor.h>
#include <SoftwareSerial.h>// import the serial library
SoftwareSerial Genotronex(14, 15); // RX, TX

char BluetoothData; // the data given from Computer
int t=10;
    AF_DCMotor right_motor(1, MOTOR12_1KHZ); // create motor #2, 1KHz pwm
    AF_DCMotor left_motor (2, MOTOR12_1KHZ); // create motor #3, 1KHz pwm
 
void setup() {
  // put your setup code here, to run once:
  Genotronex.begin(9600);
  left_motor.setSpeed(200);     // set the speed to 200/255
  right_motor.setSpeed(180);     // set the speed to 200/25
}

void loop() {
  // put your main code here, to run repeatedly: 
  if (Genotronex.available()){
 BluetoothData=Genotronex.read();
 delay(t);
 switch(BluetoothData){
 case 'F':
  left_motor.run(FORWARD);
  right_motor.run(FORWARD);
  delay(t);
  break;
  case 'L':// right
  left_motor.run(BACKWARD);
  right_motor.run(FORWARD);      // turn it on going forward 
  delay(t);
  break;
  case'R'://left
  left_motor.run(FORWARD);
  right_motor.run(BACKWARD); 
  delay(t);
  break;
  case'B':
  left_motor.run(BACKWARD);
  right_motor.run(BACKWARD); 
  delay(t);
  break;
  case'S':
  left_motor.run(RELEASE);
  right_motor.run(RELEASE);
  delay(t);
  break;
  case '2':
 left_motor.setSpeed(100);     // set the speed to 200/255
 right_motor.setSpeed(80);     // set the speed to 200/25
  break;
  case '4':
  left_motor.setSpeed(150);     // set the speed to 200/255
  right_motor.setSpeed(130);     // set the speed to 200/25
  break;
  case'7':
  left_motor.setSpeed(200);     // set the speed to 200/255
  right_motor.setSpeed(180);     // set the speed to 200/25
  break;
  case'q':
  left_motor.setSpeed(250);     // set the speed to 200/255
  right_motor.setSpeed(230);     // set the speed to 200/25

  }
 
}
}

 

و هذا الفيديو يوضح تطبيق هذا البرنامج              

 
 

المصدر : Genotronex

                                                                                                                             

عن حمزة الخزاعلة

مدير موقع كهربجي | مهندس بور ( هندسة القوى الكهربائية ) وباحث في مواضيع التحكم الالكتروني

شاهد أيضاً

arduinoynlead01

كيف تحمي الأردوينو من التلف بأبسط المكونات !!

إذا كنت تريد أن تحمي دائرة الأردوينو من التلف عند توصيل المحركات والمرحلات Relays او …

تعليق واحد

  1. كل لما احاول اشغل الفيديو يقولي

    http://store1.up-00.com/2016-04/146099864172961.png

    قهرتني بخاصية عدم اللصق يا أخي حرام عليك *_*

أضف تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

error: thank you for using Kahrabje website ^^