التحكم بالروبوت عبر صفحة الويب

في هذا المشروع، سنتعلم كيفية التحكم بالراسبيري باي من خلال واجهة الويب. وهذا سوف يسمح لك للتحكم بالمحركات والإضاءة وغيرها من القطع الإلكترونية عبر شبكة الإنترنت. سنقوم خلال هذا المشروع بالتحكم والسيطرة على الروبوت عن طريق الويب.

web-controlled-robot

الأدوات المستخدمة :

4WD Robot Chassis kit

L298 H bridge Module

 كاميرا للراسبري باي (raspberry pi camera module) أو USB webcam

 اسلاك توصيل أنثى/أنثى  (Jumper Wires Female/Female)

 اسلاك توصيل أنثى/ذكر (Jumper Wires Female/male)

 راسبيري باي (Raspberry Pi 3 Model B)

 

ما هو الروبوت ؟

الروبوت هو جهاز كهروميكانيكي قادر على التفاعل بطرية أو بأخرى مع بيئته، و اتخاذ قرارات مستقلة أو إجراءات من أجل تحقيق مهمة محددة.
يتكون الروبوت من العناصر التالية:
1- الهيكل.
2- المشغل الميكانيكي .
3- وحدة التحكم.
4-المدخلات/ الحساسات.
5- امدادات الطاقة.
في الخطوات التالية سنذكر بعض العناصر المذكورة اعلاه، بحث يمكن أن نفهمها بسهولة.

الهيكل (Structure / Chassis) :

smartphone-controlled-arduino-robot

يتألف الهيكل من المكونات الفزيائية. الروبوت يتكون من مكون او اكثر من المكونات الفزيائية التي تتحرك لتنفيذ مهام معينة. وفي حالتنا هيكل السيارة و العجلات تمثل هيكل الروبوت

المشغل الميكانيكي Actuator :

smartphone-controlled-arduino-robot

المحرك هو جهاز يقوم بتحويل الطاقة (في مجال الروبوت، تكون الطاقة الكهربائية) الى طاقة حركية. تنتج معظم المحركات إما الحركة الدورانية أو الخطية.
في حالتنا المحرك هو(DC Gear motor)  وهو بالاساس عبارة عن محرك  DC مركب مع علبة تروس (gear) تعمل على تقليل سرعة المحرك و زيادة عزم الدورات .

إعداد أطراف المحركات :

قطع اربع قطع من الأسلاك (الحمراء و السوداء) مع طول حوالي 5-6 انش. قم بتجريد السلك من العازل في كل نهاية ، ثم قم بلحم الأسلاك على المحركات.

smartphone-controlled-arduino-robot

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

تركيب المحرك :

smartphone-controlled-arduino-robot

لاحظ أن الأسلاك على كل محرك تشير الى إتجاه مركز الهيكل.

smartphone-controlled-arduino-robot

قم بضم اثنان من الأسلاك الحمراء و اثنان من الاسلاك السوداء معا على كل جانب من جوانب الهيكل. بعد الانضمام، سيكون لديك اثنان من النهايات على الجانب الايمن و اثنان على الجانب الأيسر.

تثبيت السقف العلوي:

بعد تركيب الأربع محركات في الطابق السفلي، قم بتركيب السقف العلوي. ثم قم بسحب نهايات الاسلاك نحو السطح العلوي.

smartphone-controlled-arduino-robot

هناك حاجة إلى المتحكم لتحريك الروبوت من مكان إلى أخر. المتحكم له القدرة على تنفيذ برنامج و يكون مسؤولا عن جميع العمليات الحسابية، واتخاذ القرارات، و الاتصال . في هذا المشروع سيتم استخدام متحكم الراسبيري باي  كـوحدة تحكم.

لا يمكن توصيل المحركات مباشرة مع الراسبيري باي، لأن المحركات تحتاج تيار عالي لا يستطيع الراسبيري باي إعطاءه. لهذا السبب سيتم استخدام Dual H-bridge كدائرة بين الراسبيري باي والمحركات.

 

 L298  H Bridge Module

smartphone-controlled-arduino-robot

H-Bridge، يقوم بتحريك محرك الـ DC بإتجاه الامام و الخلف. وهو يتكون من اربع مفاتيح الكترونية S1,S2,S3,S4  (Transistors / MOSFETS / IGBT).

smartphone-controlled-arduino-robot

الية العمل: انظر للصورة اعلاه لفهم ألية العمل للـ H-Bridge . المفاتيح في نفس الجهة إما (S1,S2) أو  (S3,S4)لا يتم إغلاقهم بنفس الوقت , سيتم حدوث ماس كهربائي .
H-bridge توفر لك دائرة متكاملة، أو يمكنك أن تقوم ببناء الدائرة بنفسك عن طريق إستخدام اربع Transistor او MOSFETs. في هذا المشروع سيتم استخدام  L298 H-bridge Module الذي يمكن من خلاله التحكم في سرعة واتجاه المحركات.

وصف مداخل و مخراج الـ L298H-bridge Module : 

smartphone-controlled-arduino-robot

توصيل جميع القطع الإلكترونية :

أولا: نقوم بتوصيل الأسلاك ذات اللون الأحمر معا والأسلاك ذات اللون الأسود معا لكل من الجهة اليمنى واليسرى.

web-controlled-robot

اتبع الجداول التالية ليتم توصيل باقي القطع :

توصيل المحركات :
L298H-bridge أسلاك المحركات
OUT  1 الأسلاك ذات اللون الأسود على جهة اليسار (-)
OUT 2 الأسلاك ذات اللون الأحمر على جهة اليسار (+)
OUT 3 الأسلاك ذات اللون الأسود على جهة اليمين (-)
OUT 4 الأسلاك ذات اللون الأحمر على جهة اليمين (+)
توصيل الطاقة مع قطعة L298H-bridge :
L298H-bridge البطاريات
12 V السلك ذو اللون الأحمر للبطارية (+)
GND السلك ذو اللون الأسود للبطارية مع GND على الراسبيري باي
توصيل الراسبيري باي مع L298H-bridge :
L298H-bridge  الراسبيري باي (WiringPi Pin)
IN 1 GPIO 0
IN 2 GPIO 7
IN 3 GPIO 3
IN 4 GPIO 2
GND GND

تثبيت و إستخدام المكتبة Wiring Pi :

مكتبة Wiring Pi هي مكتبة الوصول إلى GPIO  على لوحة الراسبيري باي . و انها تسمح لك التحكم بمداخل و مخارج الراسبيري باي من خلال bash script   او مباشر من خلال سطر أوامر.
تحقق أولا ما اذا كانت مكتبة wiringPi مثبتة مسبقا ام لا ، من خلال نافذة الـ  terminal قم بتشغل الامر التالي:

gpio -v

 اذا لم تقم بتثبيت GIT،  يمكنك تثبيتها من خلال الأمر التالي :

sudo apt-get install git-core

اذا تم ظهور رسالة خطأ هنا ، تأكد من تحديث الراسبيري باي إلى أخر اصدار من Raspbian :

sudo apt-get update
sudo apt-get upgrade

للحصول على WiringPi باستخدام GIT، قم بكتابة الأمر التالي:

cd
git clone git://git.drogon.net/wiringPi
cd ~/wiringPi
git pull origin

سوف تجلب النسخة المحدثة ثم يمكنك إعادة تشغيل البرنامج من خلال الأمر أدناه .
لبناء/ تثبيت البرنامج :

cd ~/wiringPi
./build

الكتابة و القراءة من المنافذ عن طريق استخدام أوامر المكتبة wiringPi :

الآن يجب أن تكون قادر على إستخدام الأداة، قم بكتابة الأمر التالي على نافذة الـ Terminal :

gpio mode 0 out

اذا لم يتم ظهور شي أو رسالة خطأ فقد تم التثبيت للمكتبة بشكل صحيح. في حال تم ظهور رسالة الخطأ “command not found error” أو شي من هذا القبيل، تأكد من تثبيت و بناء المكتبة. للقيام بتشغيل و إطفاء الـ Wiring pin 0 )LED) ، تحتاج اولا إلى تعيين الدبوس كمخرج من خلال الأمر التالي :

gpio mode 0 out

“0”هي رقم المنفذ wiring، و “OUT”  لتعيين المنفذ كمخرج . سيتم تشغيل الـ LED  من خلال الأمر التالي :

gpio write 0 1

“0” للدلاله على رقم المنفذ ، و “1”  لوضع الدبوس في حالة التشغيل الـ LED( للتشغيل 1 و إطفاءه 0) . و لإيقاف التشغيل ببساطة استخدم الأمر :

gpio write 0 0

وهناك أيضا اوامر لقراءة GPIO  والتي تسمح لقراءة وضع الدبوس. فيمكن من خلاله معرفة حالة الضوء هل هو في حالة التشغيل او الإيقاف إذا لم تكن على إستطاعه لرؤية الضوء. يمكنك ذلك عن طريق الأمر التالي :

gpio read 0

“0” لتعيين رقم المنفذ Wiring. هذا الأمر يقوم بترجيع  قيمة 1 اذا كان الضوء في حالة التشغيل و قيمة 0 اذا كان الضوء في حالة الإيقاف.

وأخيرا مكتبة wiringPi تحتوي على الكثير من الأوامر و الدوال التي تمكنك من التحكم بمداخل و مخارج الراسبيري باي ولكن لن يتم تغطيتها جميعها في هذا المشروع. يمكنك الاطلاع على هذه الروابط اذا كنت مهتم بمعرفة المزيد :

http://wiringpi.com/reference/

https://projects.drogon.net/raspberry-pi/wiringpi/the-gpio-utility/

سنقوم بإنشاء صفحة ويب على شبكة النت ، حيث انها ستكون متوافقه مع جميع الأجهزة ، و ستكون بحاجة لمعرفة اربع لغات : CSS,HTML (نمط الصفحة)، PHP (للتفاعل مع الخادم )،  JavaScript (التفاعلات مع المستخدم) . نحن بحاجة لتثبيت خادم الويب على الراسبيري باي. في حالتنا نحن لسنا بحاجة إلى قاعدة بيانات MySQL ، فقط بحاجة إلى خادم HTTP و PHP.

 تثبيت خادم الويب(Web Server) :

أولا قم بعمل تحديث للراسبيري باي :

sudo apt-get update

أولا قم بتثبيت حزمة apache2 ، من خلال الأمر التالي :

sudo apt-get install apache2 -y

 

الان قم بالتحقق ما اذا كان الخادم (Server) يعمل، قم بكتابة العنوان IP الخاص بالراسبيري باي على متصفح الويب. اذا كان يعمل ستظهر رسالة “It works!” كما هو موضح بالصورة أدناه.

remote-control-raspberry-pi-leds

إذا لم يتم مثل ما سبق، قم بالتحقق من العنوان IP الخاص بالراسبيري باي من خلال الأمر التالي :

ifconfig

أو قم بمحاولة إعادة تثبيت Apache  أو إعادة تشغيل الراسبيري باي.

للسماح للـ apache بمعالجة ملفات PHP، انت بحاجة إلى تثبيت PHP5 ووحدة PHP5 للـApache. قم بتتبع الخطوات التالية ليتم التثبيت :

sudo apt-get install php libapache2-mod-php -y

الملف  الخاص بواجهة المستخدم :

قم بالدخول إلى ملف /var/www/html/ عبر نافذة الـTerminal من خلال الأمر التالي :

cd /var/www/html

قم بعرض الملفات الموجودة على هذا الملف بإستخدام الامر التالي:

ls

سيظهر لك ملف واحد يسمى “index.html”  هذا الملف يتوافق مع صفحة “It works!”. يمكنك حذفه ليتم إنشاء الصفحة الخاصة بهاذا المشروع. قم بحذف الملف بإستخدام الأمر التالي :

sudo rm index.html

و إنشاء ملف أخر يسمى “index.php”  :

sudo nano index.php

ثم قم بكتابة النص التالي داخل الملف:

<?php
phpinfo();
?>

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

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

إنشاء واجهة التحكم :

تتألف واجهة التحكم من فيديو الكاميرا التي تم تفعيله بالخطوة السابقة، واربع مفاتيح تحكم للسيطرة على محرك السيارة.

web-controlled-robot

سيتم إنشاء واجهة الصفحة بإستخدام لغةHTML، و لتفاعلات الخادم يتم إنشاء صفحة PHP، و JAVAScript لإدارة التفاعل مع المستخدم و الرسوم المتحركة للصفحة. ويمكنك استخدام CSS لتخطيط و تنسيق الصفحة مثل الخلفية أو مفاتيح التحكم .

web-controlled-robot

اولا نحن بحاجة لملف “camera.php” لإنشاء الواجهة ولتفاعل الخادم . هذه الصفحة هي الصفحة الرئيسية التي تحتوي على مفاتيح التحكم بالمحركات، كما تحتوي على بث الفيديو المباشر.

ملف Camera.php :

يتم استخدام لغة الـ HTML لتصميم واجهة المستخدم :

 أولا : يتم إدراج فيديو البث عن طريق الأمر التالي، كما يتم تحديد الـ src  URL (عنوان الويب ) الخاص بالبث المباشر

<img height="480" width = "640" src="http://YourIPAddress:8081" />

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

<button id="myP" onmousedown="mouseDown(02)" onmouseup="mouseUp(02)">Backward</button>
<button id="myP" onmousedown="mouseDown(03)" onmouseup="mouseUp(03)">Turn right</button>
<button id="myP" onmousedown="mouseDown(37)" onmouseup="mouseUp(37)">Forward</button>
<button id="myP" onmousedown="mouseDown(27)" onmouseup="mouseUp(27)">Turn left</button>

بعد ذلك، بإستخدام لغة الـ PHP نقوم بضبط إعدادات GPIO المستخدمة على الراسبيري باي كمخرج، وإعطاء الـ Pins المستخدمة القيم الإبتدائية :

system("gpio mode 0 out"); 
system("gpio write 0 0"); 
system("gpio mode 2 out"); 
system("gpio write 2 0"); 
system("gpio mode 3 out"); 
system("gpio write 3 0"); 
system("gpio mode 7 out"); 
system("gpio write 7 0");

لجعل هذه المفاتيح الأربعة تعمل مع المحركات (على سبيل المثال عند الضغط على مفتاح الرجوع للخلف يتم اشارات إلى المحركات من شأنها تحريك الروبوت للخلف)، لعمل ذلك يتم إنشاء ملفات أخرى :
– ملف camera.js يحتوي هذا الملف على الدالتين mouse_up و mouse_down للتحكم بمنافذ الراسبيري باي.
– ملف camera_rotate.php يتلقى المحتوى من camera.js، وبعد ذلك يتم تطبيق الإشارات على الـ GPIO المستخدمة في المشروع عن طريق إرسال إشارات إلى المحركات للتحكم بها إما 0v أو 5v.

يمكنك تنزيل ملفات صفحة الويب لهذا المشروع من هنا.  يجب حفظ جميع الملفات في /var/www/html على الراسبيري باي.
الآن قم بالإنتقال إلى شبكة الإنترنت والدخول إلى YourRaspiIPAddress/camera.php ، ستتمكن من رؤية بث الكاميرا، وسيتحرك الروبوت عند الضغط على أحد المفاتيح.




لعبة Whac-A-Mole

سنقوم في هذا المشروع ببرمجة لعبة Whac-A-mole  المسلية من خلال استخدام عصا التحكم و RGB وحساب النقاط وعرضها على وحدة عرض 7-segment

makeblock-whac-a-mole

الأدوات المطلوبة

makeblock-whac-a-mole

Inventor Kit

القطع المستخدمة

 

سنستخدم في هذا المشروع القطع التالية:

makeblock-whac-a-mole

 

طريقة التوصيل

 

makeblock-whac-a-mole

 

المنفذ القطعة الالكترونية
منفذ3 RGB LED
منفذ4 7-segment
منفذ6 عصا التحكم joystick

 

الفكرة البرمجية

 

makeblock-whac-a-mole

تحتوي وحدة  RGBعلى   4  LED سنقوم ببرمجتها لتتم إضاءتها عشوائيا وبشكل سريع ، ونلاحق هذه الإضاءة عبر عصا التحكم، عند توافق توجيه العصا باتجاه LED المضاءة يتحول لونها من الأزرق إلى الأحمر وتسجيل نقطة تظهر على وحدة عرض 7-segment

makeblock-whac-a-mole

تتحرك عصا التحكم في اتجاهات مختلفة ، نحتاج لاختبارها وتحديد القيمة التي تعطيها في كل اتجاه .

نقوم بتوصيل عصا التحكم باللوحة Orion  في المنفذ 6
واستخدام الكود التالي لعرض القراءة على الشاشة

makeblock-whac-a-mole

قم بتحريك عصا التحكم في اتجاه Y  أعلى وأسفل وفي اتجاه X يمينا ويسارًا وتسجيل القيمة التي تعطيها في كل اتجاه لنستخدم هذه القيم في برمجة اللعبة

makeblock-whac-a-mole

 

برمجة المشروع

سنحتاج بداية لانشاء 4 متغيرات

المتغير الوظيفة
LED يشير إلى رقم LED في وحدة RGB
 Score لتسجيل النقاط عند التصويب
X  لتخزين قيمة حركة عصا التحكم في اتجاه X
Y لتخزين قيمة حركة عصا التحكم في اتجاه y

 

makeblock-whac-a-mole

 

نبدأ الكود بتعيين قيمة RGB LED وحدة 7-segment  على قيمة 0
وتعيين العداد على 0

makeblock-whac-a-mole

داخل حلقة Forever
نقوم بتعيين المتغير LED بحيث تتغير القيمة بصورة عشوائية من 0 – 4 وفق عدد LED أو من 0-8 لتقليل سرعة التغير في الإضاءة
ثم نضع أمر إضاءة LED بحيث تضاء حسب الرقم العشوائي كل مرة

makeblock-whac-a-mole

نقوم بتعيين المتغيرين X و Y على حركة عصا التحكم Joystick

makeblock-whac-a-mole

نستخدم جملتين  شرطيتين  if ..then
بحيث إذا كانت قيمة LED تساوي 1 (أي LED1 مضاءة)
وتم تصويب عصا التحكم في اتجاه LED (نضع قيمةY وفق القيمة التي حصلنا عليها عند اختبار عصا التحكم)

makeblock-whac-a-mole

نضيف الأمر بحيث تتغير الإضاءة من أزرق إلى أحمر

makeblock-whac-a-mole

وتسجيل نقطة في المتغير Score

makeblock-whac-a-mole

وعرض عدد النقاط على وحدة 7-segment

makeblock-whac-a-mole

 

makeblock-whac-a-mole

يتم كتابة الأكواد للاتجاهات و LED الأخرى بنفس الطريقة مع وضع القيم المناسبة

قم بالإطلاع على الكود كاملا :

makeblock-whac-a-mole

وللمزيد من المعلومات حول الكود يمكنك مراجعة  درس جولة حول الأوامر البرمجية.

 

 




الروبوت متتبع الضوء

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

في هذا المشروع سنستخدم روبوت Ranger  الذي يحتوي على مستشعرين للضوء لبرمجة روبوت يتتبع مصدر الضوء .

light-follower-robot

 

الأدوات المطلوبة

light-follower-robot

mBot Ranger Kit

 

فكرة المشروع

تحتوي اللوحة الرئيسية Auriga على مستشعرين للضوء
ومستشعر الضوء عبارة عن قطعة الكترونية تصنع من مادة شبه موصلة للكهرباء عندما يتعرض المستشعر للضوء فإن قدرته على توصيل الكهرباء تصبح أعلى فيعطى إشارة كهربائية أكبر

light-follower-robot

في هذا المشروع سنقوم بكتابة برنامج يقوم بمقارنة كمية الضوء الساقطة على المستشعرين
إذا كان المستشعر الأول (الأيمن) يتعرض للضوء أكثر من المستشعر الثاني (الأيسر) فإن الروبوت ينعطف باتجاه شدة الإضاءة الأعلى (اليمين  .في هذه الحالة) وإذا تعرض المستشعرين لنفس الكمية من الضوء يتحرك الروبوت للأمام

اختبار المستشعر

قد تختلف دقة المستشعرات الالكترونية بنسب بسيطة تعود إلى عوامل في التصنيع
سنقوم بعمل اختبار لمستشعري الضوء الموجودين في لوحة Auriga لمعرفة الفرق في دقة القياس بين المستشعرين

أولا قم بإنشاء متغيرين Light1  و Light2 مثلا

light-follower-robot

قم بتعيين المتغير الأول لقراءة المستشعر الأول on board 1
والمتغير الثاني لقراءة المستشعر الثاني on board 2

light-follower-robot

نلاحظ قيم القراءات على الشاشة
قم بتسليط ضوء على المستشعرين أو حجبهما عن الضوء بيدك لملاحظة الفرق

light-follower-robot

من خلال الملاحظة يمكن أن نجد نسبة الاختلاف بين قراءة المستشعرين في هذا الاختبار وجدنا أنها يمكن أن تصل إلى 5 أرقام عند تعرضهما لنفس شدة الإضاءة (قد تختلف من لوحة إلى لوحة أخرى).
سنستفيد من هذه القيمة عند كتابة الكود في الخطوة التالية.

برمجة الروبوت

 

سنقوم في البداية بإنشاء متغيرين Light 1  وتعيينه لقراءة المستشعر الأيسر (كما هو مكتوب على اللوحة الرئيسية)
ومتغير Light2 وتعيينه لقراءة المستشعر الأيمن  في اللوحة

 

light-follower-robot

 

داخل حلقة Forever
سنستخدم ثلاث جمل شرطية if لتمثل لنا ثلاث حالات مختلفة
الأولى إذا تعرض المستشعرين لنفس شدة الضوء والحالتين الأخرى إذا كانت شدة الضوء على أحدهما أكبر من الآخر

الشرط الذي يمثل حالة أن تكون قراءة المستشعر الأول = الثاني

light-follower-robot

لكن بما أننا وجدنا اختلافا في قراءة المستشعرين تصل إلى 5 أرقام عن اختبارهما في الخطوة السابقة سنعيد كتابة الشرط كالتالي

 light-follower-robot

وهذا يعني أنه إذا كان الفرق بين قيمة المستشعر الأول والثاني أقل من 6 فسيتم اعتبار أنهما متساويان ويتحرك الروبوت للأمام
أضفنا abs القيمة المطلقة لتعطي ناتج الطرح قيمة موجبة دائمًا سواء كانت قيمة Light1 أكبر من Light2 أو العكس.

light-follower-robot

 

إذا لم يتحقق الشرط الأول أي إذا كان الفرق بين القراءتين 6 أو أكبر يتم تنفيذ الأوامر بعد else
حيث سنضيف الشروط المتعلقة بالحالتين الأخرى

الحالة الثانية
إذا كانت قراءة المستشعر الأيسر Light1 أكبر من قراءة المستشعر الأيمن Light2
ينعطف الروبوت باتجاه اليسار أي باتجاه شدة الإضاءة الأعلى

light-follower-robot

الحالة الثالثة
إذا كانت قراءة المستشعر الأيسر Light2 أقل من قيمة المستشعر الأيمن Light1
ينعطف الروبوت لليمين أي باتجاه شدة الإضاءة الأعلى.

الكود البرمجي

 

light-follower-robot

لمزيد من المعلومات حول الأوامر البرمجية الأخرى قم بالرجوع لدرس جولة حولة الأوامر البرمجية

 




روبوت الانقاذ

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

rescue-robot

 

الأدوات المطلوبة:

 

rescue-robot

Ultimate 2.0 Kit

مستشعر التسارع Accelerometer

 

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

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

rescue-robot

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

البرمجة باستخدام التطبيق

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

برمجة حركة الروبوت

للتحكم في حركة الروبوت سنقوم ببرمجته بحيث يتحرك في نفس الاتجاه الذي يميل فيه الهاتف المحمول
من خلال واجهة التطبيق سنقوم باختيار الروبوت Ultimate  واختيار إضافة مشروع جديد New Project

rescue-robot

 

سنقوم بإضافة مفتاح Switch ونسميه Tilt

rescue-robot

 

rescue-robot

تحت أمر تشغيل المفتاح سنضيف كود تحكم الحركة بإضافة أوامر شرطية
بحيث إذا تم توجيه الهاتف للأمام يتحرك الروبوت للأمام

rescue-robot

وكذلك بالنسبة للخلف واليمين واليسار

rescue-robot
rescue-robot
rescue-robot

تحت أمر إغلاق المفتاح نضع أمر توقف الحركة

rescue-robot

يتم وضع الأوامر البرمجية داخل أمر Repeat Forever

 

الكود البرمجي للحركة

rescue-robot

 

 


برمجة ذراع الروبوت

ينقسم التحكم بذراع الروبوت إلى قسمين : حركة الذراع للأعلى والأسفل وحركة المقبض للإمساك بالأشياء وإفلاتها
سنقوم بإضافة 4 أزرار تحكم
لتحرك الذراع للأعلى سوف نسمي الزر الأول Up بالنقر عليه واختيار علامة تعديل الاسم
عند  ضغط الزر سنضيف الأمر البرمجي المتعلق بتحريك محرك التشفير encoder motor  المسؤول عن تحريك الذراع واختيار رقم المنفذ الذي تم توصيله به
وعند ترك الزر نضع السرعة صفر للتوقف

rescue-robot

لتحريك الذراع للأسفل سوف نسمي الزر الآخر Down
ونضيف نفس الكود البرمجي لمحرك التشفير لكن بوضع قيمة السرعة سالبة ( – ) لعكس اتجاه الحركة

rescue-robot

 

برمجة القابض Gripper

لتحريك القابض للإمساك بالأشياء، سوف نسمي الزر الثالث Grip
عند ضغط الزر سنضيف الأمر المتعلق بحركة محرك DC المسؤول عن حركة القابض
وتحديد منفذ التوصيل

rescue-robot

الزر الرابع سوف نسميه Un-Grip،  لتحريك القابض لإفلات الأشياء
سنضيف نفس الكود البرمجي لكن بوضع السرعة بعلامة سالبة ( – ) لعكس اتجاه حركة المحرك وبالتالي عكس حركة القابض

rescue-robot

 

الواجهة النهائية للتطبيق

rescue-robot

لمزيد من المعلومات عن الأوامر البرمجية الأخرى يمكنك الرجوع لدرس جولة حول الأوامر البرمجية

نقوم بعد ذلك بحفظ المشروع Save وتحديث البرامج الثابتة من واجهة التطبيق Firmware  لتتمكن من تجربة المشروع.

بث  الفيديو على الحاسوب

عند إرسال الروبوت في مهام مختلفة قد نحتاج لمتابعة المحيط الذي يتحرك فيه الروبوت
ستقوم في هذه الخطوة بالاستفادة من كاميراة الهاتف الذكي لبث الفيديو على الحاسوب
باستخدام القطع الملحقة بروبوت Ultimate  يمكن بناء مسند لهاتف محمول بالمقياس المناسب لحجم الهاتف

rescue-robot

قم بتنزيل تطبيق Droidcam   من Google Play  على هاتف محمول أندرويد

سيظهر عند فتح التطبيق عنوان IP الخاص بهاتفك
ورقم المنفذ Port وعنوان المتصفح

rescue-robot

 

قم بفتح الكاميرا من خلال التطبيق

rescue-robot

على جهاز الحاسوب قم بفتح المتصفح وإدخال عنوان المتصفح Browser IP Cam Access بهذا الشكل

http://192.168.11.118 :4747/

يمكنك الآن متابعة البث لمباشر من كاميرا الهاتف المحمول على صفحة الويب

rescue-robot



مشروع محاكاة إشارة المرور

سنقوم في هذا المشروع بدمج عدة عناصر إلكترونية لمحاكاة إشارة المرور مثل إضاءة RGB ومحرك سيرفو ووحدة عرض 7-segment

 

makeblock-traffic-light

 

الأدوات المطلوبة

 

makeblock-traffic-light

حقيبة المخترع (Inventor Kit)

تركيب الدائرة

 

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

 

makeblock-traffic-light

نلاحظ أن منافذ محرك السيرفو تختلف عن منافذ لوحة (Orion (RJ25 لذلك نستخدم محول RJ25 الذي يقوم بتحويل المنافذ القياسية Rj25 إلى 6 دبابيس لتتوافق مع العناصر الالكترونية الأخرى مثل محرك السيرفو في هذا المشروع.

طريقة التوصيل

 

makeblock-traffic-light

 

المنفذ القطعة الالكترونية
منفذ 4 وحدة عرض 7-segment
منفذ 8 RGB LED
منفذ 6 محول RJ25

 

ويتم توصيل محرك السيرفو بمحول RJ25

 

برمجة المشروع

 

سنقوم ببرمجة المشروع بحيث تكون الإضاءة حمراء لمدة 10 ثوان ويكون ذراع محرك السيرفو على زاوية 180 درجة
ليمنع السيارات من العبور
يبدأ العد التنازلي يظهر على وحدة عرض 7-segment من 10 إلى 0
ثم تتحول الإضاءة إلى الأخضر ويتحرك ذراع محرك السيرفو إلى 90 درجة ليسمح للسيارات بالعبور
في البداية سننشيء متغير second  ليمثل عدد الثواني في العداد

makeblock-traffic-light

قم بتعيين قيمة المتغير second على عدد الثواني التي سيبدأ بها العد التنازلي
10هنا اخترنا أن يبدأ العداد من

makeblock-traffic-light

لنجعل العدد يتناقص سنستخدم الأمر التالي

makeblock-traffic-light

وليكون مقدار التناقص كل ثانية سنستخدم الأمر wait

makeblock-traffic-light

خلال العد التنازلي نريد أن يظهر العداد على وحدة 7-segment
وكذلك تكون الإضاءة حمراء

makeblock-traffic-light

وأن يكون الحاجز مغلقا لمنع مرور السيارات أي يكون ذراع محرك السيرفو على زاوية 180 درجة

makeblock-traffic-light

سنضع هذه الأوامر داخل حلقة Repeat until

makeblock-traffic-light

ستتكرر الأوامر داخل الحلقة إلى أن يصل العداد إلى الصفر أي يتحقق الشرط الذي تم وضعه في الأمر البرمجي Repeat until
عند وصول العداد إلى الصفر سنعيد تعيينه ليبدأ العد من 10 أي عند فتح الإشارة والحاجز
سنستخدم الأمر if then
ونضع الشرط إذا كانت الثواني = 0

makeblock-traffic-light

 

 وعند تحقق هذا الشرط نريد أن  تكون الإضاءة خضراء (green=60)
ويتم فتح المزلاق أيتحرك ذراع السيرفو إلى 90 درجة
كذلك نضيف الأمر الذي يظهر العد التنازلي في وحدة عرض 7-segment

makeblock-traffic-light

بعد مرور هذه العشر ثوان سنستخدم أمر تعيين العداد مرة أخرى ليستمر في تكرار فتح إشارة المرور وغلقها

makeblock-traffic-light

الكود البرمجي

 

makeblock-traffic-light

 

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