ربات هوشمند وال-ای با ESP32
چه چیزی جذابتر از داشتن یک ربات کوچیک، بامزه و هوشمند روی میز کارت؟ رباتی که هم با گوشی کنترل بشه، هم بتونه موانع رو تشخیص بده و هم دقیقا شبیه شخصیت دوستداشتنی WALL-E طراحی شده باشه.
توی این پروژه جذاب از آیسیمدار، میخوایم ربات SCOUT-E رو بسازیم. این ربات روی شنی (زنجیر چرخ) حرکت میکنه و بازوها و سرش کاملا متحرک هستن. مغز متفکر این پروژه یک برد ESP32 قدرتمنده که با زبان MicroPython برنامهنویسی میشه و به راحتی با بلوتوث به گوشی اندرویدی متصل میشه تا بتونی هدایتش کنی.
برای ساخت این ربات از دو موتور گیربکس N20، سه تا سرووموتور، یک سنسور اولتراسونیک و یک نمایشگر OLED برای نمایش چهره ربات استفاده میکنیم. تمام قطعات بدنه هم با پرینتر سهبعدی چاپ میشن. پس اگر به رباتیک، برنامهنویسی و پرینت سهبعدی علاقه داری، این پروژه دقیقا برای تو ساخته شده. بریم قطعات رو آماده کنیم و این دوست کوچیک رو خلق کنیم!
- آمادهسازی مدار و سیمکشی
- کدنویسی با MicroPython
- چاپ سهبعدی قطعات
- مونتاژ مکانیکی
قطعات موردنیاز
- هویه و سیم لحیم
- سیمچین و سیملختکن
- پیچگوشتیهای ظریف (چهارسو و دوسو)
- پنس (برای جاگذاری قطعات ریز خیلی کاربردیه)
- دمباریک یا انبردست کوچیک
- مولتیمتر (برای تست ولتاژ و اتصال کوتاه)
- کابل USB برای اتصال ESP32 به کامپیوتر
- کامپیوتر برای فلش کردن و کدنویسی
- پرینتر سهبعدی (برای چاپ بدنه ربات)
- فیلامنت PLA (برای بدنه اصلی)
- فیلامنت منعطف TPU 95A (برای چاپ زنجیر چرخها)
- چسب حرارتی یا چسب دوطرفه قوی
- 6 عدد آهنربای دایرهای 4 در 2 میلیمتر (برای اتصال مگنتی درپوش)
- پیچ و مهرههای سایز ریز (ماشینی)
- خمیر قلع (برای لحیمکاری برد SMD)
- ماژیک فلاکس (اختیاری ولی به شدت پیشنهاد میشه)
- هیتر هوای گرم (سشوار صنعتی) برای مونتاژ SMD
- سیمهای جامپر برای اتصالات موقت
- کیت وارنیش حرارتی یا چسب برق
- برد توسعه ESP32 (فقط در صورتی که از PCB اختصاصی استفاده نمیکنی)
- 2 عدد ماژول فاصله سنج اولتراسونیک HC-SR04
- 3 عدد سرووموتور MG90S (دو تا برای بازوها، یکی برای سر)
- نمایشگر OLED سایز 0.96 اینچ (I2C)
- ماژول کاهنده ولتاژ LM2596
- ماژول درایور موتور L298N
- 2 عدد موتور گیربکس N20
- پک باتری لیتیومی 7.4 ولت (حدود 2000 میلیآمپر)
- کلید راکر روشن/خاموش
- کانکتورهای JST
- قطعات SMD (طبق لیست BOM برای ساخت PCB اختصاصی)
- فیبر سوراخدار (پرفبرد) در صورت عدم استفاده از PCB
- صبر و حوصله بینهایت!
چاپ سهبعدی قطعات بدنه ربات
اولین قدم برای ساخت ربات SCOUT-E، پرینت گرفتن قطعات بدنه است که همه اونها رو توی نرمافزار Fusion 360 با دقت طراحی کردم. برای شروع باید قطعات زیر رو پرینت بگیری:
- بدنه اصلی
- درپوش
- سر ربات
- 2 عدد بازو
- پایههای کناری چرخها (چپ و راست)
- 2 عدد چرخ محرک (متصل به موتور)
- 4 عدد چرخ هرزگرد
- 2 عدد زنجیر شنی (تسمه) از جنس TPU
- 2 عدد پایه نگهدارنده موتور
تنظیمات پیشنهادی پرینتر
من تمام این قطعات رو با تنظیمات پیشفرض نرمافزار Bambu Studio پرینت گرفتم و نیازی به تغییرات خاصی نبود.
- برای قطعات PLA (بدنه، چرخها، سر و درپوش): ارتفاع لایه 0.2 میلیمتر، ضخامت دیواره و تراکم استاندارد.
- برای زنجیرها (TPU): پروفایل استاندارد TPU 95A که خودش سرعت پرینت رو پایین میاره تا فیلامنت نرم به درستی اکسترود بشه.
دقت طراحی قطعات طوریه که خطای پرینتر رو پوشش میده، پس با اکثر پرینترهای خونگی به راحتی میتونی اونها رو چاپ کنی. فایلهای STL تو بخش ضمایم قرار دارن. اگر دیدی پرینترت فیلامنت TPU رو خوب تزریق نمیکنه، سرعت چاپ رو یکم پایینتر بیار.
مدار الکترونیکی؛ از PCB اختصاصی تا سیمکشی دستی
برای بخش الکترونیک این پروژه سه تا راه پیش رو داری. اصلا نگران شلوغی سیمها نباش؛ قاب ربات دقیقا برای همین طراحی شده که این شلوغیها رو بپوشونه.
روش اول: استفاده از PCB اختصاصی (پیشنهاد ویژه)
این روش تمیزترین و پایدارترین حالت ممکنه. فایلهای گربر مدار طراحی شده و میتونی اون رو مستقیم برای شرکتهای تولید PCB بفرستی تا برات چاپ کنن. فایلهای مورد نیاز برای تولید مدار شامل موارد زیر میشه:
- فایل Gerber (برای چاپ برد)
- فایل BOM (لیست دقیق قطعات)
- فایل Pick-and-place (برای مونتاژ ماشینی قطعات)
اگر قصد داری فقط برد خام رو سفارش بدی و خودت قطعات رو مونتاژ کنی، هزینهات خیلی کمتر میشه. مخصوصا کانکتورهای JST-XH رو اگر خودت لحیم کنی خیلی به صرفهتره. قبل از سفارش قطعات از فروشگاهها، حتما لیست BOM رو چک کن تا مطمئن بشی همه پارتنامبرها موجود هستن.
- مدار رو با لیست قطعات تطبیق بده.
- قطعات SMD رو روی خمیر قلع قرار بده و با هیتر لحیم کن.
روی مدار دو تا پد به نامهای TP1 و TP2 وجود داره که برای اتصال کابل باتری در نظر گرفته شدن (TP1 مثبت و TP2 منفی). حواست باشه که سیمهای باتری رو برعکس نزنی.
- خمیر قلع رو روی پدهای SMD بزن.
- قطعات رو با پنس سر جای خودشون بذار.
- با هیتر هوای گرم قطعات رو لحیم کن.
- در آخر قطعات دیپ (مثل کانکتورها و پورت USB) رو با هویه معمولی لحیم کن.
با این روش مدارت کاملا حرفهای و بدون قطعی کار میکنه. بعد از مونتاژ، اول مدار رو با کابل USB و بعد با باتری (با اتصال ماژول LM2596) تست کن. اگر الایدی مدار روشن نشد، سریع باتری رو قطع کن چون احتمالا اتصال کوتاه داری.
روش دوم: استفاده از برد سوراخدار (کار راهانداز اما زمانبر)
اگر نمیخوای PCB چاپ کنی، میتونی از پرفبرد استفاده کنی. تمام قطعات و ماژولها رو روی برد بچین و پایهها رو طبق نقشه شماتیک به هم سیمکشی کن. حتما دقت کن که شماره پینهایی که تو کد برنامه نوشته شده، دقیقا با سیمکشی تو یکی باشه. چون بردهای توسعه ESP32 پیناوتهای مختلفی دارن، ممکنه جای پایهها با نقشه شماتیکی که من گذاشتم کمی فرق کنه.
حتما قبل از سیمکشی، نقشه پینهای برد ESP32 خودت رو از اینترنت پیدا کن تا به اشتباه سیمها رو به پینهای سیستمی (مثل پین EN) وصل نکنی.
- ماژولها (ESP32، درایور، LM2596) رو روی برد سوراخدار قرار بده.
- برای ماژولها از پینهدر مادگی استفاده کن تا قابل تعویض باشن.
- سیمکشیها رو با سیمهای کوتاه و تمیز انجام بده.
- کانکتورهای JST رو برای باتری، سنسورها و سرووموتورها لحیم کن.
این روش برای نمونهسازی عالیه، ولی باید خیلی مراقب لحیمسردی و اتصالی باشی.
روش سوم: سیمکشی مستقیم (فقط در مواقع ضروری)
این سختترین و شکنندهترین روشه که توش باید سیمها رو مستقیما به پایههای ماژولها لحیم کنی. نتیجه کار یک کلاف سردرگم از سیمها میشه. باز هم تأکید میکنم که پینهای متصل شده باید با کدهای برنامه همخونی داشته باشن. پیناوت برد خودت رو چک کن تا اتصالات رو اشتباه نزنی. از پینهای سیستمی استفاده نکن.
- پینهدرهای ماژولها رو دربیار تا جا کمتر بگیرن.
- سیمها رو مستقیم به پدها لحیم کن.
- روی اتصالات رو با چسب حرارتی یا وارنیش بپوشون تا قطع نشن.
- همه اتصالات رو دو بار چک کن.
تو این روش نیازی به کانکتور JST نداری، اما دوام و پایداری مدار به شدت میاد پایین.
مونتاژ قطعات مکانیکی و الکترونیکی ربات
حالا میرسیم به جذابترین بخش ماجرا! آروم پیش برو و هر مرحله رو دقیق انجام بده تا رباتت به بهترین شکل سر هم بشه.
1. نصب پایههای موتور
- پایههای موتور رو با پیچهای 12 میلیمتری M2.5 به پایین بدنه متصل کن.
- دقت کن که سوراخ شیاردار (قابل تنظیم) باید به سمت عقب ربات باشه؛ این قسمت همون کشنده و تنظیمکننده شنی ربات ماست.
2. نصب موتورهای گیربکس N20
- هر موتور رو تو جایگاه خودش قرار بده.
- یادت نره که سیمهای موتور باید از قبل لحیم شده باشن.
- گیره نگهدارنده موتور رو روش بذار تا سوراخهاش با بدنه تراز بشه.
- با پیچ 20 میلیمتری M3 و یک واشر و مهره از داخل بدنه، موتور رو سفت کن.
3. نصب سرووموتورها
- بهتره سیمهای سرووها رو از قبل با کانکتور JST-XH آماده کرده باشی.
- قبل از نصب، شفت همه سرووها رو روی زاویه 90 درجه (مرکز) تنظیم کن.
- سرووها رو از بیرون بدنه به سمت داخل جا بزن.
- با پیچهای خود سروو یا چسب حرارتی محکمشون کن.
- دقت کن شفت سرووهای کناری به سمت جلو و شفت سرووی سر به سمت بالا باشه.
- بازوها رو طوری به سرووهای کناری متصل کن که رو به جلو باشن.
4. نصب قطعات روی سر ربات
- نمایشگر OLED رو با چهار تا پیچ 6 میلیمتری M2 و مهره پشت قاب سر ببند.
- سنسور اولتراسونیک HC-SR04 رو از سوراخهای چشمی رد کن.
- پشت سنسور رو با کمی چسب حرارتی فیکس کن.
5. نصب چرخها
- چرخ محرک رو مستقیم روی شفت D شکل موتور N20 فشار بده.
- چرخهای هرزگرد رو به این ترتیب ببند (از بیرون به داخل): پیچ M3 ← واشر ← چرخ ← مهره ← واشر ← سوراخ شاسی بدنه ← واشر ← مهره
- پیچ رو طوری ببند که چرخ بتونه کاملا آزاد و روان بچرخه.
6. جا زدن زنجیرهای شنی
- زنجیرهای منعطف TPU رو دور چرخها بنداز.
- پیچ تنظیم (تنشدهنده) رو تا جایی سفت کن که شنی حدود 2 تا 3 میلیمتر خلاصی عمودی داشته باشه.
- اگر خیلی سفت باشه موتور زور میزنه و اگر خیلی شل باشه شنی درمیاد.
7. نصب آهنرباها
- آهنرباهای 4 در 2 میلیمتری رو داخل سوراخهای درپوش و بدنه قرار بده.
- قبل از چسب زدن، قطبها رو چک کن که همدیگه رو جذب کنن.
- اگر آهنربا سخت جا رفت، با نوک هویه گرم پلاستیک رو کمی نرم کن و آهنربا رو فشار بده داخل.
سیمکشی و اتصالات نهایی
8. آمادهسازی کانکتورها
کانکتورهای JST-XH رو به قطعات زیر متصل کن:
- نمایشگر OLED
- سنسور اولتراسونیک
- تمام سرووموتورها
- پینهای کنترلی درایور L298N (یعنی پینهای ENA, IN1, IN2, IN3, IN4, ENB)
این کار باعث میشه اگر قطعهای خراب شد، راحت بتونی عوضش کنی.
9. اتصال موتورها به درایور L298N
- سیمهای دو تا موتور N20 رو تو ترمینالهای OUT1 و OUT2 درایور پیچ کن.
- اگر بعدا دیدی چرخ برعکس میچرخه، جای این دو تا سیم رو با هم عوض کن.
10. تامین برق درایور موتور
- دو تا سیم به ترمینالهای 12 ولت و GND درایور وصل کن و سر دیگهشون رو کانکتور JST بزن.
- این کانکتور رو به پورت مخصوص L298N روی مدار اصلی (PCB) وصل کن.
11. تنظیم و اتصال کاهنده ولتاژ LM2596
- به ورودی و خروجی ماژول LM2596 کانکتور JST متصل کن.
- خیلی مهم: قبل از اینکه خروجی این ماژول رو به برد اصلی وصل کنی، باتری رو به ورودیش بزن و با چرخوندن پتانسیومتر آبی رنگ، ولتاژ خروجی رو با مولتیمتر دقیقا روی 5 ولت تنظیم کن. ولتاژ بالاتر برد اصلی رو میسوزونه!
- حالا ورودی ماژول رو به پورت "TO LM2596" و خروجیش رو به "FROM LM2596" روی برد اصلی وصل کن.
- ماژول رو با چسب دوطرفه تو یک گوشه از بدنه بچسبون.
12. نصب برد اصلی (PCB)
- برد اصلی رو با چسب حرارتی به دیواره پشتی بدنه بچسبون.
- مطمئن شو که پورت USB و دکمهها دقیقا روبهروی سوراخهای درپوش پشتی قرار میگیرن.
13. آخرین اتصالات
- سوکتهای 4 پین نمایشگر و سنسور رو به برد متصل کن.
- سوکتهای 3 پین سرووها رو جا بزن.
- سوکت 6 پین درایور L298N رو هم دقیقا طبق نقشه وصل کن.
- قبل از روشن کردن ربات، یک بار دیگه قطب مثبت و منفی همه سوکتها رو چک کن.
کدنویسی، راهاندازی و اتصال بلوتوث
از اونجایی که قراره این ربات رو با گوشی کنترل کنیم، باید براش برنامهنویسی کنیم. من برای این کار زبان MicroPython رو انتخاب کردم چون:
- نوشتن و خوندن کدهاش خیلی راحته.
- کتابخونههای فوقالعاده متنوعی داره.
- خیلی محبوبه و مستندات زیادی براش هست، پس بعدا میتونی امکانات رباتت رو راحت ارتقا بدی.
با تغییر کدها میتونی رفتار ربات رو کاملا عوض کنی. برای فلش کردن و نصب کتابخونهها میتونی از تصاویر راهنما کمک بگیری. تذکر مهم: تو این مرحله برای جلوگیری از آسیب به برد، حتما ربات رو با کابل USB تغذیه کن و باتری رو وصل نکن.
1. آمادهسازی نرمافزار Thonny
- نرمافزار Thonny IDE رو دانلود و نصب کن.
- نرمافزار رو باز کن.
- ربات رو با کابل USB-C به کامپیوتر وصل کن و اگر کلید پاور داره روشن کن.
- از منوی Tools گزینه Options و بعد تب Interpreter رو انتخاب کن.
- مفسر رو روی MicroPython (ESP32) تنظیم کن.
- پورت متصل شده رو از لیست انتخاب کن.
2. نصب فریمور میکروپایتون روی ESP32
اگر برد تو خام هست، باید یک بار میکروپایتون رو روش فلش کنی.
- تو همون تب Interpreter روی لینک Install or update MicroPython کلیک کن.
- مدل برد رو ESP32 و فریمور رو روی حالت espressif قرار بده.
- اجازه بده خود Thonny آخرین نسخه پایدار رو دانلود کنه.
- روی Install کلیک کن. (اگر ارور داد، موقع شروع نصب دکمه BOOT روی برد رو نگه دار).
- وقتی نصب تموم شد، تو بخش Shell پایین نرمافزار کلمه print("Hello") رو تایپ و اینتر کن. اگر جواب Hello رو دیدی یعنی همهچیز درسته.
3. آپلود کدهای ربات
حالا که میکروپایتون نصبه، فایلهای کنترل ربات رو آپلود میکنیم.
- فایلهای main.py و درایورها (ssd1306.py, servo_library.py, hcsr04.py) رو تو Thonny باز کن. برای انتقالشون به برد، کلیدهای Ctrl + Shift + S رو بزن و گزینه MicroPython Device رو انتخاب کن تا روی حافظه ESP32 ذخیره بشن.
- اگر از پرفبرد استفاده کردی، حتما شماره پینهای داخل کد رو با سیمکشی خودت چک کن تا یکی باشن.
- ما به یک کتابخونه بلوتوث به اسم aioble هم نیاز داریم. از منوی Tools برو تو Manage Packages، اسمش رو جستجو کن و Install رو بزن.
- حالا دکمه سبز Run رو بزن. اگر همهچیز درست باشه، سرووها یک تکون میخورن، بازوها و سر میان تو موقعیت 90 درجه (مرکز) و نمایشگر روشن میشه.
- اگر مشکلی داشتی به بخش عیبیابی در پایین مراجعه کن.
4. کنترل ربات با اپلیکیشن موبایل
حالا وقتشه گوشی رو به ربات وصل کنیم.
- فایل APK مخصوص اندروید رو دانلود و نصب کن (نسخه iOS و وب در دست ساخته). برای دسترسی به بلوتوث چند تا مجوز ازت میخواد که تایید کن.
- حالا کابل USB رو جدا کن و باتری رو به ربات وصل کن تا ربات روشن بشه (چراغ سبز برد روشن میشه).
- اپلیکیشن رو باز کن، روی Scan کلیک کن و دستگاه ESP-32 رو انتخاب کن. با اتصال موفق، تصویر یک گیمپد روی گوشی ظاهر میشه.
5. حالا بازی کن!
- از دکمههای جهتنما برای حرکت ربات و از کلیدهای دیگه برای تکون دادن بازوها و سر استفاده کن. اگر ربات موقع روشن شدن یکم پرش داشت کاملا طبیعیه.
عیبیابی و سوالات متداول
اگر تو مراحل ساخت به مشکل خوردی اصلا نگران نباش. تو این بخش رایجترین مشکلات و راهحلهاشون رو بررسی میکنیم. سوال: نرمافزار Thonny ارور ENODEV میده، چیکار کنم؟
جواب: این ارور یعنی برد نمیتونه با نمایشگر OLED ارتباط I2C برقرار کنه. اول مطمئن شو که پینهای SDA و SCL درست وصل شدن و جابهجا نیستن. بعد اتصالات رو چک کن که قطعی، لحیمسردی یا اتصال کوتاه نداشته باشن. سوال: وقتی برد رو وصل میکنم تو نرمافزار Thonny هیچ پورتی نمیشناسه.
جواب: دو تا دلیل داره. اول اینکه ممکنه کابلت فقط کابل شارژ باشه و دیتا رد نکنه؛ با یک کابل دیتای مطمئن تست کن. دلیل دوم اینه که سوکت USB روی خود برد شل شده یا پایههاش قطع شدن که باید با ذرهبین چکش کنی و اگر نیاز بود هویه بکشی. سوال: سرووموتورها صدای تیکتیک یا زوزه میدن!
جواب: این یعنی به سروو فشار میاد و نمیتونه به زاویهای که بهش دستور داده شده برسه، پس مدام زور میزنه. دلیلش اینه که پیچهای بازو یا سر رو خیلی سفت بستی یا قطعات به هم گیر میکنن. پیچها رو کمی شل کن تا حرکت آزاد بشه. سوال: ربات به جای جلو رفتن، دور خودش میچرخه یا برعکس میره.
جواب: این مشکل خیلی ساده است. فقط کافیه جای سیمهای همون موتوری که برعکس میچرخه رو روی ترمینال درایور L298N عوض کنی یا اینکه تو کدها خطوط 99 تا 104 پینهای IN1/2 یا IN3/4 رو برعکس تعریف کنی. سوال: موقع لحیمکاری ترک (مسیر) روی PCB کنده شد، حالا چیکار کنم؟
جواب: اصلا هول نشو! من خودم هم موقع نمونهسازی چند تا مسیر رو کندم. کافیه با یک تکه سیم نازک، بین دو تا قطعهای که اون مسیر به هم وصلشون میکرد پل بزنی و لحیم کنی. روش رو هم چسب حرارتی بریز که محکم بشه. به همین راحتی!
جمعبندی و قدمهای بعدی
تبریک میگم! تو حالا ربات SCOUT-E خودت رو ساختی؛ یک دوست رباتیک کوچیک و دوستداشتنی که صفر تا صدش رو خودت طراحی و مونتاژ کردی. این دستاورد بزرگیه و باید به خودت افتخار کنی.
اگر تو هر بخشی به مشکل خوردی یا حتی تونستی ربات رو با موفقیت بسازی، حتما برامون کامنت بذار. نظرات شما به ما کمک میکنه تا این پروژه رو توسعه بدیم. برای آینده این ربات برنامههای هیجانانگیزی داریم:
- اضافه کردن حالت برنامهریزی: تا بتونی مثل بازیهای کدنویسی کودکان، به ربات دستورات دنبالهدار بدی (مثلا 3 قدم جلو، چرخش به چپ).
- رانندگی خودکار: با استفاده از سنسور اولتراسونیک و ترکیبش با سرووی سر، ربات محیط رو اسکن میکنه و بدون برخورد با موانع راهش رو پیدا میکنه.
- اضافه کردن انیمیشنهای چهره روی نمایشگر OLED تا ربات حس یک موجود زنده رو بیشتر منتقل کنه.
طراحی و ساخت این پروژه برای تیم ما پر از چالش و شببیداری بود، اما وقتی میبینیم بقیه دارن از ساختن این ربات لذت میبرن، خستگی از تنمون بیرون میره.
اگر از این آموزش آیسیمدار لذت بردی، حتما اون رو با دوستات به اشتراک بذار و نظرت رو برامون بنویس. هر بازخوردی از شما، انرژی ما رو برای ساخت پروژههای بعدی چند برابر میکنه.
ما تازه اول راه دنیای الکترونیک و رباتیک هستیم و امیدواریم این پروژه بهت نشون داده باشه که برای ساختن چیزهای خفن، نیازی نیست حتما مهندس باتجربهای باشی. هر اشتباهی تو این مسیر به ما یک درس جدید داد. اگر این ربات حتی یک نفر رو مشتاق کنه تا وارد دنیای ساختوساز بشه، یعنی ما به هدفمون رسیدیم. ممنون که تا آخر این پروژه با تیم آیسیمدار همراه بودی!
فایلهای پیوست
تو میتونی اولین سازنده باشی!
اگه پروژه رو ساختی به اشتراک بزار و اعتبار هدیه بگیر
این آموزش با استانداردهای اختصاصی آیسیمدار بازنویسی و بهینهسازی شده و تمامی حقوق انتشار آن متعلق به این مجموعه است و در صورت کپی یا بازنشر پیگرد قانونی خواهد داشت.








































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