الروبوت ROT

الروبوت ROT

في مقال اليوم سنقوم بصناعة ربوت أسميته (ROT).

تقديم

بسم الله الرحمن الرحيم، هذا الروبوت بسيط التركيب وغير مكلف. يستطيع الربوت ROT تجنب العوائق، أي أنه يسير بشكل طبيعي وإذا ما اعترضه حاجز يقوم بعملية الإلتفاف ومتابعة الطريق...

يوجد عدة أنواع على الإنترنت حول هذا الموضوع وهذا نموذج لها:

الأجزاء الرئيسية

سنحتاج لإتمام هذا المشروع إلى:

1-هيكل سيارة قديمة (لعبة اطفال) مجهزة بمحركات للتيار المستمر كالتي في الصورة التالية:

2- بطاقة أردوينو
(Arduino Board)

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

3- متحكم بالمحركات
(Motor Driver)

وظيفة هذا العنصر هي تلقي الأوامر من بطاقة أردوينو والتحكم باتجاه دوران المحركات (امام، خلف، يمين، يسار)

ولكن لماذا لا نأخذ الأمر مباشرة من بطاقة أردوينو؟ ألم يراودك هذا السؤال؟ حسنا السبب هو أن المحركات بحاجة إلى تيار عالي يصل إلى 2 أمبير، بينما التيار الأقصى التي يمكن أن تغذي به بطاقة أردوينو الحمل هو 600 ميليأمبير، إضافة أنه إذا قمنا بتغذية المحرك من بطاقة أردوينو سيؤدي إلى تلف هذه الأخيرة بسبب الطاقة التي يختزنها المحرك. اذن، نحن بحاجة إلى عنصر لتحكم بالمحركات الموجودة بالسيارة مثل:

L298 motor driver

4- حساس الموجات فوق الصوتية

(Ultrasonic Sensor)

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

نبذة بسيطة عن هذا الحساس

يقوم هذا الحساس بإطلاق أمواج فوق الصوتية بطول موجي معين عند اطلاق الموجة وارتدادها على شكل صدى "Echo"

سرعة الصوت في الفراغ تساوي 343 متر في الثانية عند درجة حرارة 25 سيلسيوس.

لتحديد المسافة يكفي أن نعلم السرعة والفرق بين زمن إرسال الموجة وارتدادها ومن خلال قانون نيوتن:

المسافة = السرعة × الزمن

لا عليك لن نتطرق لتفاصيل هذه الأمور، بل هي فقط للتوضيح لا غير. هذا الحساس يمتلك 4 اطراف:

  • الطرف 1 (Vcc): يوصل مع مربط 5 فولت في بطاقة أردوينو.

  • الطرف 2 (GND): يوصل مع مربط الأرضي في بطاقة أردوينو.

  • الطرف 3 (Trig): يأخذ الأمر بإرسال موجة ويوصل مع أحد مداخل بطاقة أردوينو.

  • الطرف 4 (Echo): هو الصدى العائد من ارتداد الموجة ويوصل مع أحد مداخل بطاقة أردوينو.

5- البطارية

وهي من الأجزاء المهمة جدا لأنها تتحكم بمدى قوة السيارة وعدد الساعات التي يمكن أن تعمل بها السيارة، لذلك يفضل الحصول على بطارية بجهد لا يقل عن 6 فولت وتيار4 A/H.


6- بطارية 9 فولت لتغذية بطاقة أردوينو.

7- كابل توصيل بين البطارية 9 فولت وبطاقة أردوينو.

الآن انتهينا من التحضير لأجزاء السيارة و سنبدا بتركيبها وبرمجتها فهل انت مستعد؟

تثبيت البطارية

سنقوم بتهيئة مكان مناسب للبطارية وتثبيتها كما هو مبين في الشكل:

يمكن تثبيتها بأي طريقة تراها مناسبة كهذه مثلا:

تركيب بطاقتي اردوينو وقيادة المحركات

الآن وبعد تثبيت البطارية يجب تثبيت بطاقة التحكم أردوينو وبطاقة قيادة المحركات كما في الصورة التالية:

تركيب الحساس

واخيرا سنقوم بتثبيت حساس الموجات فوق الصوتية في مقدمة السيارة. ولكن احذر!! يجب أن تحافظ على استقامة الحساس وزاوية ميله مع المستوى الأفقي، لأنه وفي حال وضعه في ميل مع المستوى الأفقي سيقوم الحساس بإعطاء إشارة للبطاقة المبرمجة أردوينو بأن هنالك عائق، وبالتالي ستعطي هي أمر بالإلتفاف وستستمر العملية ولن يسير إلى الأمام مطلقا!

التوصيل الكهربائي

الآن قد حان وقت التوصيل وربط المكونات مع بعضها البعض اتبع التعليمات التالية:

  • اولا: قم بتوصيل اطراف المحرك الأول مع L1&L2 الموجودة على بطاقة التحكم بالمحركات وقم بتوصيل اطراف المحرك الثاني مع L3&L4 الموجودة على نفس البطاقة.

  • ثانيا: سنقوم بتوصيل مداخل التحكم لبطاقة التحكم بالمحركات الموجودة في مقدمة البطاقة كما في الصورة التالية ببطاقة التحكم أردوينو كما في الجدول التالي:

Motor driver

Adruino

IN1

Pin#2

IN2

Pin#3

IN3

Pin#6

IN4

Pin#7

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

وطريقة التوصيل مبينة في الصورة جانبه والجدول التالي:

Arduino Pin

Ultrasonic terminal

+5 volt

Vcc

GND

GND

12

Trig

13

Echo

تحميل البرنامج

يفضل قبل تحميل الكود البرمجي فصل جميع مصادر التغذية عن الأحمال مثل المحركات... والأحمال التي تغذيها بطاقة أردوينو مثل حساس الموحات فوق الصوتية للحفاظ على سلامة البطاقة.

ولتسهيل عملية البرمجة يجب تحميل المكتبة الخاصة بحساس الموجات فوق الصوتية من هنا:

utlrasonic library

البرنامج

// Author: Omar Alterawi

#include "Ultrasonic.h"
Ultrasonic dis(12,13);
int distance;
int m1=2;
int m2=3;
int m3=6;
int m4=7;

//دالة التهئية
void setup()
{

Serial.begin(9600);
pinMode(m1,OUTPUT);
pinMode(m2,OUTPUT);
pinMode(m3,OUTPUT);
pinMode(m4,OUTPUT);
}

//دالة الاتجاه نحو الأمام
void go_to_forward()
{
digitalWrite(m1,HIGH);
digitalWrite(m2,LOW);
digitalWrite(m3,LOW);
digitalWrite(m4,LOW);
}

//دالة الاتجاه نحو الخلف
void go_to_back()
{
digitalWrite(m3,LOW);
digitalWrite(m4,HIGH);
digitalWrite(m1,LOW);
digitalWrite(m2,HIGH);
}

//دالة الاتجاه نحو اليمين
void go_to_right()
{
digitalWrite(m1,HIGH);
digitalWrite(m2,LOW);
digitalWrite(m3,HIGH);
digitalWrite(m4,LOW);
}

//دالة التوقف
void go_to_stop()
{
digitalWrite(m1,LOW);
digitalWrite(m2,LOW);
digitalWrite(m3,LOW);
digitalWrite(m4,LOW);
}

//الدالة الرئيسية
void loop()
{
 distance=dis.Ranging(CM);
 while(distance<55)
 {
  distance=dis.Ranging(CM);
  go_to_stop();
  delay(1000);
  go_to_back();
  delay(1500);
  go_to_stop();
  delay(500);
  go_to_right();
  delay(2000);
  Serial.print(distance);
  Serial.println("CM");
 }

 while(distance>55)
 {
  go_to_forward();
  Serial.print(distance);
  Serial.println("cm");
  distance=dis.Ranging(CM);
 }

}

مشاكل وحلول

بعض المشاكل التي من الممكن أن تواجهك:

1- السيارة تتحرك إلى الخلف بدل من أن تتحرك إلى الأمام؟

الحل: قم بقلب اسلاك التحكم L1&L2

2- السيارة لا تسير مطلقا؟

الحل: تأكد من توصيل خطوط التغذية وتأكد من أن الأسلال بحالة توصيل مع باقي المكونات.

3- السيارة تلتف عن الأجسام عن بعد كبير يمكنك؟

الحل: من الممكن أن تقوم بتعديل الشرط الموجود في جملة "While(distance<55)i" وجعل المسافة اقل مثلا "While(distance<30)i" او في حال كانت السيارة سريعة جدا يمكن زيادة المسافة.... افعل ما تراه مناسبا.

وفي النهاية ارجو ان يكونROT” قد نال اعجابكم، والسلام عليكم و رحمة الله و بركاته.

تأليف

تأليف: عمر كمال الطيراوي (الأردن)

البريد الإلكتروني: عنوان البريد الإلكتروني هذا محمي من روبوتات السبام. يجب عليك تفعيل الجافاسكربت لرؤيته.

التعليقات   

 
mohmdth120
0 # mohmdth120 2016-05-12 10:50
اخي الفاضل حساسا اللتراسونك يعطيني قيم غير دقيقة مثلا يكون الروبوت على بعد 20 سم يعطيني الحساس قراءة 140 سم هل من حل
رد | رد مع اقتباس | اقتباس | تقرير إلى المدير
 
 
snaikal
0 # snaikal 2016-05-12 12:32
نعم يوجد حل بالرياضيات. استخدم العلاقة الثلاثية، أعني حول 140 إلى 20 سم:
مثلا:

real_value = sensor_value*20 /140
رد | رد مع اقتباس | اقتباس | تقرير إلى المدير
 
 
Jehad abu nassr
0 # Jehad abu nassr 2015-06-12 01:12
الله يعطيك العافية مهندس عمر ... عنجد روبوت رائع وسهل ... بانتظار جديدك وابداعك
رد | رد مع اقتباس | اقتباس | تقرير إلى المدير
 
 
nihad
0 # nihad 2015-06-11 17:45
بسم الله الرحمن الرحيم، هذا الروبوت بسيط التركيب وغير مكلف. يستطيع الربوت ROT تجنب العوائق، أي أنه يسير بشكل طبيعي وإذا ما اعترضه حاجز يقوم بعملية الإلتفاف ومتابعة الطريق...

يوجد عدة أنواع على الإنترنت حول هذا الموضوع وهذا نموذج لها:
رد | رد مع اقتباس | اقتباس | تقرير إلى المدير
 

أضف تعليق


كود امني
تحديث

المزيد في هذه الفئة :


Go to top