ربات توپی کنترلی؛ یه گجت کروی با دوربین ESP32!
تا حالا به یه ربات کروی فکر کردی که بتونه مثل یه توپ قل بخوره و همهجا بره؟ تو این پروژه از آیسیمدار میخوایم یه گجت فوقالعاده جذاب رو با هم بسازیم. یه ربات توپی کنترلی که نهتنها خودش رو بالانس میکنه، بلکه به لطف ماژول دوربین قدرتمندش، میتونی از زاویه دید ربات همهچیز رو زنده ببینی و هدایتش کنی.
این پروژه یه ترکیب عالی از طراحی مکانیکی، چاپ سهبعدی و برنامهنویسیه. قراره یه برد اختصاصی برای قلب تپنده ربات طراحی کنیم تا همهچیز خیلی جمعوجور داخل یه پوسته کروی جا بشه. داشتن وایفای داخلی هم بهمون این امکان رو میده تا ربات رو مستقیما با مرورگر گوشی یا لپتاپ کنترل کنیم و نیازی به ریموتهای دردسرساز نداشته باشیم.
اگه عاشق ساختن رباتهای خاص و متفاوت هستی، این پروژه دقیقا همون چیزیه که دنبالش میگردی. پس قطعات و ابزارت رو آماده کن تا قدمبهقدم بریم سراغ ساخت این ربات کروی جذاب و تجربهای متفاوت از ساختنیها رو رقم بزنیم!
قطعات موردنیاز
- 14 عدد الایدی سفید
- 2 عدد الایدی قرمز
طراحی مدار چاپی؛ قلب تپنده ربات کروی
برای اینکه همهچیز داخل این فضای کروی و کوچیک جا بشه، باید یه مدار چاپی (PCB) اختصاصی طراحی کنیم که همه قطعات رو دور هم جمع کنه. روی این برد، قطعات مهمی مثل ماژول دوربین XIAO ESP32S3، درایور موتور DRV8833، قطعات پسیو و کانکتورها قرار میگیرن تا ارتباطات کاملا یکپارچه باشه.
یکی از چالشهای مهم تو طراحی این مدار، پیدا کردن شماتیک دقیق و بدون نقص برای درایور موتور بود که با بررسیهای دقیق تونستم اتصالات درست رو براش پیادهسازی کنم تا ربات موقع حرکت عملکرد پایداری داشته باشه.
علاوه بر بخشهای حرکتی، یه بازر برای هشدار ضعیف بودن باتری، یه مدار مقسم ولتاژ برای مانیتورینگ دقیق شارژ و یه قطعه ماسفت (MOSFET) برای کنترل هوشمند چراغهای جلو و عقب ربات به مدار اضافه شده تا همهچیز حرفهای پیش بره.
برای روشن و خاموش کردن ربات میشد از مدارهای لچکننده پیچیده با کلید فشاری استفاده کرد، اما بعد از چند بار تست، تصمیم بر این شد که از یه کلید کشویی ساده و کاملا مطمئن استفاده کنیم تا خیالمون از بابت قطع و وصل جریان راحت باشه.
وقتی شماتیک نهایی شد، شکل کلی برد رو طوری طراحی کردم که دقیقا تو فضای محدود داخل کره جا بشه. سوراخهای نصب و پدهای کانکتور سر جای خودشون قرار گرفتن و مسیرکشیها (Routing) با دقت انجام شد تا در نهایت یه برد دولایه تمیز و بینقص آماده بشه. با اضافه کردن چندتا متن و نماد برای راهنمایی روی برد، طراحی نهایی به پایان رسید و آماده رفتن به مرحله ساخت شد.
طراحی این برد با استفاده از نرمافزارهای استاندارد طراحی مدار انجام شده تا دقیقترین خروجی ممکن رو برای تولید انبوه یا تکی بهمون بده.
فایلهای شماتیک و گربر بردهای ربات
فایلهای شماتیک و گربر این پروژه کاملا آمادهست و میتونی برای ساخت ازشون استفاده کنی. دقت کن که ما اینجا دو تا برد مجزا داریم؛ یکی برد اصلی که تمام قطعات کنترلی روش سوار میشن و یکی هم یه برد حلقهای شکل برای الایدیها که دور دوربین قرار میگیره و مثل یه پروژکتور کوچیک برای ربات عمل میکنه.
آمادهسازی و سفارش ساخت PCB
وقتی فایلهای گربر رو آماده کردی، باید اونها رو برای ساخت به یکی از شرکتهای تولیدکننده مدار چاپی بفرستی تا بردهایی با کیفیت بالا و صنعتی داشته باشی. بریم ببینیم چه تنظیماتی برای سفارش نیازه.
کافیه فایلهای فشرده (ZIP) گربر رو تو سایت سازنده آپلود کنی. برای تنظیمات لایهها، حتما هر دو برد اصلی و حلقهای رو روی حالت دولایه (2 Layers) قرار بده و تعداد موردنیازت رو مشخص کن.
ضخامت برد اصلی رو روی 1.6 میلیمتر و ضخامت برد حلقهای رو روی 1.0 میلیمتر تنظیم کن. رنگ چاپ محافظ (Solder Mask) کاملا سلیقهایه و میتونی رنگ دلخواهت رو انتخاب کنی. بقیه تنظیمات رو روی همون حالت پیشفرض رها کن.
یه نکته خیلی مهم: از اونجایی که قطعات نصبسطحی (SMD) مثل درایور موتور خیلی ریز هستن و لحیمکاریشون با هویه معمولی سخته، پیشنهاد میکنم حتما برای برد اصلی شابلون استنسیل (Stencil) سفارش بدی. ابعاد شابلون رو روی 50 در 80 میلیمتر و فقط برای لایه رویی (Top Side) تنظیم کن.
هر دو سفارش رو تایید کن و منتظر بمون تا بردهات ساخته بشن. داشتن شابلون استنسیل کیفیت مونتاژ قطعات ریز رو به شدت بالا میبره و کارت رو خیلی راحتتر میکنه.
بعد از چند روز بردهای باکیفیت و شابلون به دستت میرسه و میتونی با خیال راحت بری سراغ هیجانانگیزترین بخش کار، یعنی لحیمکاری و مونتاژ قطعات روی برد اختصاصی خودت!
مونتاژ قطعات SMD روی برد اصلی
حالا که بردها رسیدن، بریم سراغ مونتاژ. اول از همه باید با استفاده از همون شابلون استنسیل، خمیر لحیم رو بهطور یکنواخت روی پدهای برد اصلی پخش کنیم.
برد رو بین چند تکه فیبر یا برد سوراخدار همارتفاع قرار بده و با چسب ثابتش کن. شابلون رو دقیقا روی پدها تنظیم کن، چسب بزن تا تکون نخوره، یه مقدار خمیر لحیم بریز و با کاردک روی سوراخها بکش. وقتی شابلون رو آروم برداری، میبینی که خمیر دقیقا روی پدها نشسته.
برای برد حلقهای الایدی نیازی به شابلون نیست؛ چون پدهاش بزرگترن، میتونی مستقیما با سرنگ مقداری خمیر لحیم روی هر پد قرار بدی.
حالا وقت چیدن قطعات نصبسطحیه (Pick and Place). مقاومتهای چراغهای جلو و عقب، مقاومتهای مدار مقسم ولتاژ، مقاومت الایدی پاور، مقاومت پولآپ درایور موتور و مقاومت پولداون ماسفت رو سر جای خودشون بذار. بعد از اون خازنها، الایدی قرمز رنگ، ماسفت و درایور موتور دوگانه رو با پنس خیلی دقیق روی خمیرها قرار بده.
اگه درایور موتور DRV8833 رو به شکل آیسی خام پیدا نکردی، اصلا جای نگرانی نیست؛ میتونی یه ماژول آمادهاش رو بخری و آیسی و قطعات اطرافش رو با هیتر باز کنی و اینجا دوباره ازشون استفاده کنی. برای برد حلقهای چراغها هم فقط کافیه مقاومتهای محدودکننده جریان (SMD) رو سر جای خودشون قرار بدی.
تو مرحله آخر، بردها رو روی یه هاتپلیت (یا اتوی برقی وارونه) بذار. اگه نداری میتونی از هیتر هوای گرم استفاده کنی. با دقت نگاه کن که چطور خمیر لحیم ذوب میشه و قطعات سر جای خودشون محکم میشن. اگه پایههای آیسی به هم چسبید و اتصال کوتاه شد، با کشیدن نوک یه هویه تمیز بین پایهها میتونی قلع اضافهشون رو بگیری.
نصب مغز متفکر ربات؛ ماژول XIAO ESP32S3 Sense
رسیدیم به مهمترین بخش یعنی نصب مغز متفکر ربات! ما اینجا از برد توسعه کوچیک و قدرتمند XIAO ESP32S3 Sense استفاده میکنیم که نسخه دوربیندار از خانواده محبوب ESP32 به حساب میاد.
طراحی مدار اصلی ما طوریه که این ماژول دقیقا روی برد میشینه. به کمک سوراخهای حاشیهای (Castellated Holes) که دور برد XIAO وجود داره، خیلی راحت میتونی با یه مقدار قلع، لبههای ماژول رو به برد اصلی متصل و فیکس کنی.
دلیل انتخاب این برد، ابعاد خیلی کوچیک و امکانات فوقالعادهشه؛ وایفای داخلی برای کنترل بدون تأخیر با گوشی، دوربین 2 مگاپیکسلی برای دید اولشخص (FPV)، میکروفون داخلی و حتی یه درگاه کارت حافظه برای ضبط ویدیوها روی خود ربات! بهعلاوه، این ماژول مستقیما با باتری تکسلولی کار میکنه و مدار شارژ داخلی هم داره که ما رو از اضافه کردن مدارهای جانبی بینیاز میکنه.
بعد از لحیم کردن لبهها، برد رو برگردون و پدهای مخصوص باتری که زیر ماژول قرار دارن رو با سیم به سوکت باتری روی مدار اصلی وصل کن. این طراحی کاملا بهینه باعث میشه تا فضا به شدت ذخیره بشه؛ چیزی که برای جا دادن مدار داخل یه توپ خیلی حیاتیه!
لحیمکاری قطعات دیپ و اتصالات موتورها
تو این مرحله باید قطعات پایهدار (Through-Hole) رو نصب کنیم. با کلید کشویی SPDT برای قطع و وصل تغذیه شروع کن. بعد بازر 5 ولتی اکتیو رو برای هشدارهای حرکتی و باتری ضعیف روی برد قرار بده.
در ادامه، الایدیهای 3 میلیمتری سفید و قرمز رو برای چراغهای جلو و عقب نصب کن (پایههاشون رو 90 درجه خم کن تا بعد از نصب، نورشون رو به بیرون باشه). سوکت باتری JST رو هم تو جای خودش قرار بده. همه این قطعات رو از زیر لحیم کن و پایههای اضافهشون رو با کفچین کاملا صاف بچین.
حالا با سیمهای نازک (مثل 28 AWG)، موتورها رو به پدهای زیر برد وصل کن. روی برد علامتهایی گذاشته شده تا قطبیت و سمت راست و چپ موتورها رو اشتباه نکنی. یه نکته بسیار مهم: حتما دو تا پد کنار آیسی درایور موتور رو با لحیم به هم متصل کن. این کار پین nSLEEP درایور رو فعال میکنه و اگه این کار رو نکنی، موتورها اصلا روشن نمیشن!
پدهای مربوط به مقسم ولتاژ رو هم باید با یه قطره لحیم به هم متصل کنی (لحیمکاری جامپر) تا قابلیت مانیتورینگ ولتاژ باتری فعال بشه. همراه با ماژول XIAO یه هیتسینک کوچیک هم هست. اون رو باید دقیقا زیر میکروکنترلر بچسبونی. من تو طراحی برد فضای کافی براش در نظر گرفتم.
بدون هیتسینک ممکنه دمای ماژول به بالای 70 درجه برسه، اما با نصبش دما تو محدوده 50 تا 60 درجه باقی میمونه و ماژول با بالاترین بازدهی کار میکنه.
قطعه بعدی آنتن ماژوله. برای اینکه سیگنالدهی بهتری داشته باشیم، بخش فلت (Flex) آنتن رو جدا کن، کمی از روکش کابل کواکسیال رو لخت کن، شیلد سیمی رو کنار بزن و فقط مغزی عایقدار رو به عنوان آنتن نگه دار. تجربه نشون داده این کار آنتندهی رو به شکل محسوسی بهتر میکنه.
آنتن شخصیسازیشده رو به سوکت U.FL برد XIAO وصل کن و ماژول دوربین رو هم سر جایش قرار بده. پیشنهاد میکنم همین الان فریمور (کد برنامه) رو روی برد آپلود کنی تا قبل از بستن قطعات داخل کره، مطمئن بشی مدارت کاملا سالم و درسته. نحوه برنامهنویسی رو تو قدمهای بعدی کامل توضیح میدم.
طراحی سهبعدی پوسته و شاسی ربات
بذار یه نگاهی به نحوه طراحی قطعات مکانیکی این ربات تو نرمافزار سهبعدی مثل Fusion بندازیم. ایده اولیه این بود که یه کره مجازی دقیقا به اندازه توپهای تزئینی شفاف طراحی بشه. بعد از اون، تمام قطعات الکترونیکی با ابعاد خیلی دقیق مدلسازی شدن تا بفهمیم چطور باید داخل این کره چیده بشن. همین چیدمان مجازی بود که بهمون کمک کرد تا ابعاد نهایی مدار چاپی (PCB) رو استخراج کنیم.
بعد از مشخص شدن جای قطعات، شاسی اصلی، محفظه نگهدارنده باتری و وزنه، بازوهای مربوط به چرخهای هرزگرد و توپی چرخهای اصلی طراحی شدن. جزئیات ظریفی مثل نمادها، پایههای نصب دوربین و قطعات و رنگبندی هم تو همین مرحله به مدل اضافه شد تا همهچیز کامل بشه.
با استفاده از این فایلهای آماده، میتونی قطعات رو دقیقا بهینهسازی کنی و حتی ظاهر ربات توپی خودت رو تغییر بدی تا کاملا شخصیسازی بشه.
پرینت سهبعدی قطعات؛ نوبت ساخت فیزیکیه!
حالا باید قطعات ساختاری و چرخهای ربات رو پرینت بگیریم. برای شاسی و قطعات محکم بدنه از فیلامنت PLA (ترجیحا رنگ خاکستری تیره) استفاده میکنیم و برای تایرها سراغ فیلامنت منعطف و لاستیکی TPU میریم تا ربات چسبندگی و اصطکاک خوبی موقع حرکت داشته باشه. بعد از اتمام پرینت، ساپورتها (نگهدارندهها) رو با دقت جدا کن و سطح قطعات رو تمیز کن.
لیست قطعاتی که باید داشته باشی ایناست:
- شاسی اصلی بدنه (با فیلامنت PLA)
- نگهدارنده باتری و وزنه (با فیلامنت PLA)
- بازوهای چپ و راست چرخ هرزگرد (با فیلامنت PLA)
- توپی چرخهای چپ و راست (با فیلامنت PLA)
- تایر چرخها (با فیلامنت TPU)
- چرخهای هرزگرد (با فیلامنت TPU)
تنظیمات پیشنهادی برای پرینت هر دو نوع فیلامنت: ارتفاع لایه 0.12 میلیمتر، تراکم (Infill) حدود 15 درصد و حتما استفاده از ساپورت. سرعت پرینت برای PLA دلخواهه اما برای TPU بهتره روی 20 تا 40 میلیمتر بر ثانیه تنظیم بشه. دمای نازل برای PLA بین 200 تا 220 درجه و برای TPU بین 215 تا 230 درجه باشه. دمای هیتبد رو هم روی 60 درجه بذار و فن خنککننده روشن باشه.
برای پرینت کل قطعات داخلی حدودا به 30 گرم فیلامنت نیاز داری. اگه بخوای پوسته کروی رو هم با رزین شفاف پرینت بگیری، حدود 90 گرم متریال میبره.
- برای پوسته کروی بیرونی، بهترین و راحتترین گزینه استفاده از توپهای پلاستیکی شفاف آماده است (توپهای تزئینی)، اما امکان پرینت سهبعدی با رزین شفاف هم وجود داره.
زمان پرینت بسته به سرعت دستگاهت بین 3.5 تا 7 ساعت طول میکشه.
مونتاژ نهایی شاسی، موتورها و چرخها
برای نصب برد مدار چاپی روی شاسی، اول باید 5 تا مهره برنجی حرارتی (اینسرت) سایز M3 رو با هویه جا بزنی؛ 4 تا روی بدنه اصلی و یکی روی نگهدارنده باتری. قبل از اینکه موتورها رو تو جای خودشون قرار بدی، حتما نگهدارنده وزنه رو با کوتاهترین پیچ M3 ممکن به کف شاسی ببند.
حالا روی موتورها یه لایه چسب برق بزن تا بدنه فلزیشون پینهای زیر برد رو اتصال کوتاه نکنه. موتورها رو داخل محفظهشون فشار بده، سیمهاشون رو مرتب از کنار رد کن و برد اصلی رو سر جاش بخوابون.
در نهایت موتورها رو با چند تا پیچ ظریف 5 میلیمتری سایز M1.6 محکم کن. بریم سراغ چرخهای هرزگرد. چرخهای کوچیک TPU رو داخل بازوهای پرینتشده بذار و یه تیکه سیم مفتولی استیل 1.5 میلیمتری رو به عنوان محور از وسطشون رد کن. حالا هر کدوم از بازوها رو با دو تا پیچ 6 میلیمتری M3 به شاسی اصلی ببند. این چرخها باید خیلی روان بچرخن تا جلوی لق زدن ربات داخل کره رو بگیرن.
تو مرحله بعد، دوازده تا الایدی 3 میلیمتری رو روی برد حلقهای (که مقاومتهاش رو قبلا لحیم کردی) قرار بده و پایههاشون رو لحیم کن. پایههای اضافه رو بچین و با دو تا سیم، برد حلقهای رو به پدهای خروجی الایدی خارجی روی برد اصلی متصل کن. حالا میتونی برد حلقهای رو با چسب قطرهای سر جاش محکم کنی و لنز دوربین رو طوری قرار بدی که دقیقا از سوراخ وسطش بیرون بزنه.
برای ساخت چرخهای اصلی، تایرهای TPU رو روی توپیهای پلاستیکی (PLA) بکش. این ترکیب خیلی فیت و محکم میشه. بعد توپیها رو مستقیما و بدون هیچ چسبی روی شفت موتورها فشار بده. این کار بهت اجازه میده تا بعدا بتونی فاصله چرخها رو با بدنه کره تنظیم کنی تا ربات گیر نکنه.
برای نصب باتری هم کافیه دو تا بست کمربندی کوچیک رو از سوراخهای نگهدارنده رد کنی و باتری رو محکم ببندی. یه وزنه حدودا 7 گرمی (یا هر وزنهای که تعادل رو بهتر میکنه) رو هم زیرش قرار بده. تو قدم آخر سوکت باتری رو به برد متصل کن.
آمادهسازی پوسته کروی ربات
اگه روی قطعات پرینتشده متن یا علامتی حک شده، میتونی با کمک یه خلال دندون و کمی رنگ یا ماژیک، داخل حروف رو رنگ کنی تا ظاهر رباتت خیلی حرفهایتر بشه. برای پوسته بیرونی ربات همونطور که گفتیم از توپهای تزئینی پلاستیکی دوتکه استفاده میکنیم.
این توپها معمولا از وسط دو نیم میشن و روی هم چفت میشن تا یه کره کامل رو بسازن. اما یه زائده پلاستیکی (حلقه آویز) روی اونها وجود داره که برای کار ما مزاحمه و نمیذاره توپ درست قل بخوره. باید با یه انبردست یا مینیفرز این زائده رو کاملا صاف کنی و سمباده بکشی تا سطح کره یکدست بشه.
حالا کافیه کلید ربات رو روشن کنی، اون رو داخل یکی از نیمکرهها بذاری و نیمه دوم رو روش چفت کنی. ظاهر فیزیکی گجت توپی ما کاملا آماده است!
برنامهنویسی و آپلود کد روی ESP32
خیلی خب، بریم سراغ بخش جذاب نرمافزاری و زنده کردن ربات! ما اینجا از یه سورسکد آماده و فوقالعاده قدرتمند به اسم ESP32-CAM_MJPEG2SD استفاده میکنیم. این برنامه در واقع یه اپلیکیشن تحت وب برای دوربینهای ESP32 محسوب میشه که امکانات بینظیری داره و برای ساخت دوربینهای مداربسته دستساز و ماشینهای کنترلی خیلی محبوبه.
ویژگی اصلی این کد، تشخیص حرکت بر اساس پردازش تصویره و میتونه با دیدن حرکت، ضبط ویدیو رو شروع کنه. علاوه بر این، از سنسورها و قطعات جانبی مختلفی مثل درایور موتور پشتیبانی میکنه و حتی قابلیت یادگیری ماشین برای تشخیص اشیاء خاص رو هم تو دل خودش داره! کافیه فایل زیپ این کد رو دانلود کنی. بعد از خارج کردن از حالت فشرده، عبارت master- رو از اسم پوشه پاک کن. فایل اصلی با پسوند ino.
رو باز کن تا نرمافزار آردوینو (Arduino IDE) اجرا بشه. میبینی که همه فایلهای وابسته تو تبهای جداگانه باز میشن. برو به تب `appGlobals`.
تو بخش انتخاب برد، همه بردها رو کامنت کن (ابتدای خط // بذار) و فقط خط مربوط به برد XIAO ESP32S3 رو فعال نگه دار. کمی پایینتر بیا و مقدار `INCLUDE_PERIPH` رو روی `true` تنظیم کن.
همین کار رو برای `INCLUDE_MCPWM` هم انجام بده تا قابلیت راهاندازی و کنترل موتورها فعال بشه. حالا برو به تب Peripherals. تو قسمت مانیتورینگ باتری و زیر تابع battery task (حدود خط 309)، عبارت `buzzerAlert(true);` رو تایپ کن. این کار باعث میشه وقتی ولتاژ باتری از حد تعیینشده پایینتر اومد، بازر شروع به بوق زدن کنه.
به بقیه قسمتهای کد نیازی نیست دست بزنی. ربات رو با کابل USB به کامپیوترت وصل کن و از منوی Tools این تنظیمات رو چک کن:
- برد رو روی XIAO ESP32S3 تنظیم کن.
- گزینه USB CDC on boot رو فعال (Enable) کن.
- برای Partition Scheme گزینه Default with spiffs (3MB APP/1.5MB SPIFFS) رو انتخاب کن.
- گزینه PSRAM رو روی OPI PSRAM قرار بده.
- پورت COM مناسب رو انتخاب کن.
دکمه آپلود رو بزن و چند دقیقه صبر کن تا برنامه کاملا روی ماژول نوشته بشه. حالا یه کارت حافظه MicroSD بردار و پوشه Data (که همراه با کد اصلی دانلود کردی) رو روش کپی کن. این کارت حافظه هم تنظیمات ربات رو نگه میداره و هم ویدیوها روش ذخیره میشن. کارت حافظه رو داخل شیار ماژول ESP32 قرار بده و ربات رو روشن کن تا بریم برای راهاندازی اولیه.
راهاندازی پنل کنترل تحت وب
ربات رو روشن کن. ماژول تو این حالت یه نقطه اتصال وایفای (Access Point) میسازه. با گوشی یا لپتاپ به وایفای ربات متصل شو.
مرورگر رو باز کن و آیپی پیشفرض `192.168.4.1` رو وارد کن. یه پنل مدیریت حرفهای برات باز میشه. با زدن روی دکمه `Start Stream` میتونی تصویر زنده دوربین رو ببینی.
برای تکمیل تنظیمات، روی `Edit Config` کلیک کن. اسکرول کن پایین تا برسی به بخش `Peripherals`. گزینه `Remote Control` رو فعال کن.
پین مربوط به بازر رو روی عدد 6 تنظیم کن و فعالش کن تا موقع تشخیص حرکت یا باتری ضعیف به مدت 1 ثانیه بوق بزنه. فاصله بررسی ولتاژ رو روی 1 دقیقه، آستانه ولتاژ پایین رو روی 3.5 و پین مانیتورینگ رو روی 5 تنظیم و فعال کن.
تو بخش `RC Config`، پین چراغ ربات رو روی 43 و پینهای موتور رو به ترتیب روی اعداد 1، 4، 2 و 3 قرار بده. سرعت حرکت رو هم میتونی همینجا محدود کنی. حالا برو بالای صفحه، تغییرات رو Save کن و روی Reboot بزن. با این کار ماژول ریستارت میشه و باید دوباره به وایفای اون متصل بشی.
صفحه رو رفرش کن. حالا روی آیکون دسته بازی (Game Controller) بزن تا جویاستیکهای کنترل روی صفحه ظاهر بشن؛ یکی برای حرکت به جلو و عقب و اون یکی برای چرخش به چپ و راست. دکمهای هم برای تمامصفحه کردن تصویر وجود داره که حس کنترل اولشخص بهتری بهت میده.
با زدن روی آیکون لامپ میتونی چراغهای ربات رو روشن و خاموش کنی. اگه میخوای شدت نور رو هم تنظیم کنی، کافیه پین مربوط به لامپ رو از بخش RC Config به بخش Peripherals منتقل کنی تا یه اسلایدر برای تنظیم نور به انتهای پنل کنترل دوربین اضافه بشه.
این پنل قابلیت تشخیص حرکت هم داره که اگه فعالش کنی، با رد شدن یه جسم از جلوی دوربین، ربات اتوماتیک شروع به ضبط ویدیو میکنه و میتونی فایلها رو مستقیم از تب Playback دانلود کنی یا مموریکارت رو به کامپیوتر بزنی.
اگه ولتاژ باتری به 3.5 ولت برسه، بازر تا زمانی که ربات رو خاموش کنی بوق ممتد میزنه. وقتی ربات رو به شارژ میزنی باید روشن باشه و موقع شارژ کامل، ولتاژ تو پنل حدود 4 تا 4.2 ولت رو نشون میده.
تو بخش `Camera Control` میتونی کیفیت تصویر رو تغییر بدی. رزولوشن CIF فریمریت بالا (30 فریم) ولی کیفیت پایینی داره. رزولوشن UXGA کیفیتش عالیه اما فریمریت میآد روی 5.
بهترین حالت رزولوشن SVGA هست که تعادل خیلی خوبی بین کیفیت تصویر و روانی حرکت داره. الان همهچیز آمادهست؛ بریم ربات رو روی زمین تست کنیم!
کالیبره کردن و بالانس وزن ربات کروی
کنترل ربات خیلی لذتبخش و سادهست. با اسلایدر سمت راست میتونی ربات رو درجا بچرخونی و با اسلایدر چپ به جلو و عقب حرکتش بدی. اگه هر دو جویاستیک رو با هم حرکت بدی، ربات در حالی که به جلو میره، مسیرش رو هم کج میکنه.
احتمالا تو اولین تست متوجه میشی که ربات خیلی لق میزنه یا حتی داخل کره وارونه میشه! دلیلش اینه که مرکز ثقلش درست نیست و به وزنههای سنگینتری تو قسمت پایین نیاز داره. میتونی از هر قطعه فلزی سنگینی که تو خونه داری (مثل مهرههای بزرگ، واشر یا حتی آهنربا) استفاده کنی و زیر محفظه باتری ببندیش.
برای مثال، وزنه فلزی که من اضافه کردم حدود 50 گرم وزن داشت. با احتساب باتری 8 گرمی و یه وزنه 7 گرمی دیگه، وزن کل بخش پایینی سنگین شد. خود شاسی ربات هم حدود 67 گرمه که با پوسته کروی بیرونی، وزن کل ربات به چیزی حدود 180 گرم میرسه.
بعد از اضافه کردن وزنههای سنگینتر، تفاوت حرکت رو کاملا حس میکنی. هرچی وزن قسمت پایینی بیشتر باشه (البته بدون اینکه به دیواره کره گیر کنه)، ربات خیلی روانتر و بدون لرزش قل میخوره و در نتیجه تصویر دوربینی که روی گوشی میبینی هم خیلی پایدارتر میشه.
تست حرکت ربات توپی تو محیطهای مختلف
حالا که ربات کاملا تنظیم و بالانس شده، وقتشه تو محیطهای مختلف چالش رو براش سختتر کنیم. روی کاشی و پارکتهای چوبی خیلی نرم و سریع حرکت میکنه. اما بهترین سطح برای این ربات، فرش و موکته! چون هم چسبندگی خوبی به چرخها میده و هم به خاطر نرم بودنش، هیچ خط و خشی روی پوسته پلاستیکی شفاف کره نمیافته.
اگه ببریش بیرون از خونه، روی چمن و حتی ماسه هم میتونه قل بخوره؛ هرچند که ماسههای خیلی نرم ممکنه سرعتش رو کم کنن. حتی میتونه روی آبهای کمعمق هم حرکت کنه اما یه مشکل بزرگ وجود داره؛ این ربات ضدآب نیست و قطرات آب خیلی راحت از درز دو نیمکره وارد مدار میشن.
بنابراین اصلا پیشنهاد نمیکنم اون رو نزدیک محیطهای خیس ببری، مگر اینکه درزهای کره پلاستیکی رو با چسب آکواریوم، سیلیکون یا نوار چسبهای محکم کاملا آببندی کنی تا قطعات الکترونیکی نسوزن.
با چیدن چند تا لیوان یا ساختن یه رمپ کوچیک با کارتن، میتونی یه پیست مانع بسازی و مهارت کنترل کردنت رو محک بزنی. قابلیت چرخش درجا بهت این امکان رو میده که از تنگترین مسیرها هم خیلی راحت عبور کنی.
هدایت ربات از طریق دوربین اولشخص (FPV)، حس بینظیری از غوطهور شدن تو محیط رو بهت میده؛ انگار واقعا خودت داخل اون توپ نشستی و داری رانندگی میکنی!
با یه باتری 250 میلیآمپری، ربات حدود 30 دقیقه مداوم حرکت میکنه. اگه فضای خالی داشتی میتونی از یه باتری 500 میلیآمپری استفاده کنی تا زمان بازیت به یک ساعت برسه. برد وایفای این ربات هم تو فضای باز حدود 50 متره که با یه آنتن قویتر میتونه تا 100 متر هم افزایش پیدا کنه.
آمادهای این گجت خفن رو بسازی؟
ساخت این ربات کروی یکی از اون پروژههاییه که هم تو بخش الکترونیک و برنامهنویسی و هم تو بخش مونتاژ مکانیکی، کلی نکته جدید و کاربردی بهت یاد میده و نتیجه نهایی هم یه گجت کنترلی بینهایت سرگرمکنندهست که مشابهش رو کمتر جایی پیدا میکنی.
امیدوارم از این آموزش اختصاصی آیسیمدار لذت برده باشی. وقتی قدمبهقدم با این مسیر پیش بری، خیلی زود یه ربات توپی بامزه داری که داره تو خونه میچرخه و میتونی از دید اون دنیای اطرافت رو جستجو کنی. اگه تو هر مرحله از مونتاژ قطعات، تنظیم وزنهها یا برنامهنویسی ESP32 سوالی برات پیش اومد، حتما تو بخش نظرات برامون بنویس تا با هم حلش کنیم.
فایلهای پیوست
تو میتونی اولین سازنده باشی!
اگه پروژه رو ساختی به اشتراک بزار و اعتبار هدیه بگیر
این آموزش با استانداردهای اختصاصی آیسیمدار بازنویسی و بهینهسازی شده و تمامی حقوق انتشار آن متعلق به این مجموعه است و در صورت کپی یا بازنشر پیگرد قانونی خواهد داشت.








































گفتگوهای کاربران
هنوز نظری ثبت نشده؛ تو شروع کن!
هنوز نظری ثبت نشده؛ تو شروع کن!