📋 ملخص سريع
قم ببناء ذراع آلية كاملة ذات 6 DOF مع التحكم في الهاتف الذكي عبر Bluetooth. يقوم هذا الدليل بترقية الذراع الآلية الأساسية المطبوعة ثلاثية الأبعاد باستخدام وحدة Bluetooth HC-05 وتطبيق MIT App Inventor المخصص، مما يتيح التحكم اللاسلكي في جميع مفاصل المؤازرة الستة. يغطي الأسلاك مع برنامج تشغيل مؤازر PCA9685، وبرمجة Arduino Mega، وإعداد التطبيق.
في هذا البرنامج التعليمي العملي، سوف تتعلم، خطوة بخطوة، كيفية بناء الذراع الروبوتية ذات 6 أبعاد مختلفة مع تحكم كامل بالهاتف الذكي بتقنية Bluetooth من الصفر. يأخذ هذا المشروع ذراع روبوتية يتم التحكم فيها بمقياس الجهد من تصميمنا السابق وترقيته باستخدام اتصال Bluetooth اللاسلكي. بدلاً من تشغيل المقابض المادية، يمكنك الآن التحكم في جميع المفاصل الستة مباشرة من تطبيق Android مخصص على هاتفك.
يجمع النظام بين الأجزاء الميكانيكية المطبوعة ثلاثية الأبعاد، وArduino Uno، ومحرك مؤازر PCA9685، ووحدة Bluetooth HC-05، وتطبيق MIT App Inventor المخصص. والنتيجة هي لاسلكية ذراع روبوتية يتم التحكم فيها بالبلوتوث الذي يحفظ ويعيد تشغيل وتكرار تسلسلات الحركة. تحصل على ذراع روبوتية قابلة للبرمجة يمكنك تشغيلها من أريكتك.
إذا كنت تحب بناء الأشياء وترغب في تعلم بعض الروبوتات على طول الطريق، فإن هذا الدليل يغطي العملية بأكملها: تصميم CAD، والطباعة ثلاثية الأبعاد، والتجميع، والأسلاك، ورمز Arduino، وإعداد Bluetooth، وتطوير التطبيقات. جميع التعليمات البرمجية المصدر وملفات STL والتطبيق متاحة للتنزيل على موقعنا مستودع GitHub. يمكنك أيضًا الحصول على ملفات STL من Cults3D أو من لدينا متجر أومارترونيكس.
ما الذي ستتعلمه في مشروع الذراع الروبوتية ذات 6 أبعاد
بحلول نهاية هذا البرنامج التعليمي، سيكون لديك خبرة عملية في العديد من مجالات الميكاترونكس والروبوتات. سوف تتعلم كيفية تصميم أجزاء الروبوت البارامترية في Autodesk Inventor ومكونات الطباعة ثلاثية الأبعاد بتفاوتات مشددة. ستقوم أيضًا بتوصيل Arduino إلى برنامج التشغيل المؤازر PCA9685 ووحدة Bluetooth HC-05، وكتابة التعليمات البرمجية لأوامر Bluetooth في الوقت الفعلي مع استيفاء مؤازر سلس، وإنشاء تطبيق Android عملي في MIT App Inventor، ومعايرة الذراع للحركة المتكررة.
ما هو الذراع الروبوتية 6-DOF؟
يعنيDOF درجات الحرية. فهو يحدد عدد المحاور المستقلة التي يمكن للروبوت أن يتحرك بها. في تصميمنا، ذراع روبوتية 6-DOF يحتوي على ستة مفاصل مدفوعة مؤازرة: خمسة محاور دورانية تتحكم في وضعية الذراع، بالإضافة إلى مفصل قابض واحد يفتح ويغلق المستجيب النهائي. المحاور الخمسة (دوران القاعدة، الكتف، الكوع، ميل المعصم، ولف المعصم) تعطي الذراع 5 موضع DOF، بينما يقوم المفصل السادس بتشغيل القابض للإمساك بالأشياء. تعمل ثلاث معززات عزم دوران عالية MG996R على تشغيل القاعدة والكتف والمرفق، بينما تتعامل ثلاث معززات صغيرة SG90 مع ميل المعصم ولف المعصم والمقبض. ونتيجة لذلك، يوفر هذا المزيج عزمًا كافيًا لمفاصل الرفع الثقيل ودقة كافية لحركات المؤثر النهائي الأخف.
للحصول على مقدمة أعمق لكيفية عمل المحركات المؤازرة وكيفية التحكم بها باستخدام Arduino، راجع موقعنا دليل التحكم في المحرك المؤازر.
الذراع الروبوتية ذات 6 أبعاد: نظرة عامة على المشروع وبنية النظام
في المجمل، ينقسم المشروع إلى خمس مراحل: التصميم الميكانيكي، والطباعة ثلاثية الأبعاد، والتجميع، وتوصيل الإلكترونيات باستخدام البلوتوث، وبرنامج لكل من Arduino وتطبيق الهاتف. في وسط النظام يوجد Arduino Uno. إنه يتحدث إلى برنامج التشغيل المؤازر PCA9685 عبر I2C لتوليد ست إشارات PWM مستقلة. وفي الوقت نفسه، يتلقى أوامر الحركة لاسلكيًا من هاتفك عبر وحدة البلوتوث HC-05.
على جانب الهاتف، يوفر لك MIT App Inventor أيضًا بيئة السحب والإفلات لإنشاء الواجهة. يرسل التطبيق أوامر نصية عبر البلوتوث: قيم شريط التمرير للتحكم المشترك في الوقت الفعلي، بالإضافة إلى أوامر لحفظ الأوضاع وتشغيل التسلسلات وإيقاف التشغيل وإعادة ضبط الذاكرة وتبديل وضع الحلقة. عندما يصل الأمر، يقوم Arduino بتوزيعه، وتعيينه إلى قناة المؤازرة الصحيحة، ثم تشغيل حركة محرفية سلسة حتى لا يهتز الذراع.
فاتورة المواد الكاملة للذراع الروبوتية ذات 6 أبعاد ذاتية الحركة
قبل البدء في البناء، قم بجمع كافة المكونات في الجدول أدناه. وبهذه الطريقة، يمكنك تجنب التوقفات المؤقتة المحبطة في منتصف البناء. بالإضافة إلى الأجزاء من البناء السابق الذي يتحكم فيه مقياس الجهد، تضيف ترقية Bluetooth هذه وحدة HC-05 وتزيل مقاييس الجهد الستة لأن التحكم يحدث الآن لاسلكيًا من التطبيق.
الذراع الروبوتية 6-DOF DIY: قائمة الأجزاء والمكونات
| البند | الكمية | الجزء | الوصف |
|---|---|---|---|
| 1 | 1 | القاعدة_1 | منصة القاعدة |
| 2 | 1 | الرابط_الأساسي_الأعلى1 | قسم القاعدة العلوي |
| 3 | 1 | ذراع_لينك_1 | رابط الذراع الأول |
| 4 | 1 | ذراع_رابط_2 | رابط الذراع الثاني |
| 5 | 1 | ذراع_رابط_3 | رابط الذراع الثالث |
| 6 | 1 | قاعدة_القابض | قاعدة القابض |
| 7 | 1 | القابض_2 | إصبع القابض |
| 8 | 1 | جير_رايت | ترس القابض (يمين) |
| 9 | 1 | ترس_يسار | ترس القابض (يسار) |
| 10 | 1 | القابض | تجميع القابض |
| 11 | 4 | الرابط | أجزاء وصلة القابض |
| 12 | 2 | فاصل | فواصل القابض |
| 13 | 3 | محرك مؤازر MG996R | مضاعفات عزم الدوران العالي (القاعدة، الكتف، الكوع) |
| 14 | 3 | محرك مؤازر صغير SG90 | أجهزة صغيرة (معصم، قابض) |
| 15 | 14 | معيار ANSI B18.6.4 رقم 2-32 3/8″ | برغي رأس الجمالون، رقم 2-32 |
| 16 | 2 | معيار ANSI B18.6.4 رقم 2-32 1/4 ″ | برغي رأس الجمالون، رقم 2-32 |
| 17 | 3 | معيار DIN 7985 M1.6×2-Z | برغي متقاطع M1.6×2 |
| 18 | 7 | ISO 4762 M3x16 (AS 1420) ISO 4762 M3x16 (AS 1420) | برغي مقبس سداسي M3x16 |
| 19 | 12 | ISO 4032 M3 (AS 1112) | صامولة سداسية M3 |
| 20 | 2 | معيار ANSI B18.6.4 رقم 2-32 1/2 ″ | برغي رأس الجمالون، رقم 2-32 |
| 21 | 3 | بوق MG955 | بوق MG996R |
| 22 | 3 | معيار DIN 7985 M3x6-Z | برغي متقاطع M3x6 |
| 23 | 3 | بوق مؤازر SG90 | بوق لـ SG90 |
| 24 | 2 | معيار ANSI B18.6.4 رقم 2-32 3/8″ | برغي رأس الجمالون، رقم 2-32 |
| 25 | 12 | معيار ANSI B18.6.4 رقم 3-28 1/2″ | برغي رأس الجمالون، رقم 3-28 |
| 26 | 1 | المحمل الكروي 6806ZZZ (30 × 42 × 7) | محمل الأخدود العميق (30x42x7) |
| 27 | 1 | أردوينو أونو أو ميجا | وحدة التحكم الرئيسية |
| 28 | 1 | لوحة تشغيل المؤازر PCA9685 | مشغل PWM ذو 16 قناة (I2C) |
| 29 | 6 | وحدة البلوتوث HC-05 | وحدة بلوتوث للتحكم اللاسلكي |
| 30 | 1 | اللوح | قاعدة الأسلاك للاتصالات |
| 31 | 1 | مصدر طاقة 5 فولت 10 أمبير | مصدر طاقة سيرفو |
| 32 | 1 | أسلاك التوصيل (ذكر-ذكر) | اتصالات اردوينو إلى PCA9685 |
| 33 | 1 | أسلاك التوصيل (ذكر-أنثى) | توصيلات الأسلاك العامة |
| 34 | 1 | لوح خشبي | منصة تركيب الذراع |
التصميم الميكانيكي للذراع الروبوتية ذات 6 دووف في Autodesk Inventor
أولاً، تقوم بتصميم كل مكون في Autodesk Inventor. يتيح لك برنامج CAD البارامتري هذا تعيين الأبعاد الدقيقة وإضافة شرائح للقوة وكذلك التحقق من ملاءمة الجزء قبل طباعة أي شيء. إذا كنت جديدًا في مجال Inventor أو الطباعة ثلاثية الأبعاد، فاطلع على موقعنا مقدمة في الطباعة ثلاثية الأبعاد والتصميم ثلاثي الأبعاد باستخدام المخترع قبل البدء.
هناك نوعان من المؤازرة يقودان خيارات التصميم هنا. يبلغ حجم أجهزة SG90 الصغيرة 23 × 12 × 29 مم، مما يجعلها مناسبة تمامًا لمفاصل المعصم والمقابض الأخف وزنًا. على النقيض من ذلك، توفر الماكينات MG996R ما يصل إلى 11 كجم سم من عزم الدوران مع التروس المعدنية. ولهذا السبب، فهي الاختيار الصحيح للقاعدة والكتف والمرفق، حيث أن هذه المفاصل تحمل وزن الذراع بالكامل. ونتيجة لذلك، فإن كل جيب تثبيت، ونقطة ربط بوق، ومقعد محمل يتطابق مع أبعاد ورقة البيانات الدقيقة لهذين النوعين من المؤازرة.
يظهر الرسم الفني أدناه أبعاد الأجزاء وطرق العرض المقطعية وكيفية تناسب الأجزاء معًا. استخدمه كمرجع عند التحقق من دقة الطباعة.

الطباعة ثلاثية الأبعاد لمكونات الذراع الروبوتية ذات 6 دووف DIY
بعد تصدير ملفات STL من Inventor، حان الوقت لبدء الطباعة. تعمل خيوط PLA بشكل جيد لأنها تطبع بسهولة وتحمل أبعادًا ضيقة. بالنسبة للأجزاء الهيكلية مثل وصلات القاعدة والذراع، استخدم طبقة بارتفاع 0.2 مم وحشو بنسبة 40 بالمائة على الأقل. ومع ذلك، بالنسبة للأجزاء الرقيقة مثل التروس ذات المقبض، فإن نسبة 20 بالمائة من الحشو كافية وتوفر المواد.
انتبه جيدًا لجيوب التثبيت المؤازرة. يجب أن تكون دقيقة حتى يتم ضغط المحركات بشكل مريح دون تمايل. بعد الطباعة، قم بإجراء بعض التنظيف الخفيف: قم بإزالة الدعامات، وأسطح التزاوج الرملية بحبيبات رملية 220، واختبر كل جهاز مؤازر قبل الانتقال إلى التجميع. إذا كان الجيب ضيقًا جدًا، فإن التمرير السريع بسكين هواية أو مبرد إبرة يكون أسرع من إعادة الطباعة.


اختيار المحرك المؤازر: SG90 مقابل MG996R للذراع الروبوتية ذات 6 أبعاد ذاتية الصنع
اختيار المؤازرة المناسبة لكل أمر مشترك. تحمل المفاصل السفلية الثلاثة (القاعدة، الكتف، الكوع) الوزن الكامل لكل شيء فوقها، لذا فهي تحتاج إلى MG996R وعزم دورانها البالغ 11 كجم-سم. من ناحية أخرى، فإن المفاصل العلوية الثلاثة (ميل المعصم، ولف المعصم، والقابض) تحمل حمولة قليلة جدًا. لذا فإن وزن SG90 خفيف الوزن الذي يبلغ 1.8 كجم سم أكثر من كافي، ويحافظ على ضوء نهاية الذراع.
يقبل كلا النوعين المؤازرين PWM القياسي 50 هرتز، لذا يتم توصيلهما مباشرة بموصلات PCA9685. ومع ذلك، فإن الاختلاف الرئيسي بين الأسلاك هو التيار: يمكن لـ MG996R واحد سحب ما يصل إلى 900 مللي أمبير تحت الحمل، بينما يسحب SG90 حوالي 200 مللي أمبير. مع تشغيل ستة أجهزة مؤازرة في وقت واحد، يمكن أن يتجاوز التيار الأقصى 3 أ. ولهذا السبب، تحتاج إلى مصدر طاقة خارجي 5 فولت 10 أمبير. لا تحاول تشغيل ستة أجهزة من طرف Arduino ذو 5 فولت.
تجميع ذراعك الروبوتية ذات 6 دووف خطوة بخطوة
بمجرد طباعة كل جزء واختباره، يمكنك البدء في التجميع. اعمل من القاعدة إلى الأعلى، واختبر دائمًا كل مفصل للتأكد من دورانه بسلاسة قبل المضي قدمًا. خذ وقتك مع البراغي لأن الدوران الزائد في الشرائط البلاستيكية المطبوعة ثلاثية الأبعاد يترابط بسرعة.

الخطوة 1: تجميع قاعدة الذراع الروبوتية ذات 6 أبعاد ذاتية الحركة
القاعدة هي أساس الذراع بالكامل، لذا فالدقة هنا مهمة. ابدأ بتثبيت أول جهاز مؤازر MG996R في قاعدة التثبيت باستخدام البراغي المضمنة. يمنحك هذا المؤازرة 180 درجة كاملة من الدوران الأساسي. ثم اضغط على محمل الكرة ذو الأخدود العميق (6806ZZ، 30 × 42 × 7 مم) في مقعده على القاعدة. بعد ذلك، يقع المحمل بين لوحة القاعدة الثابتة والمنصة العلوية الدوارة. ونتيجة لذلك، فإنه يقلل الاحتكاك ويطيل عمر المفصل. بعد ذلك، قم بتوصيل البوق المؤازر بالمنصة العلوية الدوارة باستخدام براغي M2x12. ينقل هذا البوق كل قوة الدوران من المؤازرة الأساسية إلى بقية الذراع.



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

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

الخطوة 4: توصيل وصلات ذراع الروبوت معاً
انضم الآن إلى مجموعات الارتباط والمؤازرة معًا. ضع البوق على إحدى الوصلات بحيث يتم إدخاله في الرابط التالي، ثم ثبته بالمسامير. شد بشكل متساوٍ بحيث تتحرك المفاصل بسلاسة عبر النطاق الكامل.

الخطوة 5: تجميع القابض
قم بتوصيل المجموعة الفرعية للمقبض بالوصلة النهائية للذراع. يستخدم القابض أجهزة SG90 صغيرة مع زوج من التروس المطبوعة ثلاثية الأبعاد لفتح وإغلاق الأصابع. استخدم مسامير M3x20 لمفاصل القابض. قبل المضي قدمًا، تأكد أيضًا من أن الأصابع تفتح وتغلق بحرية.

الخطوة 6: تركيب الذراع الروبوتية ذات 6 دووف على قاعدة خشبية
أخيرًا، قم بتركيب الذراع المجمع بالكامل على لوح خشبي مسطح باستخدام براغي M3x12 ذاتية اللولبة. تمنع القاعدة الصلبة الذراع من الانقلاب وتمنحك أيضًا مكانًا لتركيب لوحة التجارب والأردوينو ومصدر الطاقة.

الأسلاك الإلكترونية للذراع الروبوتية ذات 6 دووف ذات 6 أبعاد مع بلوتوث
الآن بعد أن تم البناء الميكانيكي، فقد حان الوقت لتوصيل الأجهزة الإلكترونية. يضيف هذا الإصدار وحدة HC-05 ويزيل أيضًا مقاييس الجهد الستة من التصميم الأصلي. يتكون نظام التحكم من أربعة أجزاء: Arduino Uno، وPCA9685 لتوليد PWM، وHC-05 للاتصالات اللاسلكية، ومصدر طاقة 5 فولت 10 أمبير للماكينات.
جدول توصيلات الأسلاك: اردوينو إلى PCA9685
| دبوس الأردوينو | دبوس PCA9685 | وظيفة |
|---|---|---|
| 5 V | VCC | الطاقة المنطقية لشريحة PCA9685 |
| GND | GND | أرضية مشتركة |
| A4 (SDA) | SDA | خط بيانات I2C |
| A5 (SCL) | SCL | خط الساعة I2C |
جدول توصيلات الأسلاك: اردوينو إلى وحدة البلوتوث HC-05
| دبوس الأردوينو | دبوس HC-05 | وظيفة |
|---|---|---|
| الدبوس 10 (برنامجSerial RX) | TX | يستقبل البيانات من البلوتوث |
| الدبوس 11 (TXSerial SoftwareSerial) | RX (عبر مقسم الجهد) | يرسل البيانات إلى البلوتوث |
| 5 V | VCC | يعمل على تشغيل وحدة HC-05 |
| GND | GND | أرضية مشتركة |
توصيلات طاقة المؤازر وتوصيلات PCA9685
بعد ذلك، قم بتوصيل قابس ثلاثي الأطراف لكل جهاز مؤازر بالقنوات من 0 إلى 5 على لوحة PCA9685. تأكد من أن السلك الأرضي (البني أو الأسود) يتماشى مع الصف السفلي من الرؤوس. بعد ذلك، قم بتوصيل مصدر الطاقة 5 فولت 10 أمبير بأطراف التوصيل اللولبية V+ وGND الخاصة بـ PCA9685. بهذه الطريقة، تظل الأحمال المؤازرة ذات التيار العالي منفصلة عن Arduino، مما يمنع انقطاع التيار الكهربائي والسلوك غير المنتظم.

فهم برنامج تشغيل المؤازر PCA9685 للذراع الروبوتية ذات 6 أبعاد ذاتي
لماذا لا تقوم فقط بقيادة الماكينات مباشرة من Arduino؟ يمكنك قيادة واحدة أو اثنتين بهذه الطريقة، لكن الأمر يقتصر على ستة. علاوة على ذلك، يحتوي Arduino Uno على ستة أطراف PWM فقط، ويمكن أن تتعارض مكتبة Servo المدمجة مع ميزات المؤقت مثل النغمة () أو بعض بروتوكولات الاتصال. يحل PCA9685 هذه المشكلة عن طريق نقل كل جيل PWM إلى شريحة I2C مخصصة. يستخدم سلكين فقط (SDA وSCL) بغض النظر عن عدد الماكينات التي تتحكم فيها. إنه يتعامل مع 16 قناة لكل لوحة، ويمكنك ربط ما يصل إلى 62 لوحة بسلسلة تعاقبية مقابل 992 خدمة إذا كنت بحاجة إلى هذا العدد الكبير.
مرجع Pinout Pinout PCA9685
أولاً، GND هي الأرضية المشتركة مع Arduino. OE (تمكين الإخراج) نشط منخفض. اتركه غير متصل للحفاظ على جميع المخرجات قيد التشغيل بشكل افتراضي. إذن، SCL وSDA هما ساعة I2C وخطوط البيانات. بالإضافة إلى ذلك، يوفر VCC طاقة منطقية تبلغ 3.3 إلى 5 فولت ويعمل فقط على تشغيل شريحة PCA9685، وليس الماكينات. أخيرًا، V+ هو خط الطاقة المؤازر. يقبل ما يصل إلى 6 فولت من مصدر الإمداد الخارجي الخاص بك من خلال الطرف اللولبي. تحتوي كل قناة على رأس ثلاثي الأطراف يستخدم موصل مؤازر قياسي.

اتصال البلوتوث مع الوحدة النمطية HC-05
HC-05 عبارة عن وحدة بلوتوث تقوم بإنشاء رابط تسلسلي لاسلكي بين هاتف Android الخاص بك وArduino. نظرًا لأنه يعمل بمنطق 3.3 فولت، فإن خط TX من Arduino (5 فولت) إلى طرف HC-05 RX يحتاج إلى مقسم جهد بمقاومتين (1 كيلو أوم و 2 كيلو أوم). ومع ذلك، فإن خط HC-05 TX إلى Arduino RX لا يحتاج إلى مقسم لأن 3.3 فولت مرتفع بالفعل بما يكفي ليقرأه Arduino على أنه منطق عالي.
في الكود، نستخدم SoftwareSerial على الأطراف 10 و11 بدلاً من الأطراف التسلسلية للأجهزة (0 و1). يؤدي هذا إلى الحفاظ على تسلسل الأجهزة مجانًا لتصحيح الأخطاء باستخدام الشاشة التسلسلية أثناء تشغيل Bluetooth على قناتها الخاصة. الافتراضي HC-05 هو 9600 باود، والذي يطابق إعداد SoftwareSerial في الكود الخاص بنا. للحصول على دليل كامل حول إعداد HC-05 وأوامر AT، راجع موقعنا البرنامج التعليمي لوحدة البلوتوث HC-05.
برمجة Arduino للذراع الروبوتية ذات 6 دووف مع البلوتوث
رسم اردوينو هو العقل وراء هذا الذراع الروبوتية ذات 6 أبعاد مختلفة. فهو يتعامل مع اتصال Bluetooth، وتحليل الأوامر، والتحكم المؤازر من خلال الاستيفاء السلس، وكذلك حفظ الوضعيات وتشغيل التسلسل. وفيما يلي كود المصدر الكامل. بعد الكود ستجد شرح قسم بقسم.
كود مصدر Arduino الكامل لذراع البلوتوث الآلي
قم بتحميل هذا المخطط إلى Arduino Uno أو Mega. قبل الترجمة، تأكد من تثبيت مكتبة برنامج تشغيل Adafruit PWM Servo من خلال Arduino Library Manager. يأتي Wire وSoftwareSerial بالفعل مع IDE. الكود وجميع ملفات المشروع متاحة أيضًا على مستودع GitHub.
رسم أردوينو تخطيطي كامل
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
#include <SoftwareSerial.h>
// Constants and definitions
const int numServos = 6;
const int maxConfigurations = 10;
const int stepDelay = 10;
const int stepSize = 1;
// Servo channels on the PCA9685
const int servoChannels[numServos] = {0, 4, 8, 9, 12, 13};
// Storage structures
int savedConfigurations[maxConfigurations][numServos];
int currentServoPositions[numServos] = {375, 375, 375, 375, 375, 375};
int configCount = 0;
bool isPlaying = false;
bool loopPlayback = false;
bool stopPlaying = false;
int currentPoseIndex = 0;
bool initialized = false;
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
SoftwareSerial BTSerial(10, 11);
// Setup initialization
void setup() {
Serial.begin(9600);
BTSerial.begin(9600);
pwm.begin();
pwm.setPWMFreq(60);
for (int i = 0; i < numServos; i++) {
pwm.setPWM(servoChannels[i], 0, currentServoPositions[i]);
}
initialized = true;
Serial.println("Bluetooth Servo Controller started. Waiting for commands...");
}
// Main loop
void loop() {
if (BTSerial.available()) {
String input = BTSerial.readStringUntil('n');
input.trim();
Serial.println("Received data: " + input);
if (input.equalsIgnoreCase("S")) {
saveCurrentPose();
} else if (input.equalsIgnoreCase("P")) {
startPlayingPoses();
} else if (input.equalsIgnoreCase("R")) {
resetPoses();
} else if (input.equalsIgnoreCase("St")) {
stopPlayingPoses();
} else if (input.equalsIgnoreCase("LoopON")) {
loopPlayback = true;
Serial.println("Loop playback enabled.");
} else if (input.equalsIgnoreCase("LoopOFF")) {
loopPlayback = false;
Serial.println("Loop playback disabled.");
} else if (input.indexOf(',') > 0) {
processLastValue(input);
} else {
Serial.println("Unknown command: " + input);
}
}
if (isPlaying && !stopPlaying) {
if (loopPlayback) {
playPosesInLoop();
} else {
playNextPose();
}
}
}
وظائف التحكم المؤازر ومعالجة الأوامر
// Process servo commands
void processLastValue(String command) {
int lastCommaIndex = command.lastIndexOf(',');
if (lastCommaIndex > 0 && lastCommaIndex < command.length() - 1) {
int servoIndex = command.substring(0, lastCommaIndex).toInt() - 1;
float lastValue = command.substring(lastCommaIndex + 1).toFloat();
int targetPos = (int)lastValue;
int targetPwmValue = map(targetPos, 0, 180, 150, 600);
moveToPositionSmoothly(servoIndex, targetPwmValue);
} else {
Serial.println("Invalid command for servo control: " + command);
}
}
// Smooth movement function
void moveToPositionSmoothly(int servoIndex, int targetPwmValue) {
int currentPwmValue = currentServoPositions[servoIndex];
if (targetPwmValue > currentPwmValue) {
for (int pos = currentPwmValue; pos <= targetPwmValue; pos += stepSize) {
pwm.setPWM(servoChannels[servoIndex], 0, pos);
delay(stepDelay);
}
} else {
for (int pos = currentPwmValue; pos >= targetPwmValue; pos -= stepSize) {
pwm.setPWM(servoChannels[servoIndex], 0, pos);
delay(stepDelay);
}
}
currentServoPositions[servoIndex] = targetPwmValue;
Serial.println("Servo " + String(servoIndex + 1) + " set to PWM value: " + String(targetPwmValue));
}
وظائف حفظ الوضعية والتشغيل وإعادة الضبط
// Save pose function
void saveCurrentPose() {
if (configCount < maxConfigurations) {
for (int i = 0; i < numServos; i++) {
savedConfigurations[configCount][i] = currentServoPositions[i];
Serial.print("Servo "); Serial.print(i + 1);
Serial.print(" saved at PWM value: ");
Serial.println(savedConfigurations[configCount][i]);
}
configCount++;
Serial.println("Pose saved. Total saved poses: " + String(configCount));
} else {
Serial.println("Memory full, cannot save more poses.");
}
}
// Start playback
void startPlayingPoses() {
if (configCount == 0) {
Serial.println("No poses saved, nothing to play.");
return;
}
Serial.println("Playback of saved poses started...");
isPlaying = true;
stopPlaying = false;
currentPoseIndex = 0;
}
// Play next pose
void playNextPose() {
if (currentPoseIndex < configCount) {
Serial.println("Playing pose " + String(currentPoseIndex + 1));
for (int i = 0; i < numServos; i++) {
moveToPositionSmoothly(i, savedConfigurations[currentPoseIndex][i]);
}
delay(1000);
currentPoseIndex++;
} else {
isPlaying = false;
Serial.println("Playback of poses finished.");
}
}
// Loop playback
void playPosesInLoop() {
for (int j = 0; j < configCount; j++) {
Serial.println("Playing pose " + String(j + 1));
for (int i = 0; i < numServos; i++) {
moveToPositionSmoothly(i, savedConfigurations[j][i]);
}
delay(1000);
if (stopPlaying) break;
}
}
// Stop playback
void stopPlayingPoses() {
stopPlaying = true;
isPlaying = false;
Serial.println("Playback of poses stopped.");
}
// Reset all poses
void resetPoses() {
configCount = 0;
isPlaying = false;
loopPlayback = false;
currentPoseIndex = 0;
Serial.println("All saved poses have been deleted.");
}
المكتبات المطلوبة وتعليمات التحميل
قبل التجميع، قم بتثبيت المكتبات التالية من خلال مدير مكتبة Arduino IDE: مكتبة برامج تشغيل المؤازرة PWM من Adafruit, الأسلاك (مضمنة افتراضيًا)، و برمجيات متسلسل (مضمن افتراضيًا). حدد لوحتك (Arduino Uno أو Mega)، واختر منفذ COM الصحيح، وانقر فوق تحميل.
كيف يعمل كود الأردوينو: تفصيل كل قسم على حدة
ينقسم الكود إلى أقسام محددة بوضوح. أولاً، يقوم قسم المكتبة بسحب Wire.h لـ I2C، وAdafruit_PWMServoDriver.h لـ PCA9685، وSoftwareSerial.h لـ Bluetooth على الأطراف 10 و11. بعد ذلك، تحدد الثوابت أشياء مثل عدد الماكينات (6)، والحد الأقصى للوضعيات القابلة للتخزين (10)، وتأخير الخطوة (15 مللي ثانية)، وحجم الخطوة (علامة PWM واحدة لكل خطوة).
بعد ذلك، تقوم وظيفة setup() بتشغيل كلا المنفذين التسلسليين عند 9600 باود، وتشغيل PCA9685 عند 60 هرتز، وتنقل جميع الماكينات إلى نقطة المنتصف (PWM 375) حتى لا يقفز أي شيء عند بدء التشغيل. وفي الوقت نفسه، تستمر الحلقة الرئيسية () في التحقق من بيانات البلوتوث الواردة وترسل كل أمر إلى المعالج الصحيح.
في المجمل، يتعرف محلل الأوامر على سبعة أوامر. يحفظ "S" أوضاع المؤازرة الحالية كوضع جديد، بينما يقوم "P" بتشغيل جميع الأوضاع المحفوظة بالترتيب. يقوم "R" بإعادة ضبط وحذف الأوضاع المحفوظة. يوقف "St" التشغيل، ويقوم "LoopON" و"LoopOFF" بتبديل التشغيل المتكرر. يتم التعامل مع أي أمر بفاصلة كموضع مؤازر بتنسيق "servoIndex,angle" حيث تتراوح الزاوية من 0 إلى 180.
الدالة moveToPositionSmoothly() هي ما يمنع الذراع من الاهتزاز. بدلاً من القفز مباشرة إلى قيمة PWM المستهدفة، فإنه ينتقل إلى هناك تدريجيًا، خطوة واحدة في كل مرة، مع خطوة تأخير بين كل خطوة. ونتيجة لذلك، تحصل على حركة سلسة للمفاصل بدلاً من الطقات المفاجئة التي قد تلحق الضرر بالتروس أو تقلب الذراع.
بناء تطبيق الهاتف المحمول مع مخترع تطبيقات معهد ماساتشوستس للتكنولوجيا للتحكم في الذراع الروبوتية بالبلوتوث
من ناحية التطبيق، يعد RobotArmControl تطبيق Android مدمجًا في MIT App Inventor. فهو يوفر واجهة لمس بديهية للتحكم في جميع المفاصل الستة للوحدة الذراع الروبوتية ذات 6 أبعاد مختلفة لاسلكيا عبر البلوتوث. بالإضافة إلى ذلك، يحتوي التطبيق على ستة أشرطة تمرير (واحدة لكل مؤازرة)، وأزرار لحفظ الوضعيات وتشغيلها وإيقافها وإعادة ضبطها، ومفتاح تبديل لتشغيل الحلقة.
الميزات الرئيسية لتطبيق الذراع الروبوتية ذات 6 دووف DIY
للتحكم في الوقت الفعلي، يستخدم التطبيق ستة أشرطة تمرير تم تعيينها للمفاصل من 0 إلى 5. عندما تقوم بتحريك شريط التمرير، فإنه يرسل أمرًا مثل "2,90" يخبر Arduino بتحريك المؤازرة 2 إلى 90 درجة. على سبيل المثال، يرسل زر "حفظ" الحرف "S" لتخزين موضع الذراع الحالي. وبالمثل، يرسل Play "P" لإعادة تشغيل جميع الأوضاع المحفوظة. بعد ذلك، يرسل Stop "St" لإيقاف التشغيل. أخيرًا، ترسل عملية إعادة الضبط "R" لمسح جميع الأوضاع المخزنة. يرسل مفتاح Loop "LoopON" أو "LoopOFF" للتشغيل المستمر.

كتل مخترع تطبيقات معهد ماساتشوستس للتكنولوجيا: شرح خطوة بخطوة
يستخدم منطق التطبيق مع الكتل المرئية في MIT App Inventor. أولاً، تقوم كتلة التهيئة العامة بإنشاء متغير يسمى ReceiveText (تم ضبطه على 0) الذي يقوم بتخزين البيانات الواردة من Arduino. بعد ذلك، تقوم كتلة ListPicker BeforePicking بملء قائمة أجهزة Bluetooth حتى تتمكن من اختيار HC-05. بمجرد تحديد جهاز، تفتح كتلة AfterPicking اتصال Bluetooth التسلسلي.
تقوم كتلة PositionChanged الخاصة بكل شريط تمرير بتنسيق فهرس المؤازرة والزاوية في سلسلة مثل "2،90" وإرسالها باستخدام BluetoothClient.SendText. بنفس الطريقة، ترسل أزرار الحفظ والتشغيل والإيقاف وإعادة الضبط أوامرها المكونة من حرف واحد. أخيرًا، تتحقق الكتلة LoopSwitch.Changed من حالة التبديل وترسل "LoopON" أو "LoopOFF" وفقًا لذلك.




معايرة واختبار ذراعك الروبوتية ذات 6 أبعاد ذاتية الصنع واختبارها
بمجرد تجميع الأجهزة، وتحميل التعليمات البرمجية، وتثبيت التطبيق، فإن الخطوة الأخيرة هي المعايرة. ابدأ بتثبيت APK RobotArmControl على جهاز Android الخاص بك. بعد ذلك، انتقل إلى إعدادات Bluetooth بهاتفك وقم بالاقتران مع HC-05 باستخدام رقم التعريف الشخصي الافتراضي 1234. ثم افتح التطبيق، وانقر فوق منتقي قائمة Bluetooth، واختر HC-05 من الأجهزة المقترنة.
بمجرد الاتصال، حرك كل شريط تمرير ببطء للتأكد من استجابة المفصل الأيمن. إذا تحرك المفصل بطريقة خاطئة، فقم إما بتبديل القيم الدنيا والقصوى لشريط التمرير في App Inventor، أو اقلب نطاق Map() في كود Arduino. بعد ذلك، يجب عليك ضبط نطاق PWM (من 150 إلى 600 في الكود) لكل جهاز. تحتاج بعض الماكينات إلى قيم دقيقة وأقصى مختلفة قليلاً لتجنب الطنين عند التوقفات النهائية. قم أيضًا باختبار الذراع تحت الحمل عن طريق التقاط الأشياء الصغيرة باستخدام المقبض. وهذا يؤكد أن كل مفصل لديه ما يكفي من عزم الدوران.
لاختبار نظام الوضعية، حرك الذراع إلى موضع ما ثم اضغط على حفظ. افعل ذلك لعدة مناصب. ثم اضغط على تشغيل لمشاهدة الذراع يعيد تشغيل التسلسل بأكمله. قم أيضًا بتشغيل وضع Loop وتأكد من أن الذراع يستمر في الدوران خلال جميع الأوضاع حتى تضغط على Stop.
التحسينات المستقبلية للذراع الروبوتية ذات 6 أبعاد ذاتية الحركة
من هنا، تعتبر هذه الذراع الآلية التي يتم التحكم فيها عن طريق البلوتوث نقطة انطلاق جيدة للترقيات. على سبيل المثال، يمكنك إضافة حركيات عكسية بحيث يتحرك الذراع إلى إحداثيات X-Y-Z بدلاً من زوايا المفصل الفردية. وبدلاً من ذلك، فإن إضافة الجيروسكوب أو مقياس التسارع سيتيح لك التحكم في الذراع من خلال إمالة الهاتف. أو يمكنك استبدال HC-05 بـ ESP32 للتحكم في Wi-Fi من خلال لوحة معلومات الويب أو تكامل التشغيل الآلي للمنزل.
من ناحية البرنامج، يمكنك أيضًا نقل تخزين الوضع إلى EEPROM بحيث تظل التسلسلات المحفوظة على قيد الحياة خلال دورة الطاقة. بالإضافة إلى ذلك، يمكنك إضافة سرعة متغيرة لكل مفصل، أو إنشاء وضع التعليم والتشغيل حيث تقوم بتحريك الذراع فعليًا ويسجل المواضع. إن القيام بذلك من شأنه أن يجعل المشروع أقرب إلى كيفية عمل الروبوتات الصناعية. للمزيد من أفكار المشاريع، قم بزيارة موقعنا مشروع ذراع الروبوت المتحرك (OmObiArm) التي تجمع بين هذا الذراع وقاعدة مركبة جوالة متحركة.
تنزيل ملفات مشروع الذراع الروبوتية ذات 6 دووف DIY
كما ذكرنا سابقًا، جميع ملفات المشروع موجودة في مستودع GitHub الخاص بنا. يتضمن التنزيل مخطط Arduino (.ino)، وجميع ملفات STL، ومخطط الأسلاك، وملف مشروع MIT App Inventor (.aia) بالإضافة إلى ملف APK المجمع. ملفات STL متاحة أيضًا على Cults3D وفي لدينا متجر أومارترونيكس.
قم بتنزيل كود Arduino البرمجي وملفات STL ومخطط الأسلاك وتطبيق الهاتف المحمول من GitHub
الأسئلة الشائعة (FAQ)
فيما يلي إجابات للأسئلة الأكثر شيوعًا حول إنشاء هذا الذراع الآلي DIY 6-DOF واستكشاف الأخطاء وإصلاحها مع التحكم عبر Bluetooth.
أسئلة شائعة حول الذراع الروبوتية DIY 6-DOF
6-DOF تعني ست درجات من الحرية: خمس مفاصل دورانية لتحديد المواقع بالإضافة إلى مفصل قابض واحد.
نعم. نعم الميجا يستخدم نفس الكود والفرق الوحيد هو أن أطراف I2C هي 20 (SDA) و21 (SCL) بدلاً من A4 وA5.
يعني الارتعاش عادةً أن قيمة PWM تصل إلى نقطة توقف المؤازرة. اضبط نطاق الخريطة () وتحقق من تيار مصدر الطاقة لديك.
يستخدم HC-05 تقنية Bluetooth الكلاسيكية، والتي لا يدعمها iOS. لاستخدام iPhone، استبدل HC-05 بوحدة HM-10 (BLE) وأعد إنشاء التطبيق على منصة BLE.
استخدم PLA بارتفاع طبقة 0.2 مم وحشو 40% للأجزاء الهيكلية. يمكن استخدام التروس القابض بنسبة 20%. قم بتسوية سريرك وأضف حافة للأجزاء ذات مناطق الاتصال الصغيرة.
يخزن الكود ما يصل إلى 10 أوضاع في ذاكرة الوصول العشوائي بشكل افتراضي. يمكنك زيادة الحد الأقصى للتكوينات، لكن Uno يحتوي فقط على 2 كيلو بايت من ذاكرة SRAM. للتخزين المستمر، احفظه في EEPROM.
يعمل HC-05 بمنطق 3.3 فولت. يرسل Arduino 5 فولت، مما قد يؤدي إلى تلف دبوس HC-05 RX. يقوم مقسم الجهد بمقاومات 1k و 2k بإسقاط الإشارة إلى حوالي 3.3 فولت.
نعم. نعم، يحتوي PCA9685 على 16 قناة، لذا يمكنك إضافة ما يصل إلى 10 أجهزة إضافية. ما عليك سوى تحديث numServos وservoChannels في الكود.
مع ملفات STL القياسية، يصل الذراع إلى حوالي 40 سم من القاعدة عند تمديده بالكامل. يمكنك زيادة مدى الوصول عن طريق إطالة الروابط في نموذج CAD.
تحقق من مؤشر LED HC-05 (وميض سريع = غير مقترن). تحقق من معدل الباود (9600) وأسلاك TX/RX. إذا لم يتمكن التطبيق من العثور على الوحدة، فأعد الإقران في إعدادات Bluetooth.
الذراع الروبوتية ذات 6 دووف DIY: الخاتمة والمشاريع التالية
تهانينا! لديك الآن وظيفية بكامل طاقتها الذراع الروبوتية ذات 6 أبعاد مختلفة مع التحكم اللاسلكي بالهاتف الذكي عبر البلوتوث. على طول الطريق، يتطرق هذا المشروع إلى المجالات الرئيسية للميكاترونكس: تصميم CAD في Inventor، والطباعة ثلاثية الأبعاد، وتصميم الدوائر باستخدام I2C وBluetooth التسلسلي، وبرمجة Arduino، وتطوير تطبيقات الهاتف المحمول مع MIT App Inventor.
والأفضل من ذلك كله هو أن نظام حفظ وتشغيل الوضعية يحول هذا الذراع إلى روبوت قابل للبرمجة يكرر تسلسل الحركة من تلقاء نفسه. على سبيل المثال، يمكنك استخدامه لمهام الانتقاء والمكان التلقائية، أو الفرز، أو حتى مهام الرسم البسيطة.
من أين تأخذها من هنا متروك لك. يمكنك إضافة رؤية حاسوبية باستخدام وحدة كاميرا، أو تنفيذ حركيات عكسية للتحكم الديكارتي، أو تركيب الذراع على مركبة متنقلة، أو توصيله بجهاز Raspberry Pi للتعلم الآلي. مهما كان الاتجاه الذي تسلكه، فإن هذه المنصة ذات المحاور الستة تمنحك أساسًا متينًا لاستكشاف أعمق في مجال الروبوتات والأتمتة.
إذا استمتعت بهذا الإصدار، فاطلع على دروسنا التعليمية الأخرى في مجال الروبوتات: الروبوت الذي يتبع الخطفإن وحدة تحكم بعصا تحكم بمحرك مؤازرو ذراع الروبوت المتنقل OmObiArm.
تنزيل ملفات الطباعة ثلاثية الأبعاد (STL)
جميع ملفات STL القابلة للطباعة ثلاثية الأبعاد لهذا المشروع متاحة للتنزيل. يمكنك الحصول عليها من متجرنا أو تصفحها على Cults3D:
- متجر OmArTronics: قم بتنزيل ملفات المشروع من OmArTronics - احصل على حزمة المشروع الكاملة بما في ذلك ملفات STL ومخططات الأسلاك وكود المصدر التي يتم تسليمها إلى بريدك الإلكتروني.
- الطوائف3D: عرض على Cults3D - تصفح وتنزيل ملفات النماذج ثلاثية الأبعاد على Cults3D.
اشتريت الموديل ولكن لا يحتوي على قيمة قياس المحمل&8217
شكرًا على تعليقك يا فرناندو! يرجى إضافة محمل كروي 6806ZZZ بأبعاد 30*42*7.
مرحباً بكم,
هل يمكن أن تخبرني أين هي قائمة الأجزاء، لأتمكن من شراء الأجزاء، لديّ قطع الغيار الخاصة بك&8217;s إلى الطوائف
شكراً لك
أنطونيو مايور
أعيش بالقرب من برشلونة
مرحبًا، مشروع مثير للاهتمام أيضًا مع مراهق. فيما يتعلق بالمؤازرة MG996R، فهي موجودة في تكوينين: إما 180 درجة أو 360 درجة. بماذا توصي؟
مع أطيب التحيات
إيمانويل
مرحبًا إيمانويل، شكرًا لك على كلماتك اللطيفة! أوصي باستخدام الإصدار 180 درجة من المؤازرة MG996R لهذا المشروع. وذلك لأن المؤازر 180 درجة يسمح بالتحكم الدقيق في الزاوية، وهو أمر ضروري لتحديد المواقع والحركة في الأذرع الروبوتية أو التطبيقات المماثلة. تم تصميم المؤازر بزاوية 360 درجة للدوران المستمر وهو مناسب بشكل أفضل لمهام مثل قيادة العجلات، حيث لا يلزم التحكم في الزاوية. مع أطيب التحيات، OmArTronics.
سيدي لقد قمت بنفس الاتصال لكنه لا يعمل، من فضلك قل لي كم
التيار يعطي وحدة التحكم المؤازر pca9685
تسحب وحدة التحكم المؤازرة PCA9685 نفسها تيارًا ضئيلًا جدًا، عادةً أقل من 10 مللي أمبير. ومع ذلك، يعتمد إجمالي التيار المطلوب على الماكينات التي تستخدمها. على سبيل المثال، يمكن لكل مؤازر MG996R، على سبيل المثال، سحب ما يصل إلى 2 أمبير (بحد أقصى 2,5 أمبير) تحت الحمل. تأكد من أن مصدر الطاقة الخاص بك يمكن أن يوفر تيارًا كافيًا لجميع الماكينات المتصلة، مع الأخذ في الاعتبار الحد الأقصى للسحب المشترك.
من فضلك يا سيدي رد عليه بسرعة في أقرب وقت ممكن
مرحبًا، أنا أحاول تشغيله ولكنني أستمر في الحصول على الخطأ 507. ولا يمكنني توصيل التطبيق والروبوت . كيف يمكنني تشغيله؟
مرحبًا، كيف يمكنني العثور على هذه البراغي والمسامير في مكان واحد؟ هل هناك موقع للتسوق عبر الإنترنت حيث تتوفر جميعها على الإنترنت؟
بالنسبة للمحركات الستة التي تعمل، ما مقدار الطاقة اللازمة لتشغيل المحركات الستة وما مقدار الطاقة التي تحتاجها من الجهد والأمبير وما المحول الذي استخدمته لهذا الغرض
أنا أستخدم ستة أجهزة مؤازرة تعمل بالطاقة من خلال مشغل PCA9685 مع مصدر طاقة خارجي 6 فولت.
عادةً ما يسحب كل جهاز مؤازر 300-600 مللي أمبير حسب الحمل، لذا بالنسبة لستة أجهزة مؤازر يجب أن تخطط لتيار إجمالي يتراوح بين 3-5 أمبير.
أنا أستخدم مصدر طاقة قابل للضبط HM305P من Hanmatek HM305P، ولكن أي محول 5 فولت - 6 فولت مصنّف بقدرة 5 أمبير على الأقل سيعمل بشكل جيد.
يتم تشغيل Arduino نفسه بشكل منفصل عبر USB.
مرحبًا ، أتمنى أن تكون بخير ، كان لدي سؤال حول البراغي ، فما هو نوع البراغي اللازمة لبات التجميع ، وأنا أمزح حتى أحصل على برغي للمضاعفات معهم ، لذا هل يمكن أن تخبرني من فضلك بالبراغي المطلوبة وكمية أجزاء التجميع.