جدول المحتويات:

روبوت اردوينو السومو: 5 خطوات
روبوت اردوينو السومو: 5 خطوات

فيديو: روبوت اردوينو السومو: 5 خطوات

فيديو: روبوت اردوينو السومو: 5 خطوات
فيديو: مقدمة سلسلة - تعلم الاردوينو والروبوتات ببساطة 2024, يوليو
Anonim
اردوينو السومو روبوت
اردوينو السومو روبوت

قبل ان نبدأ

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

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

جاء اسم "سومو" من رياضة يابانية قديمة ، وهي عبارة عن منافسين يتقاتلان في حلقة ، كل منهما يحاول إخراج الخصم الآخر منها ، وهذا ما يجب أن يفعله الروبوتات أيضًا في مسابقات روبوتات السومو ، حيث يتم وضع الروبوتات في الحلبة ويحاول كل منهما الآخر طرد خصمه.

الفكرة:

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

لذلك دعونا نلقي نظرة على قوانين منافسة روبوت السومو:

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

1. الأبعاد: أقصى عرض 20 سم ، أقصى طول 20 سم ، الارتفاع غير محدد.

2. الشكل: يمكن تغيير شكل الروبوت بعد بدء السباق ، ولكن بدون الأجزاء غير القابلة للفصل للحفاظ على كونها كائن مركزي واحد.

3. الوزن: لا يتعدى 3 كجم.

4. يجب أن يكون الروبوت ذاتي التحكم.

الخطوة 1: المكونات

Image
Image
يستخدم لكل مكون
يستخدم لكل مكون

1 اردوينو Ano3

2 محرك DC

1 L298N Dual H Bridge for Arduino

1 جهاز استشعار بالموجات فوق الصوتية

2 IR TCRT5000

1 بطارية 9 فولت

بطارية AA عدد 4 * 1.5 فولت + بيت البطارية

4 عجلات روبوت

أسلاك العبور

الخطوة 2: يستخدم لكل مكون

يستخدم لكل مكون
يستخدم لكل مكون
يستخدم لكل مكون
يستخدم لكل مكون

الآن لدينا المكونات المطلوبة ، لذا دعنا نذهب في التفاصيل لمعرفة ما يتم استخدامه من أجل..

1- اردوينو Ano3

إنها لوحة رئيسية تتحكم في جميع الأجزاء وتربطها معًا

2- محرك DC

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

4- جسر L298N Dual H للاردوينو

وهي عبارة عن لوحة صغيرة توفر جهدًا ثابتًا للمحركات ، بالإضافة إلى دعم لوحة Arduino بتحكم جيد في الحركة والجهد.

5- جهاز استشعار بالموجات فوق الصوتية

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

6- IR TCRT5000

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

7- بطارية 9 فولت

يدعم اللوحة الرئيسية (اردوينو) بالجهد المهم.

8- بطارية AA عدد 4 * 1.5 فولت + بيت البطارية

يدعم المحركين (DC Motor) بجهد كهربائي مهم ويجب فصلهما لإعطاء القوة الكاملة للعجلات.

9- أسلاك العبور

الخطوة الثالثة: التصميم

تصميم
تصميم
تصميم
تصميم

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

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

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

قم بتنزيل التصميم 1 من هنا

قم بتنزيل التصميم 2 من هنا

يمكنك أيضًا تنزيل نموذج ورقي

افتح ملف PDF باستخدام Adobe Acrobat Reader (برنامج موصى به)

الخطوة 4: لعب الإستراتيجية

Image
Image
إستراتيجية اللعب
إستراتيجية اللعب

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

إستراتيجية اللعب (1):

· سنجعل الروبوت يدور حول نفسه باستمرار.

· يقوم الروبوت دائمًا بقياس المسافة بشكل مستمر أثناء الدوران.

· إذا كانت مسافة الخصم التي تم قياسها أقل من (10 سم على سبيل المثال) ، فهذا يعني أن الخصم أمام الروبوت لنا مباشرة.

· يجب أن يتوقف الروبوت عن الدوران ثم يبدأ الهجوم (تحرك للأمام بقوة كاملة بسرعة).

· يجب أن يأخذ الروبوت القراءات من مستشعرات الأشعة تحت الحمراء دائمًا للتأكد من أننا لم نعبر حدود الحلقة.

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

إستراتيجية اللعب (2):

· في البداية ، يقوم الروبوت بقياس المسافة أمامه.

· يتحرك الروبوت للخلف بنفس المسافة التي تم قياسها.

· يتوقف الروبوت عن الدوران ثم يبدأ الهجوم فجأة (تحرك للأمام بقوة كاملة).

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

· يجب أن يأخذ الروبوت القراءات من مستشعرات الأشعة تحت الحمراء دائمًا للتأكد من أننا لم نعبر حدود الحلقة.

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

الخطوة الخامسة: البرمجة

برمجة
برمجة

يرجى التحقق من الدائرة والكود

* تحديث 2019-03-26

قم بتنزيل مكتبة Ultrasonic من هنا أولاً وقم بتثبيتها:

github.com/ErickSimoes/Ultrasonic/blob/mas…

/*

بواسطة احمد عزوز

www.instructables.com/id/How-to-Make-Ardu…

قم بتنزيل lib من هنا أولاً

github.com/ErickSimoes/Ultrasonic/blob/ma …

*/

# تضمين الموجات فوق الصوتية

فوق صوتي بالموجات فوق الصوتية (4 ، 3) ؛

const int IN1 = 5 ؛

const int IN2 = 6 ؛ const int IN3 = 9 ؛ const int IN4 = 10 ؛ #define IR_sensor_front A0 // مستشعر أمامي #define IR_sensor_back A1 // rear senson int مسافة ؛

الإعداد باطل()

{Serial.begin (9600) ، تأخير (5000) ؛ // حسب سومو توافق الأدوار} حلقة باطلة () {int IR_front = analogRead (IR_sensor_front) ؛ int IR_back = analogRead (IR_sensor_back) ؛ المسافة = ultrasonic.read () ؛ تدوير (200) ، // start rotete if (مسافة <20) {Stop () ؛ بينما (مسافة 650 || IR_back> 650) {استراحة ؛} تأخير (10) ؛ } if (IR_front <650) // <650 تعني الخط الأبيض {Stop () ؛ تأخير (50) ؛ باكوارد (255) ؛ تأخير (500) ؛ } إذا (IR_back <650) // {Stop () ؛ تأخير (50) ؛ إلى الأمام (255) ؛ تأخير (500) ؛ } / * ----------- التصحيح ---------------- Serial.print (ultrasonic. Ranging (CM)) ؛ Serial.println ("سم") ؛ Serial.println ("واجهة IR:") ؛ Serial.println (IR_front) ؛ Serial.println ("IR back:") ؛ Serial.println (IR_back) ؛ * /

} //--------------------------------------------

void FORWARD (int Speed) {// عندما نريد السماح للمحرك بالمضي قدمًا ، // فقط أبطل هذا الجزء في قسم الحلقة. analogWrite (IN1 ، السرعة) ؛ analogWrite (IN2، 0) ؛ analogWrite (IN3، 0) ؛ analogWrite (IN4 ، السرعة) ؛ } // -------------------------------------------- باطل خلفي (int Speed) {// عندما نريد السماح للمحرك بالمضي قدمًا ، // فقط أبطل هذا الجزء في قسم الحلقة. analogWrite (IN1، 0) ؛ analogWrite (IN2 ، السرعة) ؛ analogWrite (IN3 ، السرعة) ؛ analogWrite (IN4، 0) ؛ } // -------------------------------------------- باطل تدوير (int Speed) {// عندما نريد السماح للمحرك بالتدوير ، // فقط أبطل هذا الجزء في قسم الحلقة. analogWrite (IN1 ، السرعة) ؛ analogWrite (IN2، 0) ؛ analogWrite (IN3 ، السرعة) ؛ analogWrite (IN4، 0) ؛ } // -------------------------------------------- توقف باطل () {// عندما نريد إيقاف المحرك ، // فقط أبطل هذا الجزء في قسم الحلقة. analogWrite (IN1، 0) ؛ analogWrite (IN2، 0) ؛ analogWrite (IN3، 0) ؛ analogWrite (IN4، 0) ؛ }

موصى به: