ورکشاپ آموزشی - آیسی مدار
رفتن به محتوا

ساعت رومیزی هوشمند با تم بازی پک‌من (Pac-Man)

ابزار و گجت
۰ نظر
۶۰ نفر
کد ۴۴۸۲

بازی‌های کلاسیک همیشه یه حس نوستالژی خاصی دارن و ترکیب کردنشون با پروژه‌های الکترونیکی می‌تونه نتیجه فوق‌العاده‌ای داشته باشه. تو این آموزش قراره یه ساعت رومیزی خیلی جذاب بسازیم که ظاهرش دقیقا مثل دستگاه‌های آرکید قدیمیه و روی صفحه‌نمایشش کاراکترهای بازی معروف پک‌من در حال حرکت هستن. این ساعت فقط یه دکوری ساده نیست؛ بلکه با استفاده از صفحه‌نمایش لمسی، ماژول صدای اختصاصی و قطعات باکیفیت، یه سیستم هوشمند و تعاملی رو روی میزت میاره.

تیم آیسی‌مدار همیشه دنبال ایده‌های خلاقانه‌ایه که بتونی با پرینتر سه‌بعدی یا برش لیزر و چند تا قطعه الکترونیکی، یه محصول نهایی حرفه‌ای بسازی. این پروژه هم دقیقا همین ویژگی رو داره؛ از طراحی بدنه چوبی گرفته تا برنامه‌نویسی آردوینو مگا برای کنترل نمایشگر TFT و تنظیم آلارم بیدارباش. حتی یه سیستم تنظیم خودکار نور صفحه هم براش در نظر گرفتیم تا شبا چشم رو اذیت نکنه.

پس اگه دلت برای بازی‌های رترو تنگ شده و می‌خوای یه ساعت بی‌نظیر برای اتاق یا میز کارت بسازی، ابزار و قطعات رو آماده کن تا این پروژه هیجان‌انگیز رو با هم شروع کنیم.

قطعات موردنیاز

  • برد آردوینو مگا 2560 (Arduino Mega 2560)
  • نمایشگر لمسی 3.2 اینچی رنگی TFT
  • شیلد توسعه نمایشگر لمسی مخصوص آردوینو مگا
  • ماژول ساعت زمان واقعی (RTC) مدل DS3231
  • ماژول ضبط و پخش صدا مدل ISD1820 به همراه اسپیکر
  • ورق‌های چوب MDF با ضخامت‌های 3 و 9 میلی‌متر برای برش لیزر
  • میخ‌های کوچک پنل چوبی (4 عدد)
  • چسب دوقلو و چسب حرارتی
  • ورق‌های سمباده نرم و زبر
  • دریل با مته 3 میلی‌متری
  • کابل USB و یه شارژر موبایل برای تامین برق
  • مقاومت 270 کیلواهم، مقاومت 47 اهم، دیود زنر 3.3 ولت و سنسور نور (LDR) برای بخش تنظیم خودکار نور
مرحله ۱

آماده‌سازی قطعات و ماژول‌های الکترونیکی

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

  1. برد آردوینو مگا 2560 (Arduino Mega 2560)
  2. نمایشگر لمسی 3.2 اینچی رنگی
  3. شیلد توسعه نمایشگر لمسی مخصوص آردوینو مگا (حواست باشه از برندهای متفرقه که با کتابخونه‌ها مشکل دارن استفاده نکنی)
  4. ماژول ساعت زمان واقعی DS3231
  5. ماژول ضبط صدای ISD1820

برای راه‌اندازی این ماژول‌ها باید کدهای آردوینو و کتابخونه‌های گرافیکی مخصوصشون رو دانلود کنی تا نمایشگر و افکت‌های صوتی به درستی کار کنن.

علاوه بر ماژول‌های اصلی، برای ساخت بدنه و سرهم کردن قطعات به یه سری ابزار ساده و وسایل جانبی هم نیاز داری که لیستشون رو در ادامه برات آوردم.

  1. 4 عدد میخ کوچک پنل برای چفت کردن قاب جلو و عقب
  2. چسب دوقلو برای چسباندن لایه‌های چوب
  3. ورق‌های سمباده نرم و متوسط برای پرداخت چوب
  4. دریل مجهز به مته 3 میلی‌متری
  5. کابل USB یک متری
  6. شارژر USB برای تامین برق ساعت
  7. تکه‌های کوچک چوب یا پلاستیک فشرده برای ساخت براکت نگه‌دارنده مدار
  8. چسب حرارتی تفنگی

اگه دوست داری ساعتت رو کنار تخت بذاری، پیشنهاد می‌کنم قطعات بخش تنظیم خودکار نور رو هم تهیه کنی تا نور صفحه تو تاریکی کم بشه.

  1. یک عدد مقاومت 270 کیلواهم
  2. یک عدد دیود زنر 3.3 ولت (نیم وات)
  3. یک عدد مقاومت 47 اهم
  4. سنسور تشخیص نور (LDR)
مرحله ۲

ساخت و مونتاژ بدنه چوبی ساعت

بدنه این ساعت با استفاده از ورق‌های ام‌دی‌اف (MDF) با ضخامت‌های 3 و 9 میلی‌متری ساخته می‌شه. لایه‌های مختلف با دستگاه برش لیزر بریده می‌شن و باید دقیقا روی هم قرار بگیرن تا حجم نهایی شکل بگیره. اول از همه بریم سراغ پنل جلویی.

پنل جلویی بین دو تا حلقه کناری قرار می‌گیره و با چسب دوقلو محکم می‌شه. حواست باشه چسب رو خیلی زیاد نزنی که از لبه‌ها بیرون نزنه و ظاهر کار رو خراب نکنه.

برای قسمت اسپیکر هم می‌تونی یه تکه پارچه یا توری کوچیک روی شیارهای جلویی بچسبونی تا هم صدای آلارم خوب بیرون بیاد و هم ظاهر ساعت قشنگ‌تر بشه.

چهار تا پین چوبی کوچیک رو به گوشه‌های داخلی پنل جلو بچسبون طوری که حدود یک سانتی‌متر بیرون بزنن. این پین‌ها قراره داخل پنل پشتی چفت بشن تا هر وقت خواستی بتونی ساعت رو باز کنی.

حالا نوبت پنل پشتیه. بخش پشتی ساعت از روی هم قرار گرفتن پنج تا حلقه چوبی ساخته می‌شه. این حلقه‌ها رو هم با دقت روی هم تراز کن و با همون چسب دوقلو بچسبون. با دریل سوراخ‌های 3 میلی‌متری رو دقیقا روبروی پین‌های پنل جلویی روی قاب پشت ایجاد کن تا این دو تا قطعه به راحتی توی هم چفت بشن.

بعد از اینکه بدنه کامل شد، نوبت به سمباده‌کاری می‌رسه. می‌تونی چوب رو با رنگ‌های دلخواهت رنگ کنی یا مثل مدل ما، فقط یه لایه اسپری کیلر روش بزنی تا همون بافت طبیعی و سوختگی‌های لبه لیزر حفظ بشه و حس یه محصول کلاسیک رو بهت بده.

چون چوب ام‌دی‌اف رنگ و روغن رو به خودش جذب می‌کنه، احتمالا لازمه 3 یا 4 دست اسپری کیلر بزنی تا سطح کار کاملا براق و مهروموم بشه.

اگه به پرینتر سه‌بعدی دسترسی داری و کار با چوب برات سخته، می‌تونی فایل‌های بدنه پلاستیکی این پروژه رو پیدا کنی و کل قاب رو با فیلامنت پرینت بگیری.

مرحله ۳

مونتاژ و سیم‌کشی مدارهای الکترونیکی

حالا بریم سراغ بخش هیجان‌انگیز الکترونیک. اول از همه می‌ریم سراغ ماژول ساعت. ماژول ساعت (RTC) رو پشت برد آردوینو مگا قرار بده.

برای اینکه اتصالی پیش نیاد، حتما از یه تیکه فوم و چسب حرارتی برای عایق کردن و محکم کردنش استفاده کن. پایه‌های تغذیه این ماژول رو مستقیما به 5 ولت و GND آردوینو لحیم کن. قدم دوم نصب ماژول صداست.

ماژول ضبط صدا هم دقیقا به همین روش پشت آردوینو نصب می‌شه. پین کنترل صدای این ماژول باید به پایه D8 آردوینو متصل بشه تا بتونیم فرمان پخش آلارم رو از طریق کدهای برنامه صادر کنیم.

اگه می‌خوای نور صفحه‌نمایش تو شب به طور خودکار کم بشه، باید این مرحله اختیاری رو انجام بدی. (اگه برات مهم نیست می‌تونی این بخش رو رد کنی).

نور پس‌زمینه (Backlight) نمایشگرهای TFT معمولا مستقیم به 3.3 ولت وصله و با کد زدن تنظیم نمی‌شه. برای کنترلش باید مسیر سخت‌افزاریش رو تغییر بدیم و به یکی از پایه‌های PWM آردوینو وصلش کنیم. این مراحل رو با دقت انجام بده تا به نمایشگر آسیبی نرسه:

اول دو تا سوراخ کوچیک پشت قاب ساعت ایجاد کن و سنسور نور (LDR) رو ازش رد کن و با چسب حرارتی از داخل محکم کن تا نور محیط رو تشخیص بده. سیم‌های سنسور رو بکش داخل قاب. مقاومت 270 کیلواهم رو طبق شماتیک به سنسور و بعد به پایه A7 آردوینو متصل کن.

حالا نمایشگر TFT رو روی یه سطح صاف بذار. پین شماره 19 (با لیبل LED_A) رو پیدا کن، یه مقدار از پلاستیک دورش رو بتراش و خیلی با احتیاط پین رو به سمت بیرون خم کن تا وارد سوکت نشه. تست کن ببین نمایشگر راحت روی شیلد جا می‌ره و این پین خم‌شده به جایی گیر نمی‌کنه.

یه مقاومت 47 اهم به این پین لحیم کن و اون یکی سرش رو به پایه D9 آردوینو مگا (که قابلیت PWM داره) وصل کن. دیود زنر 3.3 ولت رو هم بین همین پین و زمین (GND) قرار بده. این دیود زنر مثل یه محافظ عمل می‌کنه تا ولتاژ از 3.3 ولت بالاتر نره و بک‌لایت نمایشگرت نسوزه.

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

مرحله ۴

برنامه‌نویسی، راه‌اندازی و تست بازی پک‌من

برای برنامه‌نویسی این پروژه به فایل‌های گرافیکی، کتابخونه‌ها و کدهای اصلی نیاز داری. این سیستم طوری طراحی شده که بتونه تصاویر گرافیکی رو در کنار ساعت پردازش کنه.

به خاطر استفاده از کتابخونه‌های قدیمی графиکی، پیشنهاد می‌کنم حتما از نسخه‌های کلاسیک نرم‌افزار آردوینو (مثل نسخه 1.06) استفاده کنی.

تو نسخه‌های جدیدتر ممکنه موقع کامپایل کتابخونه‌های صفحه نمایش به ارور بخوری، پس بهتره ریسک نکنی و با همون نسخه پایدار قدیمی کار رو پیش ببری. نرم‌افزار Arduino IDE رو نصب کن و آماده باش تا کتابخونه‌ها رو بهش اضافه کنیم. مدیریت کتابخونه‌ها برای کار با نمایشگر حیاتیه. باید کتابخونه‌های مخصوص این پروژه رو دانلود کنی و به پوشه libraries آردوینو منتقل کنی تا کدها اونا رو بشناسن.

  • کتابخونه‌های UTFT و URtouch برای نمایشگر گرافیکی و تاچ
  • کتابخونه Time
  • کتابخونه DS1307RTC برای ماژول ساعت
  • کتابخونه‌های Wire و EEPROM که معمولا خودکار نصب هستن

یه نکته خیلی مهم در مورد نمایشگرهای TFT وجود داره؛ چیپست کنترلر این صفحه‌ها ممکنه تو مدل‌های مختلف با هم فرق داشته باشه و همین موضوع باعث دردسر بشه.

اگه نمایشگرت از برندهای متفرقه (مثل Sainsmart) باشه، ممکنه تصویر درست لود نشه. بهت پیشنهاد می‌کنم از همون مدل‌های استانداردی که تو لیست قطعات گفتم استفاده کنی. ولی اگه خریدی و مشکل داری، یه راه حل براش هست: فایل initlcd.h رو باز کن و مقدار 0x2B3F رو به 0x3B3F تغییر بده. بعدش نرم‌افزار رو ببند، دوباره باز کن و کد رو آپلود کن.

علاوه بر این، ممکنه چیپست داخلی نمایشگرت ILI9341 یا SSD1289 باشه. از بیرون اصلا نمی‌شه فهمید کدوم مدله! اگه بعد از آپلود کد دیدی صفحه سفیده یا کار نمی‌کنه، احتمالا چیپست نمایشگرت ILI9341 هست.

برای حل این مشکل باید تو خطوط اولیه کد، مدل درایور رو تغییر بدی. عبارت SSD1289 رو تو کد پیدا کن و اون رو به ILI9341_16 تغییر بده و دوباره کد رو روی برد بریز تا تصویر به درستی لود بشه.

یه سری فایل تصویری (Bitmap) هم برای بک‌گراندها و کاراکترها وجود داره که باید حتما تو همون پوشه‌ای باشن که کدهای اصلیت رو سیو کردی. بعد از اینکه کدها رو با موفقیت آپلود کردی، با لمس کردن مرکز صفحه وارد منوی تنظیمات می‌شی. اونجا می‌تونی زمان فعلی و ساعت آلارم رو به صورت 24 ساعته تنظیم کنی. دکمه SAVE رو بزن تا تغییرات تو ماژول ساعت ثبت بشن.

زمان آلارم تو حافظه EEPROM ذخیره می‌شه، پس نگران قطع شدن برق نباش. حالا بریم سراغ تست صدای آلارم. برای تنظیم زنگ بیدارباش، کافیه دکمه ضبط (REC) روی ماژول صدا رو نگه داری و آهنگی که دوست داری رو جلوی میکروفونش پخش کنی تا ماژول ضبطش کنه. پیشنهاد من اینه که آهنگ معروف شروع بازی پک‌من رو از روی گوشی پخش کنی تا حسابی نوستالژیک بشه!

برای تست صدا، دکمه PLAY-E روی ماژول رو بزن تا آهنگی که ضبط کردی پخش بشه. زمان آلارم رو برای دو دقیقه دیگه تنظیم کن، دکمه SET و بعد SAVE رو بزن و منتظر باش تا سر ساعت، آهنگ پک‌من برات پخش بشه. برای قطع کردن صدای آلارم هم کافیه مرکز صفحه رو لمس کنی تا وارد منوی تنظیمات بشه. اما جذابیت اصلی این ساعت، تعامل با کاراکترهای بازیه!

  • تو منوی تنظیمات با زدن روی آیکون پک‌من، می‌تونی کاراکتر رو به خانم پک‌من (Ms Pac-man) تغییر بدی.
  • وقتی پک‌من میوه‌ها رو می‌خوره، روح بازی آبی می‌شه و پک‌من می‌تونه بخورتش و امتیاز بگیره.
  • اگه روح بازی قرمز باشه و به پک‌من بخوره، امتیاز به نفع روح ثبت می‌شه.
  • با لمس لبه‌های چپ، راست، بالا و پایین صفحه می‌تونی مسیر حرکت پک‌من رو عوض کنی (البته فقط تو مسیر مخالف حرکت فعلیش جواب می‌ده).
  • وقتی امتیاز هر کدوم از کاراکترها به 95 برسه، بازی ریست می‌شه و از اول شروع می‌شه.

اگه دیدی لمس صفحه دقیق کار نمی‌کنه و دکمه‌ها عمل نمی‌کنن، یعنی صفحه تاچت کالیبره نیست. با استفاده از کدهای کالیبراسیون موجود تو کتابخونه URtouch، می‌تونی صفحه رو به راحتی کالیبره کنی تا نقاط لمسی دقیقا سر جای خودشون تنظیم بشن.

مرحله ۵

جاسازی مدار داخل قاب و تکمیل ساعت

حالا باید برق مدار رو به صورت اصولی وصل کنیم. یه سوراخ پشت بدنه چوبی ایجاد کن و کابل USB رو ازش رد کن. سیم‌های تغذیه و دیتای کابل رو مستقیم به پدهای زیر سوکت USB آردوینو لحیم کن تا ارتباط برقرار بشه.

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

قدم بعدی، فیکس کردن مدار داخل بدنه‌ست. با استفاده از دو تا تیکه چوب یا پلاستیک، یه براکت نگه‌دارنده بساز که ابعادش دقیقا اندازه فضای خالی پشت نمایشگر باشه.

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

پنل جلویی و پشتی رو با دقت به هم چفت کن. حواست باشه که سیم‌ها لای قاب گیر نکنن و پین‌های چوبی دقیقا تو سوراخ‌های خودشون جا برن. کابل رو به شارژر موبایل وصل کن. ساعت جذاب تو آماده‌ست!

مرحله ۶

شخصی‌سازی تم‌ها و کلام آخر

خوبی استفاده از آردوینو و نمایشگر رنگی اینه که اصلا محدود به یه بازی نیستی. کدهای این پروژه طوری نوشته شدن که با کمی تغییر و خلاقیت می‌تونی تم‌های گرافیکی کاملا جدیدی براش بسازی.

مثلا می‌تونی از تم بازی کلاسیک "دانکی کونگ" (Donkey Kong) استفاده کنی. تو این حالت، ساعت همون عملکرد رو داره ولی کاراکتر ماریو جایگزین پک‌من می‌شه و می‌تونی کنترلش کنی.

تو نسخه‌های جدیدتر کدهای این پروژه، امکان کنترل حرکت ماریو به چپ و راست و حتی پریدن با لمس لبه‌های بالای صفحه هم اضافه شده که حسابی سرگرم‌کننده‌ست.

پروژه‌های این‌چنینی بهترین تمرین برای ترکیب برنامه‌نویسی گرافیکی و ساخت سخت‌افزار هستن. ما تو آیسی‌مدار عاشق این سبک کاردستی‌های هوشمندیم که هم کاربرد روزمره دارن و هم حال و هوای میز کارت رو عوض می‌کنن.

فایل‌های پیوست

C d_o_pacman.c
C bluepacman.c
INO Retro_Pacman_Clock_V5.ino

تو میتونی اولین سازنده باشی!

اگه پروژه رو ساختی به اشتراک بزار و اعتبار هدیه بگیر

این آموزش با استانداردهای اختصاصی آیسی‌مدار بازنویسی و بهینه‌سازی شده و تمامی حقوق انتشار آن متعلق به این مجموعه است و در صورت کپی یا بازنشر پیگرد قانونی خواهد داشت.

آموزش‌های مشابه

گفتگو‌های کاربران

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