الآلة عديمة الفائدة!

من ويكي أضِف
اذهب إلى التنقل اذهب إلى البحث


عدّل باستمارة وصفة

ReadyFAD.jpg

في هذه الوصفة، سوف نصنع آلة عديمة الفائدة، عند تشغيلها، تقوم تلقائياً بإطفاء نفسها!


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


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

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

أدناه تجدون رابط لفيديو يعرض الآلة بعد أن انتهيت من بنائها، يليه الخطوات التفصلية وشفرة المصدر لبنائها

فلنبدأ البناء...

الفيديو: https://www.youtube.com/watch?v=7AZvjG5SpYc




الخطوة 1: التصميم العام ولائحة المواد

إذاً، سوف نصنع آلة، عند تشغيلها، تقوم تلقائياً بإطفاء نفسها!

هي عبارة عن صندوق، لا يظهر منه سوى مفتاح كهربائي، عند دفعه يخرج إصبع من الصندوق ويدفع المفتاح إلى الجهة المعاكسة وبالتالي يوقف عمل الآلة.


تقنيًا، داخل الصندوق هناك لوحة أردوينو Arduino التي تراقب بشكل مستمر قطبية المفتاح، وعند تغيرها من الفلطية 0 إلى 5 (عند دفع المفتاح)، تبعث لوحة أردوينو بإشارة إلى محركي سيرفو بحيث يقوم الأول بفتح باب في الصندوق، ويحرك الثاني إصبع خشبي بإتجاه المفتاح إلى أن يتسبب بدفع الأخير إلى الجهة المعاكسة، وبالتالي إطفاء الآلة. الجدير بالذكر، أن الآلة في الواقع لم تنطفئ، إذ أن لوحة أردوينو لاتزال تراقب قطبية المفتاح تحسبًا لأي تغير في قطبيته، ولكن الظاهر للمستخدم أن الآلة قد انطفأت.


تصميم الدائرة الالكترونية:


ShematicFAD.jpg


(هذه الخريطة الالكترونية رسمت بتطبيق فريتزينغ [fritzing.org/home/ fritzing] المفتوح المصدر)


بعض الملاحظات على التصميم:

نلحظ أن مفتاح الزناد الكهربائي موصول بال-Arduino في مدخل/دبوس رقم 2, ولكن يمر قبل ذلك بعدد من العناصر الالكترونية (مكثف، مقاوم، ودائرة إلكترونية متكاملة)، هدف العناصر أن تعمل مع بعضها البعض لتنقية الاشارة القادمة من المفتاح، بشكل يمنع صدور أمر تشغيل بالخطأ لل-Arduino (نتيجة تشويش إلكتروني)فمن دون هذه العناصر ستعمل الآلة بمفردها بشكل عشوائي بغير أوامر المستخدم. الجدير بالذكر أنه من الممكن برمجة ال-Arduino بشكل ينقي الاشارة قبل التصرف على اساسها، مما يعفينا من إضافة هذه العناصر ولكنه من ناحية أخرى يعقد قليلاً كود البرنامج. (للمزيد عن هذا الموضوع إتبع هذا الرابط)


أيضاً نرى أن محرك السيرفو خاصة الباب وذلك خاصة الاصبع موصولان في مدخل/دبوس رقم 9 و10 على التوالي. عند تلقي ال-Arduino إشارة من مفتاح الزناد، تقوم ال-Arduino - وحسب برنامجنا المحمل عليها- بإرسال اشارات من نوع مغايرة مده النبض (PWM) وهو النوع المستعمل بشكل عام في التحكم بمحركات السيرفو.


من ناحية أخرى وحسب الشرح الآنف في تقديم هذه الوصفة، نلاحظ أن الآلة تعمل بشكل مستمر (حتى عندما تكون في حالة إنتظار تغير حالة المفتاح)، مما يعني أن هناك إستهلاك دائم للطاقة، لذلك لقد أضفت مفتاح كهربائي آخر ولكن مخفي في أسفل الصندوق، يستخدم لإيقاف الآلة تماماً لتوفير الطاقه اثناء التخزين. الآلة تعمل ببطارية 9 فولت متوافرة بسهولة، ولكن يفضل إستعمال بطاريات ذات سعة أعلى (1 أمبير مثلاً) ولكن بجهد يتراوح بين 6 و 12 فولت كحد أقصى. الجدير بالذكر، أن ال-Arduino تدعم خاصية وضع السكون وكان بإمكاني إستخدام هذا الوضع الموفر للطاقة أثناء عدم عمل الآلة، ولكني فضلت عدم إستخدامه متفادياً تعقيد كود البرنامج.


أيضاً ترون أني وضعت مفتاح يعمل بالضغط عليه ، وهو مستخدم فقط لإعادة تشغيل ال-Arduino إذا لزم الأمر من دون الحاجة لفصل الطاقة عنها، وهو موصول في مدخل/دبوس ال-RESET.


برنامج ال-Arduino

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

في كل مرة يتحرك فيها مفتاح الزناد، تختار ال-Arduino بشكل عشوائي أو متسلسل (حسب اختيارنا في كود البرنامج) واحدة من الوظائف المذكورة أعلاه، وتقوم بتحريك الباب والإصبع حسب برمجة وتوقيت الاوامر في هذه الوظيفة، والتي سينتج عنها انتقالات حركية متنوعة تنتهي دائماً بأن يقوم الاصبع بدفع المفتاح إلى الجهة المعاكسة، فإيقاف عمل الآلة.

إذاً كل وظيفة تعادل حركه مكتمله للباب والاصبع حتى عكس اتجاه مفتاح الزناد، ممكن برمجة عدد كبير من الوظائف على أن لايتعدى الحجم الاجمالي للبرنامج سعة ذاكرة ال-Arduino (سعة الذاكرة تختلف حسب نوع دائرة ال-Arduino المستعملة).


لائحة المواد

  • صندوق من الخشب أو البلاستيك
  • لوحة Arduino (لقد استخدمت لوحة Arduino Diecimila لهذه الوصفة ولكن ممكن إستخدام أي لوحة أخرى)
  • عدد 2 x محرك سيرفو. لقد استخدمت Futaba - S3003 المستعملة عادةً في بناء نماذج طيارات متحكمة عن بعد. المهم أن تكون المحركات قادرة على رفع اقله 3 كيلوجرام على بعد 1سم (عزم) لكي تستطيع رفع الباب وتحريك المفتاح ومقاومة المستخدم الى حد معقول إذا حاول وقف حركتهما يدويا.
  • بطارية بجهد 6 أو 12 فولت كحد أقصى (لقد استخدمت بطارية 11.1 فولت، 1000 أمبير)
  • مفتاح كهربائي كذلك الظاهر في الصور والفيديو
  • مفتاح كهربائي آخر لفصل البطارية أثناء التخزين أو الشحن الكهربائي
  • مفتاح كهربائي من نوع "ضغط"، سنستخدمه لإعادة تشغيل ال-Arduino من دون الحاجة لفصل الطاقة عنها
  • مكثف 10MuF 20V، مقاوم 10KOhm، ودائرة إلكترونية متكاملة 74HC04
  • مجموعة من الأسلاك ، ادآة لحام للالكترونيات ، وعدد من أدوات العمل الأخرى حسب الحاجة



الخطوة 2: بناء الصندوق

ممكن إعادة إستخدام أي صندوق موجود لديكم، على أن يستطيع احتواء كل العناصر الالكترونية من ال-Arduino، محركات السيرفو، البطارية والأسلاك، ولكني فضلت بناء الصندوق من الصفر ، ما يعطيني حرية في تحديد حجمه، ومتعة أكبر، كما يترك ذلك بصمة شخصية على الآلة :)

  • لقد استخدمت لوحين من الخشب البلسا بسماكة 5mm، هذا الخشب يستخدم عادةً لبناء نماذج للمباني، أو للطائرات المتحكمة عن بعد، فهو سهل التطويع ، خفيف الوزن، متماسك الى حد بعيد، وممكن تقطيعه بسهولة مستخدمين الموس المكتبي.
  • استهلكت 5 أنابيب من غراء Cyanoacrylat (الملقب باللصق سريع المفعول، والمتوفر بسهولة)

هذا هو الصندوق الذي صنعت، وقياساته هي: طول 22 ارتفاع 14 عمق 14 سم:


BoxFAD.jpg


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



الخطوة 3: تثبيت محركات السيرفو والأذرع

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

قبل التثبيت، يجب صنع:

  1. الإصبع الخشبي الذي سيدفع المفتاح
  2. الذراع الخشبي الذي سيرفع باب الصندوق

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


إصبع المفتاح

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

ServoFinger.jpg


ذراع الباب

لاحظ في الشكل أدناه (إلى اليمين)، سيرفو ذراع الباب مثبت إلى جانب الصندوق، بشكل أن مركز دوران السيرفو يبتعد قليلاً (2 سم) عن الباب العلوي، أما الذراع فهو مثبت على السيرفو ويتحرك بمعدل أقصاه 90 درجة من داخل الصندوق إلى خارجه ، مؤدياً إلى فتح باب الصندوق ، كي يستطيع الاصبع بالخروج بحرية من مخبئه!

Servoarm.jpg


ملاحظة مهمة عند صناعة الذراع والإصبع ثم تثبيتهما


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

هنا ادعوكم لتوصيل السيرفو بل-Arduino بشكل مؤقت وإستخدام مثال كود السيرفو خاصة برنامج Arduino IDE، هذا الكود موجود مع أي تنزيله لهذا البرنامج. لمزيد من المعلومات عن إستخدام هذا الكود، إتبع هذا الرابط


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

القيم المدونة هي عبارة عن زاوية دوران السيرفو وهي لا تتعدى 0 إلى 180 درجة.

ستستخدمون هذه القيم الأربعة لاحقاً في تعديل الكود الأساسي لآلتنا الذي سوف نحمله على ال-Arduino في خطوة لاحقة.

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



الخطوة 4: التوصيلات الالكترونية

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

اليكم بعد الصور للتوصيلات النهائية:

Tawseelat.png



الخطوة 5: فهم و تحميل كود ال-Arduino

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

مرفق في هذه الخطوة الكود لتحميله على ال-Arduino ولكن قبل تحميل الكود يجب أن نعدله بإدخال القيم الأربع التي حصلتم عليها في إختبارتكم في الخطوة رقم 2. وذلك على الشكل الآتي:

ملف:Useless machine Arduino code.zip

إفتح هذا الكود في برنامج Arduino IDE، ابحث في الكود عن كل اي ورود للقيم التالية وبدلها حسب الجدول أدناه:

Jadwalalkeyam.png

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

أقسام الكود

إن الكود مقسوم الى ثلاث مراحل:

  1. مرحله ابتداء، فيها نحدد القيم الابتدائية للمتغيرات المستعمله في الكود
  2. مرحلة اعدد (في وظيفة Setup) وهي مرحلة تهيئة لمداخل ومخارج ال-Arduino حسب حاجتنا وتحديد القيم الابتدائية المستعملة لمحركات السيرفو، وسرعة الارسال والإستقبال من/إلى ال-Arduino عبر المنفذ التسلسلي USB.
  3. مرحلة التكرار (في وظيفه loop): وهذا هو صلب الكود الذي وضعت فيه منطق الوظائف التي ستحرك محركي السيرفو واستشعار التغير في قطبيه مفتاح الزناد. كما يشير إسم هذه الوظيفة loop، فإن ال-Arduino وبعد الانتهاء من تنفيذ الأوامر فيها، ستعود من جديد لبداية هذه الوظيفة loop، سيتكرر هذا إلى مالانهاية، أو حتى فصل البطارية عن الآلة.


لاحظ أن القسم الأول من كود loop، هو عبارة عن إستدعاء وظيفي للوظائف المتعددة المكتوبة في القسم السفلي للكود، يتم الاستدعاء بشكل تسلسلي وظيفه تلو الأخرى كلما قام المستخدم بدفع المفتاح بإتجاه تشغيل الآلة، مما يعطي حركات جديدة ومتبدلة في كل مرة.


كل ما عليكم فعله الآن هو توصيل ال-Arduino بمخرج ال-USB في جهازكم. اختارو المنفذ التسلسلي الصحيح (COM port) من لائحة Tools > Port، ولوحة ال-Arduino خاصتكم من لائحة Tools > board. يمكنكم الآن الضغط على زر رفع (Upload) ، مما سيسب بتأكد تلقائي للكود ومن ثم تحميله على ال-Arduino.


إذا اتبعتم التوصيلات الالكترونية بدقة ، وتركيب السيرفو والأذرع كما شرحت آنفاً، أصبح لديكم الآن آلة عديمة الفائدة، جاهزة أن تتحداكم! :)


عند الاختبار الأول، لو لاحظتم حركه غير متوقعة للإصبع أو ذراع الباب ، فذلك قد يعود لأسباب عديدة، أهمها إحتمال انكم ثبتم الأذرع على مركز السيرفو بشكل معكوس. في هذه الحال، قوموا بعكس أماكن السيرفو أو الأذرع، وإذا تعذر ذلك، ممكن عكس دوران السيرفو في كود ال-Arduino،بالبحث وتبديل في كل وظيفة، القيم القصوى للسرفو المعني بتلك الدنيى منها، وبعكس إتجاه علامات أكبر > بأصغر <، وبلتالي أيضاً عكس إتجاه علامات أصغر ب أكبر. أيضاً تبديل كل ورود لإشارة + ب -، و - ب +.



الخطوة 6: كلمة أخيرة

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


على أمل أن اتلقى تعليقاتكم، والإجابة عن أي سؤال إذا وجد.

فهد الرياشي - 2014 riachi@gmail.com