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

                                                                                                                             

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

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

شاهد أيضاً

maxresdefault (2)

كتاب أساسيات CNC

كتاب وصف المخرطة ذات التحكم الرقمي CNC وإضاح خواصها – Book Description turnery machine CNC …

تعليق واحد

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

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

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

أضف تعليقاً

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

error: thank you for using Kahrabje website ^^