آموزش Espآموزش ESP32آموزش اینترنت اشیاپروژه های Esp

ساخت کنسول بازی رترو با ESP32

بازی های 8 بیتی قدیمی را به یاد دارید؟ احتمالا شما هم اوقات فراغت خود را جلوی یک سیستم بازی ویدیویی یا کامپیوتر قدیمی سپری میکردید. این سیستم ها بسیار نوستالژیک بوده و همه کودکان در آن دوران به آن ها علاقه داشتند. حال گرافیک مدرن و پیشرفته جای آن ها را گرفته است. اما هکچنان عده زیادی به این بازی های کلاسیک علاقه دارند. در حال حاضر تنها راه بازی کردن این بازی ها، شبیه سازها هستند. در این آموزش، به دنبال ساخت دستگاهی هستیم که این بازی های کلاسیک را شبیه سازی کند. این کنسول برای Odroid GO که یک فریمور یا ثابت افزار به روز رسانی شده و همچنین صفحه نمایشگر IPS جدیدی دارد، ساخته میشود. فریمور استفاده شده، نسخه اصلاح شده فریمور ducalex’s retro-go است. در گذشته پروژه مشابهی به نام کنسول بازی با آردوینو و OLED ساخته ایم که میتوانید آن را هم مطالعه کنید.

قطعات لازم

لیستی از قطعات لازم برای ساخت این کنسول بازی را در اختیارتان قرار میدهیم. مدار این پروژه را با ماژول ها و قطعات معمولی طراحی کرده ایم تا پروسه ساخت آن آسان تر شود.

  1. کیت ESP32 Wrover دارای حافظه فلش 16 مگابایت – 1 عدد
  2. ماژول نمایشگر IPS ، 320 در 240 با راه انداز ST7789V – 1 عدد
  3. ماژول شارژر باتری TP4056 با مدار محافظ – 1 عدد
  4. ترانزیستور ماسفت A03401 SMD P-Channel
  5. رم ریدر – 1 عدد
  6. کلید کشویی SMD IP2T – 1 عدد
  7. جک صوتی 3.5 میلی متری PJ-327-A-1 SMD-1 عدد
  8. باتری لیپو 3.7 ولتی
  9. کانکتور باتری 2 پایه JST XH  – 1 عدد
  10. کلیدهای لمسی 6*6*6 میلی متر – 10 عدد
  11. بازر اکتیو 3.3 ولتی – 1 عدد
  12. مقاومت 100 کیلویی -2 عدد
  13. مقاومت 10 کیلویی – 7 عدد
  14. مقاومت 1 کیلویی – 1 عدد
  15. خازن 0.01 میکروفارادی – 3 عدد

مدار کنسول بازی رترو

مدار کامل کنسول بازی رترو با ESP32 مطابق شکل زیر است.

مدار کنسول بازی رترو

این مدار با قطعاتی که به راحتی در قفسه های فروشگاه یافت میشوند، ساخته شده است. اتصالات آن بسیار ساده و قابل فهم هستند. ورودی تغذیه به ماژول TP4056 با مدار محافظ داخلی متصل است. اگر باتری شما مدار محافظ داخلی دارد، میتوانید ماژول TP4056 خود را بدون نیاز به محافظ دیگری استفاده کنید. باتری به خروجی ماژول TP4056 متصل میشود. از اینجا، تغذیه به یک ماسفت P-Channel که در حالت high-side است، وصل میشود. به صورت پیش فرض، گیت این ترانزیستور تا سطح ولتاژ VBAT پول آپ شده است. هنگامی که کلید کشویی روشن میشود، گیت ترانزیستور زمین شده و ماسفت روشن میشود. این مدار ساده به ما اجازه روشن و خاموش کردن کل دستگاه را تنها با استفاده از یک کلید کشویی کوچک میدهد.

توان ماسفت بین دیگر قطعات مدار توزیع میشود. نمایشگر با استفاده از پایه هایSPI  به کیت ESP Wrover متصل است. روشنایی پس زمینه با استفاده از PWM و پایه GPIO14  کنترل میشود. کارت حافظه هم با همان خط SPI متصل میشود.

صدا از پایه GPIO26 گرفته میشود و به جک صوتی 3.5 میلی متری متصل است. میتوانیم از یک جک صوتی برای اتصال هدفون استفاده کنیم، یا از یک بازر با ترمینال سوییچ جک. یک LED به پایه GPIO12  متصل شده تا وضعیت خواندن دیسک را نشان دهد. خنگامی که سیستم مشغول خواندن کارت حافظه است، LED روشن میشود. تمام کلیدها به پایه های مختلف GPIO متصل شده اند. وضعیت این پایه ها برای تشخیص اینکه یک دکمه فشار داده شده است یا نه زیرنظر گرفته میشود.

PCB کنسول بازی رترو

برای ساخت آسان تر پروژه، برای آن یک PCB طراحی کرده ایم. تصویر پایین، ابعاد PCB را نشان میدهد. این طرح، یک   PCB اچ شده خانگی است. ساهت PCB در خانه را میتوانید از اینجا یاد بگیرید. تمام فایل های ضروری برای PCB از لینک GitHub که در انتهای این مطلب قرار داده شده است، قابل دانلود است.

PCB کنسول بازی رترو

تصویر بالا نمای دوبعدی PCB را نشان میدهد.

PCB کنسول بازی رترو

تصویر بالا، نمایش سه بعدی همان PCB است. در مدل سه بعدی، میتوانید محل قرارگیری تمام قطعات را ببینید.

PCB کنسول بازی رترو

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

فریمور کنتور بازی رترو با ESP32

همانگونه که پیشتر اشاره کردیم، فریمور استفاده شده، نسخه اصلاح شده فریمور retro-go  از ducalex است. فریمور اصلی برای کار با نمایشگر ILI9341 کدنویسی شده است. از آنجایی که ما از نمایشگر IPS با راه انداز ST7789V استفاده میکنیم، نمی توانیم نسخه اصلی را به کار بگیریم. خوشبختانه اغلب توابع دو نمایشگر تقریبا شبیه به هم هستند. اما باید در قسمت های مربوط به راه اندازی و تنظیمات گاما (Gamma) در کد تغییراتی ایجاد کرد. سورس کد فریمور اصلاح شده را در لینک Retro-go-ST7789 از GitHub بیابید. برای کار با فریمور، میتوانید از تصویر از پیش ساخته شده استفاده کنید یا خودتان آن را بسازید. میتوانید تصویر از پیش ساخته شده و آماده را از لینکی که در انتهای این مطلب قرار داده شده، دانلود کنید.

سیستم های پشتیبانی شده

  1. نینتندو : NES, SNES, Gameboy, Gameboy Color, Game & watch.
  2. سگا : SG-1000, Master System, Mega drive/Genesis, Game Gear
  3. کلکو : کلکو ویژن
  4. NEC : پی سی انجین PC Engine
  5. آتاری : لینکس
  6. دیگر کنسول ها : DOOM ( تمامی مدها)

ویژگی های فریمور

  1. منو درون گیم
  2. موردعلاقه ها و اخیرا بازی شده ها ثبت میشوند.
  3. پالت های رنگ GB و تنظیم و ذخیره RTC
  4. پالت های رنگ NES، رام های PAL، پشتیبان NSF
  5. گزینه های فیلترینگ و اسکیلینک ( مقیاس بندی) دارد.
  6. کارکرد بهتر و سازگاری بیشتر
  7. قابلیت Fast Forward دارد
  8. سرعت بالا
  9. لانچر قابل تنظیم
  10. کاور هنری دارد و پیش نمایش را ذخیره میکند.
  11. چندین save slot در هر بازی
  12. مدیریت فایل وایفای
  13. و بیشتر!

ساخت فریمور

این فریمور براساس ESP-IDF نوشته شده است. نسخه هایی که در حال حاضر پشتیبانی میشوند، 4.1 تا 4.4 هستند و نسخه پیشنهادی ما به شما 4.3 است. استفاده از هرگونه نسخه به روز شده دیگری از ESP-IDF ممکن است ساخت را با مشکل روبه رو کند. با استفاده از لینک زیر، نسخه 4.3 ESP32 IDF را نصب و پیکربندی کنید.

https://docs.espressif.com/projects/esp-idf/en/release-v4.3/esp32/get-started/index.html

پس از نصب و پیکربندی، پچ های زیر را بر IDF نصب کنید. این پچ ها در مسیر tools/patches یافت شده و میتوانند بر ESP-IDF شما نصب شوند، بدون اینکه دیگر دستگاه ها یا پروژه های شما را خراب کنند.

  1. Sdcard_fix : این پچ برای ODROID-GO و فریمورهای مشابه اجباری است.
  2. Panic-hook : این پچ اختیاری است اما پیشنهاد میشود که آن را نصب کنید. این پچ به کاربران در گزارش خطاها کمک میکند.
  3. Enable_exfat : این پچ، پشتیبان Enable exFAT است. پیشنهاد نمیشود اما اگر به آن نیاز دارید، آن را نصب کنید. ( کار میکند.)

برای نصب این پچ ها باید در ESP-IDF خود یک ترمینال باز کنید. ($IDF_PATH) و دستوررا مطابق شکل اجرا کنید. برای تمام پچ ها این مراحل باید طی شود.

  • patch -p1 < “/path/to/retro-go/tools/patches/ sdcard-fix (esp-idf 4.2 and 4.3).diff “

پس از نصب پچ ها، دستور زیر را از پوشه روت اجرا کرده تا تصویر فریمور را بسازید.

  • ./rg_tool.py release

فلش کردن فریمور

برای فلش کردن فریمور، یکی از روش های زیر را انجام دهید.

  1. استفاده از ESPtool : برای استفاده از ESPtool ابتدا باید از نصب ESP-IDF مطمئن شوید. دستورالعمل های لازم برای نصب ESP-IDF را از قسمت قبل بخوانید. هنگامی که نصب و پیکربندی به اتمام رسید، در همان پوشه تصویر فریمور، یک ترمینال باز کرده و از دستور زیر برای فلش کردن فریمور استفاده کنید.

esptool.py write_flash –flash_size detect 0x0 retro-go_*.img

  1. استفاده از ESP32 Flash download tool : ابتدا این ابزار را دانلود کنید. فایل زیپ را در یک پوشه extract کرده و یر روی فایل .exe دوبار کلیک کنید تا اجرا شود. هنگامی که از شما خواسته شد، از قسمت chip type، ESP32 را انتخاب کرده و بر ok کلیک کنید.

فایل فریمور را با پسوند img انتخاب کرده و آدرس 0*00 را روبه روی آن اضافه کنید. درگاه COM مناسب را انتخاب کرده و بر erase کلیک کنید. هنگامی که پاک شدن حافظه کامل شد، بر START کلیک کرده تا فریمور را فلش کنید.

PCB کنسول بازی رترو

تمام شد. شما آماده اید که از کنسول استفاده کنید. کارت حافظه را وارد کرده و از بازی لذت ببرید.

استفاده از کنسول بازی ESP32

برای استفاده از کنسول کارت حافظه را به FAT32 فرمت کنید. پوشه هایی که نام rom یا romart دارند را در کارت حافظه کپی کنید. توجه داشته باشید که پوشه rom حاوی هیچ گونه بازی نیست. شما باید بازی های مدنظر خود را از منابع دیگر دانلود کرده و آن ها را درپوشه rom مناسب قرار دهید. ( برای مثال، rom  های نینتند در پوشه nes هستند.) میتوانید با ایجاد یک تصویر با پسوند png در ابعاد 160 در 168 (8 بیتی) برای خود کاور هنری یا آرت کاور بسازید که مطابق شکل روبه رو نام گذاری میشود. /romart/nes/A/ABCDE123.png . در اینجا، nes همان پوشه rom بوده و ABCDE123، کد افزونگی چرخشی یا CRC32 بازی است.

برای استفاده از وایفای، باید پیکربندی خود را به فایل /retro-go/config/wifi.json اضافه کنید.

در نهایت به این شکل درخواهد آمد.

{
  "ssid": "my-network",
  "password": "my-password"
}

برای اسفاده از مدیریت فایل، IP دستگاه خود را در منو About پیدا کرده و سپس با کامپیوتر خود برای دسترسی به مدیریت فایل، به آدرس  http://192.168.x.x بروید.

موارد موجود در فایل : سورس کامل

2.1 (7 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

5 نظر

  1. سلام تو رم ریدر میتوان بازی های مانند ماینکرفت فوتبال
    اجرا کرد و میتوان از نمایشگر تی ای تی دیگه استفاده کرد لطفاً پاسخ دهید با تشکر.

  2. سلام مهندس در صورت امکان پروژه درایور براشلس موتور با سنسور حال با استفاده از اردینو رو در برنامه های آموزشی قرار دهید سپاس

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *