كيف تصنع ذراعًا آليًا يعمل بتقنية Arduino و Bluetooth؟

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



الذراع الروبوتية

في هذا المشروع ، سنصنع ذراعًا آلية يتحكم فيها متحكم Arduino. سيتم التحكم فيه عبر البلوتوث بمساعدة تطبيق للتحكم عن بعد يعمل بنظام أندرويد.



كيف تتحكم في ذراع آلية باستخدام Arduino؟

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



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

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



  • HC-05 جهاز إرسال واستقبال تسلسلي لاسلكي يعمل بالبلوتوث
  • محول 6 فولت
  • أسلاك العبور
  • اللوح

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

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

اردوينو نانو هي لوحة متحكم دقيقة تنفذ عمليات مختلفة في دوائر مختلفة. يتطلب أ كود C يخبر المجلس بالمهام التي يجب أداؤها وكيف. يحتوي على 13 منفذ إدخال / إخراج رقمي مما يعني أنه يمكننا تشغيل 13 جهازًا مختلفًا. Arduino Nano له نفس وظائف Arduino Uno ولكن بحجم صغير جدًا. المتحكم الدقيق الموجود على لوحة Arduino Nano هو ATmega328p. إذا كنت تريد التحكم في أكثر من 13 جهازًا ، فاستخدم Arduino Mega.

اردوينو نانو



HC-05 جهاز إرسال واستقبال تسلسلي لاسلكي يعمل بالبلوتوث : نحتاج إلى اتصال لاسلكي في هذا المشروع ، لذلك سنستخدم تقنية Bluetooth ومن أجل تلك الوحدة التي سيتم استخدامها هي HC-05. تحتوي هذه الوحدة على العديد من معدلات البث بالباود القابلة للبرمجة ولكن معدل الباود الافتراضي هو 9600 بت في الثانية. يمكن تهيئته إما رئيسية أو تابعة ، في حين أن الوحدة النمطية الأخرى HC-06 يمكن أن تعمل فقط في وضع الرقيق. تحتوي هذه الوحدة على أربعة دبابيس. واحد لـ VCC (5V) والثلاثة المتبقية لـ GND و TX و RX. كلمة المرور الافتراضية لهذه الوحدة هي 1234 أو 0000 . إذا أردنا الاتصال بين متحكمين أو التواصل مع أي جهاز مزود بوظيفة Bluetooth مثل الهاتف أو الكمبيوتر المحمول HC-05 يساعدنا على القيام بذلك. تتوفر بالفعل العديد من تطبيقات Android مما يجعل هذه العملية أسهل كثيرًا.

وحدة بلوتوث HC-05

نموذجي الذراع الروبوتية يتكون من عدة قطاعات وعادة ما يكون بها 6 مفاصل. يحتوي على 4 محركات متدرجة على الأقل يتم التحكم فيها بواسطة الكمبيوتر. تختلف المحركات السائر عن محركات التيار المستمر الأخرى. يتحركون بدقة بزيادات دقيقة. تُستخدم هذه الأذرع الروبوتية لتنفيذ عمليات مختلفة. يمكننا تشغيلها يدويًا من خلال جهاز تحكم عن بعد أو يمكننا برمجتها للعمل بشكل مستقل.

الذراع الروبوتية.

الخطوة 3: تجميع المكونات

الآن كما نعلم عن عمل جميع المكونات الرئيسية المستخدمة. دعونا نبدأ في تجميعها وإنشاء دائرة لبناء ذراع آلية يتم التحكم فيها عن بعد.

  1. قم بتثبيت لوحة Arduino Nano على لوح التجارب. سيتم تشغيل Arduino من خلال السلك الموجب والسالب للمحول.
  2. ضع وحدة Bluetooth على اللوح أيضًا. قم بتشغيل وحدة Bluetooth من خلال Arduino. قم بتوصيل دبوس Tx الخاص بوحدة Bluetooth بدبوس Rx بلوحة Arduino Nan وقم بتوصيل دبوس Rx الخاص بوحدة Bluetooth إلى Tx pin الخاص بلوحة Arduino Nano.
  3. كما نعلم أن هناك 4 محركات متدرجة. كل واحد له اسم تقني. يطلق عليهم مرفق ، كتف ، يتمركز، و القابض . سيكون كل من Vcc والأرضي لجميع المحركات مشتركين ومتصلين بالإيجاب والسالب لمحول 6V. سيتم توصيل دبوس الإشارة لجميع المحركات الأربعة بـ pin5 و pin6 و pin9 و pin11 من Arduino Nano.
  4. تأكد من أن التوصيلات التي أجريتها متوافقة مع مخطط الدائرة التالي.

    مخطط الرسم البياني

الخطوة 4: بدء استخدام Arduino

إذا لم تكن معتادًا على Arduino IDE ، فلا تقلق لأن الإجراء خطوة بخطوة لإعداد واستخدام Arduino IDE مع لوحة متحكم موضحة أدناه.

  1. قم بتنزيل أحدث إصدار من Arduino IDE من اردوينو.
  2. قم بتوصيل لوحة Arduino Nano بجهاز الكمبيوتر المحمول وافتح لوحة التحكم. ثم انقر فوق الأجهزة والصوت . الآن ، انقر فوق الأجهزة والطابعات. هنا ، ابحث عن المنفذ الذي تتصل به لوحة وحدة التحكم الدقيقة الخاصة بك. في حالتي هو كذلك COM14 لكنه يختلف على أجهزة الكمبيوتر المختلفة.

    البحث عن ميناء

  3. انقر على قائمة الأدوات واضبط اللوحة على اردوينو نانو من القائمة المنسدلة.

    لوحة الإعداد

  4. في قائمة الأداة نفسها ، اضبط المنفذ على رقم المنفذ الذي لاحظته من قبل في ملف الأجهزة والطابعات .

    منفذ الإعداد

  5. في قائمة الأداة نفسها ، اضبط المعالج على ATmega328P (محمل الإقلاع القديم).

    المعالج

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

    تضمين المكتبة

  7. قم بتنزيل الكود المرفق أدناه والصقه في Arduino IDE. اضغط على رفع زر لنسخ الرمز على لوحة وحدة التحكم الدقيقة الخاصة بك.

    رفع

لتنزيل الكود ، انقر هنا.

الخطوة الخامسة: تنزيل التطبيق

نظرًا لأننا قمنا الآن بتجميع الدائرة بأكملها وتحميل الكود في لوحة وحدة التحكم الدقيقة. يتيح تنزيل تطبيق جوال يعمل كجهاز تحكم عن بعد للذراع الآلي. يتوفر تطبيق مجاني على متجر google play. اسم التطبيق هو تحكم روبوت الذراع الصغير . لإجراء اتصال Bluetooth ، قم بتشغيل Bluetooth على هاتفك المحمول. انتقل إلى الإعدادات وقم بإقران هاتفك المحمول بوحدة HC-05. بعد القيام بذلك ، اضغط على زر Bluetooth في التطبيق. إذا تحول إلى اللون الأخضر ، فهذا يعني أن التطبيق متصل الآن وجاهز لتشغيل الذراع الآلية. هناك منزلقات لضبط تشغيل الذراع الآلية حسب الرغبة.

تطبيق

الخطوة السادسة: فهم المدونة

تم التعليق على الكود جيدًا ويسهل فهمه. بور لا يزال موضحًا بإيجاز أدناه.

1. في البداية ، يتم تضمين مكتبة لكتابة رمز لتشغيل محركات مؤازرة. مكتبة أخرى رياضيات تم تضمينه لأداء عمليات حسابية مختلفة في الكود. تم أيضًا تهيئة أربعة كائنات لاستخدامها في المحركات المؤازرة الأربعة.

# تتضمن // مكتبة اردوينو # تتضمن // مكتبة c القياسية # تعريف PI 3.141 Servo baseServo ؛ مؤازرة الكتف الكوع المؤازر القابض المؤازر أمر int

2. ثم يتم الإعلان عن الهيكل لأخذ القيم لمحركات مؤازرة القاعدة والكتف والكوع.

Struct JointAngle {// Decairing a Structure int base؛ الكتف int الكوع int } ؛

3. بعد ذلك ، يتم تهيئة بعض المتغيرات لتخزين الإمساك والتأخير والموضع المطلوبين لمحرك المؤازرة. تم ضبط السرعة على 15 ، ويتم صنع كائن لأخذ قيمة الزاوية في الهيكل.

المطلوب قبضة ؛ القابض int مطلوب تأخير int servoSpeed ​​= 15 ؛ int جاهز = 0 ؛ هيكل المفصل الزاوية المطلوبة // الزوايا المرغوبة من الماكينات

أربعة. الإعداد باطل() هي وظيفة تُستخدم لتعيين دبابيس Arduino على أنها INPUT أو OUTPUT. هنا في هذه الوظيفة ، أعلنا أن دبوس المحركات سيتم توصيله بأي دبابيس في Arduino. من المؤكد أيضًا أن Arduino لا يقرأ الإدخال التسلسلي لفترة طويلة. تم تعيين الوضع الأولي ومعدل الباود أيضًا في هذه الوظيفة. معدل الباود هو السرعة التي ستتواصل بها لوحة المتحكم الدقيق مع الماكينات ووحدة البلوتوث المرفقة.

إعداد باطل () {Serial.begin (9600) ؛ baseServo.attach (9) ؛ // يعلق المؤازرة الأساسية على الدبوس 9 بكتف كائن المؤازرة (10) ؛ // يعلق مؤازرة الكتف على الدبوس 9 بمرفق كائن المؤازرة (11) ؛ // يعلق مؤازرة الكوع على الطرف 9 بمقبض كائن المؤازرة (6) ؛ // يعلق مؤازرة القابض على الطرف 9 إلى كائن المؤازرة Serial.setTimeout (50) ؛ // يضمن أن اردوينو لا يقرأ المسلسل لفترة طويلة جدا Serial.println ('بدأ') ؛ baseServo.write (90) ؛ // المواضع الداخلية للكتف المؤازرة (150) ؛ الكوع سيرفو الكتابة (110) ؛ جاهز = 0 ؛ }

5. servoParallelControl () هي وظيفة تُستخدم لاكتشاف الموضع الحالي للذراع الآلي وتحريكه وفقًا للأمر المعطى من خلال تطبيق الهاتف. إذا كان الوضع الحالي أقل من الوضع الفعلي ، فإن الذراع سوف تتحرك لأعلى والعكس صحيح. ستعيد هذه الوظيفة قيمة الموضع الحالي وسرعة المؤازرة.

int servoParallelControl (int thePos، Servo theServo، int theSpeed) {int startPos = theServo.read ()؛ // قراءة نقاط البيع الحالية int newPos = startPos ؛ // int theSpeed ​​= السرعة ؛ // حدد مكان نقطة البيع فيما يتعلق بالأمر // إذا كان الموضع الحالي أقل من التحرك الفعلي لأعلى إذا (startPos (thePos + 5)) {newPos = newPos - 1؛ theServo.write (newPos) ؛ تأخير (السرعة) ؛ العودة 0 ؛ } else {return 1؛ }}

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

حلقة باطلة () {if (Serial.available ()) {ready = 1 ؛ WantAngle.base = Serial.parseInt () ، wantAngle.shoulder = Serial.parseInt () ، WantAngle.elbow = Serial.parseInt () ، WantGrip = Serial.parseInt () ، wantDelay = Serial.parseInt () ، إذا كان (Serial.read () == ' n') {// إذا كان البايت الأخير هو 'd' ، فتوقف عن القراءة وتنفيذ الأمر 'd' يشير إلى 'تم' Serial.flush () ؛ // امسح جميع الأوامر الأخرى المكدسة في المخزن المؤقت // أرسل إكمال الأمر Serial.print ('d') ؛ }} int status1 = 0 ؛ int status2 = 0 ؛ int status3 = 0 ؛ int status4 = 0 ؛ تم إنجازه = 0 ؛ while (done == 0 && ready == 1) {// حرك المؤازرة إلى الموضع المطلوب status1 = servoParallelControl (requiredAngle.base، baseServo، wishDelay) ؛ status2 = servoParallelControl (المطلوب ، والكتف ، والكتف ، والمرغوب ، والتأخير) ؛ status3 = مؤازر status4 = servoParallelControl (wishGrip، gripperServo، WantDelay)؛ if (status1 == 1 & status2 == 1 & status3 == 1 & status4 == 1) {done = 1}} // end of while}

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