Arduino پر پہلا روبوٹ بنانے کا تجربہ (روبوٹ "شکاری")

خوش

اس مضمون میں میں Arduino کا استعمال کرتے ہوئے اپنے پہلے روبوٹ کو جمع کرنے کے عمل کو بیان کرنا چاہتا ہوں۔ یہ مواد میرے جیسے دوسرے ابتدائی افراد کے لیے مفید ہو گا جو کسی قسم کی "خود سے چلنے والی ٹوکری" بنانا چاہتے ہیں۔ مضمون مختلف باریکیوں پر میرے اضافے کے ساتھ کام کرنے کے مراحل کی تفصیل ہے۔ آرٹیکل کے آخر میں حتمی کوڈ کا لنک (زیادہ تر مثالی نہیں) دیا گیا ہے۔

Arduino پر پہلا روبوٹ بنانے کا تجربہ (روبوٹ "شکاری")

جب بھی ممکن ہوا، میں نے اپنے بیٹے (8 سال کی عمر) کو شرکت میں شامل کیا۔ اس کے ساتھ بالکل کیا کام ہوا اور کیا نہیں - میں نے مضمون کا کچھ حصہ اس کے لیے وقف کر دیا ہے، شاید یہ کسی کے لیے مفید ہو گا۔

روبوٹ کی عمومی وضاحت

سب سے پہلے، روبوٹ کے بارے میں چند الفاظ (خیال)۔ میں واقعی شروع میں کچھ معیاری جمع نہیں کرنا چاہتا تھا۔ ایک ہی وقت میں، اجزاء کا سیٹ کافی معیاری تھا - چیسس، انجن، الٹراسونک سینسر، لائن سینسر، ایل ای ڈی، ٹویٹر. ابتدائی طور پر، اس "سوپ سیٹ" سے ایک روبوٹ ایجاد کیا گیا تھا جو اپنے علاقے کی حفاظت کرتا ہے۔ وہ مجرم کی طرف چلاتا ہے جس نے دائرے کی لکیر کو عبور کیا ہے، اور پھر مرکز میں واپس آجاتا ہے۔ تاہم، اس ورژن کو ہر وقت دائرے میں رہنے کے لیے ایک کھینچی ہوئی لکیر کے علاوہ اضافی ریاضی کی ضرورت تھی۔

لہذا، کچھ سوچنے کے بعد، میں نے خیال کو کچھ حد تک تبدیل کیا اور ایک "شکاری" روبوٹ بنانے کا فیصلہ کیا. شروع میں، یہ اپنے محور کے گرد گھومتا ہے، قریبی ہدف (شخص) کا انتخاب کرتا ہے۔ اگر "شکار" کا پتہ چل جاتا ہے، تو "شکاری" چمکتی ہوئی لائٹس اور سائرن کو آن کر دیتا ہے اور اس کی طرف گاڑی چلانا شروع کر دیتا ہے۔ جب کوئی شخص بھاگ جاتا ہے/ بھاگتا ہے تو روبوٹ ایک نیا ہدف منتخب کرتا ہے اور اس کا تعاقب کرتا ہے، وغیرہ۔ ایسے روبوٹ کو محدود دائرے کی ضرورت نہیں ہوتی اور یہ کھلے علاقوں میں کام کر سکتا ہے۔

جیسا کہ آپ دیکھ سکتے ہیں، یہ بہت کچھ پکڑنے کے کھیل کی طرح ہے۔ اگرچہ آخر میں روبوٹ کافی تیز نہیں نکلا، لیکن یہ ایمانداری سے اپنے اردگرد کے لوگوں کے ساتھ بات چیت کرتا ہے۔ بچے خاص طور پر اسے پسند کرتے ہیں (کبھی کبھی، تاہم، ایسا لگتا ہے کہ وہ اسے روندنے ہی والے ہیں، ان کا دل دھڑکتا ہے...)۔ میرے خیال میں تکنیکی ڈیزائن کو مقبول بنانے کے لیے یہ ایک اچھا حل ہے۔

روبوٹ کا ڈھانچہ

لہذا، ہم نے خیال پر فیصلہ کیا ہے، آئیے آگے بڑھتے ہیں ترتیب. عناصر کی فہرست اس سے بنتی ہے کہ روبوٹ کو کیا کرنے کے قابل ہونا چاہئے۔ یہاں سب کچھ بالکل واضح ہے، لہذا آئیے فوری طور پر نمبر پر نظر ڈالیں:

Arduino پر پہلا روبوٹ بنانے کا تجربہ (روبوٹ "شکاری")

روبوٹ کے "دماغ" ایک arduino uno بورڈ ہیں (1)؛ چین سے منگوائے گئے سیٹ میں تھا۔ ہمارے مقاصد کے لیے، یہ کافی ہے (ہم استعمال شدہ پنوں کی تعداد پر توجہ مرکوز کرتے ہیں)۔ اسی کٹ سے ہم نے ایک ریڈی میڈ چیسس (2) لیا، جس پر ڈرائیو کے دو پہیے (3) اور ایک پیچھے (آزادانہ گھومنے والا) (4) منسلک ہیں۔ اس کٹ میں ایک ریڈی میڈ بیٹری کمپارٹمنٹ (5) بھی شامل تھا۔ روبوٹ کے سامنے الٹراسونک سینسر (HC-SR04) (6) ہے، پیچھے میں ایک موٹر ڈرائیور (L298N) (7) ہے، بیچ میں ایک LED فلیشر (8) ہے، اور تھوڑا سا اس طرف ایک ٹویٹر ہے (9)۔

ترتیب کے مرحلے پر ہم دیکھتے ہیں:

- تاکہ سب کچھ فٹ ہوجائے
- متوازن ہونا
- عقلی طور پر رکھا جائے

ہمارے چینی ساتھی پہلے ہی جزوی طور پر ہمارے لیے یہ کام کر چکے ہیں۔ لہذا، بھاری بیٹری کی ٹوکری مرکز میں رکھی گئی ہے، اور ڈرائیو کے پہیے تقریبا اس کے نیچے واقع ہیں. دیگر تمام بورڈز ہلکے وزن کے ہیں اور انہیں پرفیری پر رکھا جا سکتا ہے۔

باریکی:

  1. کٹ کے چیسس میں فیکٹری کے بہت سارے سوراخ ہیں، لیکن میں ابھی تک یہ نہیں سمجھ سکا کہ ان میں کیا منطق ہے۔ انجنوں اور بیٹری پیک کو بغیر کسی پریشانی کے محفوظ کر لیا گیا، پھر اس یا اس بورڈ کو محفوظ کرنے کے لیے نئے سوراخوں کی کھدائی کے ساتھ "ایڈجسٹمنٹ" شروع ہوئی۔
  2. ذخیرہ کرنے والے علاقوں سے پیتل کے ریک اور دیگر فاسٹنرز ایک بڑی مدد تھے (بعض اوقات ہمیں انہیں باہر نکالنا پڑتا تھا)۔
  3. میں نے ہر بورڈ سے بس باروں کو کلیمپس سے گزارا (دوبارہ، میں نے انہیں اسٹوریج میں پایا)۔ بہت آسان، تمام تاریں اچھی طرح سے پڑی ہیں اور لٹکتی نہیں ہیں۔

انفرادی بلاکس

اب میں گزروں گا۔ بلاکس اور میں آپ کو ذاتی طور پر ہر ایک کے بارے میں بتاؤں گا۔

بیٹری کی ٹوکری

یہ واضح ہے کہ روبوٹ کے پاس توانائی کا ایک اچھا ذریعہ ہونا ضروری ہے۔ اختیارات مختلف ہو سکتے ہیں، میں نے 4 AA بیٹریوں کے ساتھ آپشن کا انتخاب کیا۔ مجموعی طور پر وہ تقریباً 5 V دیتے ہیں، اور یہ وولٹیج براہ راست arduino بورڈ کے 5V پن پر لگایا جا سکتا ہے (اسٹیبلائزر کو نظرانداز کرتے ہوئے)۔

بے شک، میں نے کچھ احتیاط کی تھی، لیکن یہ حل کافی قابل عمل ہے۔

چونکہ ہر جگہ بجلی کی ضرورت ہوتی ہے، سہولت کے لیے میں نے روبوٹ کے بیچ میں دو کنیکٹر بنائے: ایک زمین کو "تقسیم" کرتا ہے (دائیں طرف)، اور دوسرا - 5 V (بائیں طرف)۔

Arduino پر پہلا روبوٹ بنانے کا تجربہ (روبوٹ "شکاری")

موٹرز اور ڈرائیور

سب سے پہلے، انجنوں کو نصب کرنے کے بارے میں. ماؤنٹ فیکٹری سے بنایا گیا ہے، لیکن بڑی رواداری کے ساتھ بنایا گیا ہے۔ دوسرے الفاظ میں، انجن بائیں اور دائیں دو ملی میٹر ہل سکتے ہیں۔ ہمارے کام کے لیے یہ اہم نہیں ہے، لیکن کچھ جگہوں پر اس کا اثر ہو سکتا ہے (روبوٹ سائیڈ پر جانا شروع کر دے گا)۔ صرف اس صورت میں، میں نے انجنوں کو سختی سے متوازی سیٹ کیا اور انہیں گلو سے ٹھیک کیا۔

Arduino پر پہلا روبوٹ بنانے کا تجربہ (روبوٹ "شکاری")

موٹرز کو کنٹرول کرنے کے لیے، جیسا کہ میں نے اوپر لکھا، L298N ڈرائیور استعمال کیا جاتا ہے۔ دستاویزات کے مطابق، اس میں ہر موٹر کے لیے تین پن ہیں: ایک رفتار کو تبدیل کرنے کے لیے اور ایک جوڑا گردش کی سمت کے لیے۔ یہاں ایک اہم نکتہ ہے۔ یہ پتہ چلتا ہے کہ اگر سپلائی وولٹیج 5 V ہے، تو رفتار کنٹرول صرف کام نہیں کرتا! یعنی، یا تو یہ بالکل نہیں مڑتا، یا زیادہ سے زیادہ کی طرف مڑ جاتا ہے۔ یہ وہ خصوصیت ہے جس کی وجہ سے میں نے شام کے ایک جوڑے کو "قتل" کیا۔ آخر میں، مجھے ایک فورم پر کہیں ایک ذکر ملا۔

عام طور پر، روبوٹ کو موڑتے وقت مجھے گردش کی کم رفتار کی ضرورت تھی - تاکہ اس کے پاس جگہ کو اسکین کرنے کا وقت ہو۔ لیکن، چونکہ اس خیال سے کچھ نہیں نکلا، اس لیے مجھے اسے مختلف طریقے سے کرنا پڑا: ایک چھوٹا موڑ - اسٹاپ - ٹرن - اسٹاپ، وغیرہ۔ پھر سے، اتنا خوبصورت نہیں، لیکن قابل عمل۔

میں یہاں یہ بھی شامل کروں گا کہ ہر تعاقب کے بعد روبوٹ ایک نئے موڑ کے لیے بے ترتیب سمت کا انتخاب کرتا ہے (گھڑی کی سمت یا مخالف سمت)۔

الٹراسونک سینسر

Arduino پر پہلا روبوٹ بنانے کا تجربہ (روبوٹ "شکاری")

ہارڈ ویئر کا ایک اور ٹکڑا جہاں ہمیں سمجھوتہ حل تلاش کرنا پڑا۔ الٹراسونک سینسر حقیقی رکاوٹوں پر غیر مستحکم نمبر تیار کرتا ہے۔ درحقیقت، اس کی توقع تھی۔ مثالی طور پر، یہ مقابلوں میں کہیں کام کرتا ہے جہاں ہموار، ہموار اور کھڑے سطحیں ہوں، لیکن اگر کسی کی ٹانگیں اس کے سامنے "فلیش" ہوں تو اضافی پروسیسنگ متعارف کروانے کی ضرورت ہے۔

اس طرح کی پروسیسنگ کے طور پر میں نے مقرر کیا درمیانی فلٹر تین شماروں کے لیے۔ حقیقی بچوں کے ٹیسٹوں کی بنیاد پر (ٹیسٹ کے دوران کسی بچے کو کوئی نقصان نہیں پہنچا!)، یہ ڈیٹا کو معمول پر لانے کے لیے کافی ثابت ہوا۔ یہاں طبیعیات آسان ہے: ہمارے پاس سگنلز ہیں جن سے منعکس ہوتا ہے۔ ضروری اشیاء (مطلوبہ فاصلہ دینا) اور زیادہ دور سے جھلکتی ہیں، مثال کے طور پر، دیواریں۔ مؤخر الذکر شکل 45، 46، کی پیمائش میں بے ترتیب اخراج ہیں۔ 230، 46، 46، 45، 45، 310, 46... یہ وہ ہیں جو درمیانی فلٹر کو کاٹ دیتے ہیں۔

تمام پروسیسنگ کے بعد، ہم قریب ترین آبجیکٹ کا فاصلہ حاصل کرتے ہیں۔ اگر یہ ایک خاص حد کی قیمت سے کم ہے، تو ہم الارم کو آن کرتے ہیں اور سیدھے "گھسنے والے" کی طرف چلتے ہیں۔

فلیشر اور سائرن

شاید مندرجہ بالا میں سے سب سے آسان عناصر۔ انہیں اوپر کی تصاویر میں دیکھا جا سکتا ہے۔ یہاں ہارڈ ویئر کے بارے میں لکھنے کے لیے کچھ نہیں ہے، تو اب آگے بڑھتے ہیں۔ کوڈ.

کنٹرول پروگرام

مجھے کوڈ کو تفصیل سے بیان کرنے میں کوئی فائدہ نظر نہیں آتا، کس کو اس کی ضرورت ہے - لنک مضمون کے آخر میں ہے، وہاں سب کچھ پڑھنے کے قابل ہے۔ لیکن عمومی ساخت کی وضاحت کرنا اچھا ہو گا۔

پہلی چیز جو ہمیں سمجھنی تھی وہ یہ تھی کہ روبوٹ ایک حقیقی وقت کا آلہ ہے۔ زیادہ واضح طور پر، یاد رکھنا، کیونکہ پہلے اور اب دونوں میں اب بھی الیکٹرانکس میں کام کرتا ہوں۔ لہذا، ہم فوری طور پر چیلنج کے بارے میں بھول جاتے ہیں تاخیر ()، جسے وہ مثال کے طور پر خاکوں میں استعمال کرنا پسند کرتے ہیں، اور جو پروگرام کو ایک مخصوص مدت کے لیے "منجمد" کر دیتا ہے۔ اس کے بجائے، جیسا کہ تجربہ کار لوگ مشورہ دیتے ہیں، ہم ہر بلاک کے لیے ٹائمر متعارف کرواتے ہیں۔ مطلوبہ وقفہ گزر چکا ہے - کارروائی کی گئی ہے (ایل ای ڈی کی چمک میں اضافہ، انجن کو آن کرنا، وغیرہ)۔

ٹائمر آپس میں منسلک ہو سکتے ہیں۔ مثال کے طور پر، ٹویٹر فلیشر کے ساتھ ہم آہنگی سے کام کرتا ہے۔ یہ پروگرام کو تھوڑا سا آسان بناتا ہے۔

قدرتی طور پر، ہم ہر چیز کو الگ الگ افعال میں توڑ دیتے ہیں (چمکتی ہوئی لائٹس، آواز، موڑنا، آگے بڑھنا، وغیرہ)۔ اگر آپ ایسا نہیں کرتے ہیں، تو آپ یہ نہیں جان پائیں گے کہ کیا اور کہاں سے آرہا ہے۔

درس گاہ کی باریکیاں

میں نے شام کو اپنے فارغ وقت میں اوپر بیان کردہ سب کچھ کیا۔ آرام سے میں نے روبوٹ پر تقریباً تین ہفتے گزارے۔ بات یہیں ختم ہو سکتی تھی، لیکن میں نے آپ کو ایک بچے کے ساتھ کام کرنے کے بارے میں بتانے کا وعدہ بھی کیا۔ اس عمر میں کیا کیا جا سکتا ہے؟

ہدایات کے مطابق کام کریں۔

ہم نے سب سے پہلے ہر تفصیل کو الگ الگ چیک کیا - LEDs، tweeter، موٹرز، سینسرز وغیرہ۔ بڑی تعداد میں تیار شدہ مثالیں موجود ہیں - کچھ ترقی کے ماحول میں، دوسری انٹرنیٹ پر مل سکتی ہیں۔ یہ یقینی طور پر مجھے خوش کرتا ہے۔ ہم کوڈ لیتے ہیں، اس حصے کو جوڑتے ہیں، اس بات کو یقینی بناتے ہیں کہ یہ کام کرتا ہے، پھر ہم اسے اپنے کام کے مطابق تبدیل کرنا شروع کر دیتے ہیں۔ بچہ خاکے کے مطابق اور میری کچھ نگرانی میں کنکشن بناتا ہے۔ یہ اچھا ہے. آپ کو ہدایات کے مطابق سختی سے کام کرنے کے قابل ہونے کی بھی ضرورت ہے۔

کام کی ترتیب ("خاص سے عام تک")

یہ ایک مشکل نکتہ ہے۔ آپ کو یہ سیکھنے کی ضرورت ہے کہ ایک بڑا پروجیکٹ ("روبوٹ بنائیں") چھوٹے کاموں پر مشتمل ہوتا ہے ("سینسر کو جوڑیں،" "موٹرز کو جوڑیں"...)، اور وہ، بدلے میں، اور بھی چھوٹے اقدامات پر مشتمل ہوتے ہیں ("ایک تلاش کریں" پروگرام، "ایک بورڈ کو جوڑیں۔" "، "فرم ویئر ڈاؤن لوڈ کریں"...)۔ نچلی سطح کے کم و بیش قابل فہم کاموں کو انجام دینے سے، ہم درمیانی سطح کے کاموں کو "بند" کرتے ہیں، اور ان سے مجموعی نتیجہ نکلتا ہے۔ میں نے وضاحت کی، لیکن مجھے لگتا ہے کہ احساس جلد نہیں آئے گا. کہیں، شاید، جوانی سے۔

تنصیب

ڈرلنگ، دھاگے، پیچ، گری دار میوے، سولڈرنگ اور روزن کی بو - ہم اس کے بغیر کہاں ہوں گے؟ بچے نے بنیادی مہارت حاصل کی "سولڈرنگ آئرن کے ساتھ کام کرنا" - اس نے کئی کنکشن سولڈر کرنے میں کامیاب کیا (میں نے تھوڑی مدد کی، میں اسے نہیں چھپاوں گا). حفاظت کی وضاحت کے بارے میں مت بھولنا.

کمپیوٹر کا کام

میں نے روبوٹ کے لیے پروگرام لکھا، لیکن میں پھر بھی کچھ سازگار نتائج حاصل کرنے میں کامیاب رہا۔

پہلا: انگریزی۔ انہوں نے اسے ابھی اسکول میں شروع کیا تھا، اس لیے ہم یہ جاننے کے لیے جدوجہد کر رہے تھے کہ پشالکا، میگلکا، یارکوسٹ اور دیگر نقلیں کیا ہیں۔ کم از کم ہم یہ سمجھ گئے تھے۔ میں نے جان بوجھ کر انگریزی کے مقامی الفاظ استعمال نہیں کیے، کیونکہ ہم ابھی تک اس سطح پر نہیں پہنچے ہیں۔

دوسرا: موثر کام۔ ہم نے ہاٹکی کے امتزاج اور معیاری کارروائیوں کو تیزی سے انجام دینے کا طریقہ سکھایا۔ وقتاً فوقتاً، جب ہم پروگرام لکھ رہے تھے، میرے بیٹے اور میں نے جگہیں تبدیل کیں، اور میں نے کہا کہ کیا کرنے کی ضرورت ہے (متبادل، تلاش، وغیرہ)۔ مجھے بار بار دہرانا پڑا: "ڈبل کلک سلیکٹ"، "ہولڈ شفٹ"، "ہولڈ Ctrl" وغیرہ۔ یہاں سیکھنے کا عمل تیز نہیں ہے، لیکن مجھے لگتا ہے کہ مہارتیں آہستہ آہستہ "سب کورٹیکس میں" جمع ہو جائیں گی۔

پوشیدہ متنآپ کہہ سکتے ہیں کہ مذکورہ بالا تقریباً واضح ہے۔ لیکن، ایمانداری سے، اس موسم خزاں میں مجھے ایک اسکول میں 9ویں جماعت میں کمپیوٹر سائنس پڑھانے کا موقع ملا۔ یہ خوفناک ہے۔ طلباء Ctrl + Z، Ctrl + C اور Ctrl + V جیسی بنیادی چیزیں نہیں جانتے ہیں، Shift کو پکڑ کر متن کا انتخاب کرنا یا کسی لفظ پر ڈبل کلک کرنا وغیرہ۔ یہ اس حقیقت کے باوجود ہے کہ وہ کمپیوٹر سائنس کی تعلیم کے تیسرے سال میں تھے... اپنا نتیجہ اخذ کریں۔

تیسرا: ٹچ ٹائپنگ۔ میں نے کوڈ میں تبصرے بچے کو ٹائپ کرنے کے لیے سونپے (اسے مشق کرنے دیں)۔ ہم نے فوراً اپنے ہاتھوں کو درست طریقے سے رکھا تاکہ ہماری انگلیوں کو آہستہ آہستہ چابیاں کا مقام یاد رہے۔

جیسا کہ آپ دیکھ سکتے ہیں، ہم ابھی شروع کر رہے ہیں۔ ہم اپنی صلاحیتوں اور علم کو بہتر بناتے رہیں گے؛ وہ زندگی میں کارآمد ثابت ہوں گے۔

ویسے مستقبل کے بارے میں...

مزید ترقی

روبوٹ بنایا گیا ہے، چلاتا ہے، پلک جھپکتا ہے اور بیپ بجاتا ہے۔ اب کیا؟ ہم نے جو کچھ حاصل کیا ہے اس سے متاثر ہو کر، ہم اسے مزید بہتر کرنے کا ارادہ رکھتے ہیں۔ ایک ریموٹ کنٹرول بنانے کا آئیڈیا ہے - جیسے قمری روور۔ یہ دلچسپ ہوگا کہ ریموٹ کنٹرول پر بیٹھ کر روبوٹ کی نقل و حرکت کو کنٹرول کرنا جو بالکل مختلف جگہ پر چل رہا ہے۔ لیکن یہ ایک الگ کہانی ہو گی...

اور آخر میں، حقیقت میں، اس مضمون کے ہیرو (کلک کرکے ویڈیو):

Arduino پر پہلا روبوٹ بنانے کا تجربہ (روبوٹ "شکاری")

آپ کا شکریہ!

کوڈ لنک

ماخذ: www.habr.com

نیا تبصرہ شامل کریں