روبوت الأردوينو و التحكم به بواسطة الأندرويد
قد ترغب في بناء روبوت تستطيع التحكم به عن بُعد , سيكون هذا مسلياً جداً خصوصاً إذا استطعت أن تتحكم فيه بواسطة جهازك الذكي العامل على نظام الأندرويد Android .
في هذه التدوينة سأشرح كيفية بناء واحد بسهولة عن كيفية صناعة روبوت نتحكم به عن بعد عن طريق جهاز الأندرويد بواسطة البلوتوث .
القطع التي سنحتاجها :
1) بطاقة أردوينو Uno " ميجا ستحتاج لتعديل في البرنامج "
في هذه التدوينة سأشرح كيفية بناء واحد بسهولة عن كيفية صناعة روبوت نتحكم به عن بعد عن طريق جهاز الأندرويد بواسطة البلوتوث .
القطع التي سنحتاجها :
1) بطاقة أردوينو Uno " ميجا ستحتاج لتعديل في البرنامج "
2)غطاء قيادة المحركات L293 Motor driver
او دارة قيادة المحرك L298
او دارة قيادة المحرك L298
3) هيكل روبوت Magician Chassis من شركة spark fun او الهيكل 4Wheel Robot او هيكل روبوت Zumo من Pololu
4) قطعة البلوتوث HC-05 او HC-06 او احياناً تسمى Linvor .
6) جهاز ذكي او لوح مزود لنظام التشغيل أندرويد 4.0
7) قطع اخرى , مثل اسلاك توصيل , ستحتاج لأسلاك توصيل female-female عدد 4 , و ايضاً ستحتاج ل dc jack male+ female لتسهيل توصيل البطارية مع غطاء الأردوينو الخاص بالمحرك , و اخيراً pin header male عدد 1 .
التوصيل :
لأنني سأستخدم الغطاء L293 Motor driver فسأربط البلوتوث مع الأرجل A0,A1 على التوالي , و الجيد في هذا الغطاء هو امكانية توصيل المداخل التناظرية بسهولة .
التوصيل كالتالي :
ستحتاج لتحميل هذا التطبيق من متجر الأندرويد
هذا التطبيق متوافق مع هذا البرنامج
البرنامج للروبوت سواءاً كانت ب 4 عجلات ام بعجلين .
الكود مع دارة القيادة L298
الكود مع دارة غطاء قيادة المحرك L293
4) قطعة البلوتوث HC-05 او HC-06 او احياناً تسمى Linvor .
5)بطاريتان , واحدة لتغذية المحرك "يجب ان تكون أكبر من 5 فولت " و الثانية بطارية 9 فولت مع الحاضنة لتغذية الأردوينو .
6) جهاز ذكي او لوح مزود لنظام التشغيل أندرويد 4.0
7) قطع اخرى , مثل اسلاك توصيل , ستحتاج لأسلاك توصيل female-female عدد 4 , و ايضاً ستحتاج ل dc jack male
التوصيل :
لأنني سأستخدم الغطاء L293 Motor driver فسأربط البلوتوث مع الأرجل A0,A1 على التوالي , و الجيد في هذا الغطاء هو امكانية توصيل المداخل التناظرية بسهولة .
التوصيل كالتالي :
ستحتاج لتحميل هذا التطبيق من متجر الأندرويد
هذا التطبيق متوافق مع هذا البرنامج
البرنامج للروبوت سواءاً كانت ب 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 } } }
ليست هناك تعليقات :
إرسال تعليق