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

ساعت دیواری هوشمند با تم سوپر ماریو و نمایشگر LED

ابزار و گجت
۰ نظر
۶۷ نفر
کد ۴۳۵۶

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

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

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

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

  • برد توسعه ESP32
  • نمایشگر ماتریس ال‌ای‌دی رنگی با ابعاد 64x64
  • منبع تغذیه 5 ولت (حداقل 3 آمپر برای روشنایی مناسب پنل)
  • کابل‌ها و سیم‌های جامپر
  • قاب پرینت سه‌بعدی (اختیاری)
مرحله ۱

ایده‌پردازی و کانسپت اصلی پروژه

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

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

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

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

برای کنترل این نمایشگر ماتریسی، بهترین انتخاب برد ESP32 هست. تو مراحل اولیه توسعه دقیقا مثل عکس بالا، مدار رو با سیم‌کشی‌های روی برد بورد بستم.

اگر نمی‌خوای درگیر طراحی برد مدار چاپی (PCB) بشی، هیچ مشکلی نیست. همون برد توسعه ESP32 و یه مشت سیم جامپر کارت رو راه می‌ندازه و اگه سیم‌کشی‌ها رو مرتب انجام بدی، می‌تونه نسخه نهایی کارت باشه.

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

مرحله ۲

استفاده از بردهای آماده یا ساخت PCB شخصی

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

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

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

به خاطر امکانات بی‌نظیر این برد، منم دیگه برد دست‌ساز خودم رو کنار گذاشتم. برد Trinity امکانات خفنی مثل دکمه‌های لمسی، سنسور نور برای تنظیم خودکار روشنایی صفحه، پورت USB-C و سیستم مدیریت تغذیه داره. اطلاعات بیشتر درباره این برد رو می‌تونی تو صفحه گیت‌هابش پیدا کنی.

مرحله ۳

راه‌اندازی نرم‌افزاری و نصب فریم‌ور

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

پیکربندی و اتصال به وای‌فای: بعد از نصب فریم‌ور، وقتی دستگاه رو برای اولین بار روشن می‌کنی، باید به اینترنت وصلش کنی. با گوشیت به شبکه وای‌فایی به اسم Clockwise-Wifi با رمز 12345678 متصل شو. یه صفحه باز می‌شه، شبکه مودم خونه رو انتخاب کن، رمز رو بزن و منطقه زمانی (Timezone) خودت رو وارد کن تا ساعت به سرورهای جهانی (NTP) متصل بشه و زمان رو دقیق نشون بده.

یادت باشه این برد فقط با شبکه‌های وای‌فای 2.4GHz کار می‌کنه و روی فرکانس 5G جواب نمی‌ده. تنظیم منطقه زمانی: برای اینکه ساعت بدونه تو کدوم کشور هستی، باید اسم منطقه زمانی رو دقیق وارد کنی. مثلا برای ایران باید بنویسی Asia/Tehran.

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

مرحله ۴

بررسی ساختار کدهای پروژه

من معمولا برای برنامه‌نویسی بردهای ESP از محیط PlatformIO استفاده می‌کنم، اما برای اینکه کار برای همه راحت‌تر بشه، کدها رو با محیط آشنای Arduino IDE هم سازگار کردم.

کدهایی که توی گیت‌هاب قرار دادم با کتابخونه اصلی ESP32-HUB75-MatrixPanel هماهنگ هستن، اما با کتابخونه‌های دیگه‌ای مثل PxMatrix هم بدون مشکل کار می‌کنن. فقط کافیه کتابخونه‌ها رو جایگزین کنی و نیازی به تغییرات ساختاری تو کدها نیست.

برای اینکه کدها روی Arduino IDE بدون مشکل کامپایل بشن، مجبور شدم ساختار فایل‌ها رو کمی تغییر بدم و همه‌چی رو کنار فایل اصلی mariobros-clock.ino بذارم. شاید تو نگاه اول یه کم گیج‌کننده باشه، اما الان برات توضیح می‌دم که داستان از چه قراره. ساختار پروژه از سه بخش اصلی تشکیل شده:

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

با ترکیب این بخش‌ها تونستیم صحنه‌ای رو خلق کنیم که تو تصاویر می‌بینی. یه پس‌زمینه ثابت داریم و دو تا المان متحرک (اسپرایت) که شامل کاراکتر ماریو و بلوک‌های بالای سرش می‌شن. کدها طوری نوشته شدن که ماریو هر یک دقیقه بپره، سرش رو به بلوک‌ها بکوبه و انیمیشن تغییر ساعت اجرا بشه.

مرحله ۵

نصب کتابخانه‌ها در محیط آردوینو

قبل از اینکه بخوای کد رو کامپایل کنی، باید چند تا کتابخونه رو از طریق بخش Library Manager تو نرم‌افزار آردوینو نصب کنی.

  • کتابخونه نمایشگر: جستجوی عبارت ESP32 HUB75 MATRIX
  • کتابخونه گرافیکی: جستجوی عبارت Adafruit GFX
  • کتابخونه رنگ‌ها: جستجوی عبارت FastLED
  • کتابخونه دریافت زمان: جستجوی عبارت NTPClient
  • کتابخونه‌های جانبی: Adafruit BusIO و ezTime
  • کتابخونه مدیریت وای‌فای: جستجوی عبارت wifimanager

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

مرحله ۶

ساخت قاب دستگاه با پرینت سه‌بعدی

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

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

مرحله ۷

نتیجه‌گیری و توسعه‌های آینده

  • در آینده قراره امکانی فراهم بشه تا بتونی از طریق یه صفحه وب، تم‌ها و വാچ‌فیس‌های مختلف رو بدون نیاز به کابل‌کشی آپلود کنی.
  • اضافه کردن ویجت‌های کاربردی مثل نوتیفیکیشن‌ها که بتونی از طریق موبایل مدیریتشون کنی.
  • ارتباط ساعت با پروتکل MQTT تا بشه از هر جای دنیا براش پیام فرستاد.
  • طراحی و ساخت واچ‌فیس‌های جذاب و جدید.
  • کدهای این پروژه کاملا متن‌باز (Open Source) هستن؛ اگر دستی تو برنامه‌نویسی داری، خوشحال می‌شیم تو توسعه قابلیت‌های جدید کمک کنی.
  • منتظر ایده‌های خلاقانه تو برای تم‌های جدید این ساعت بی‌نظیر هستیم.

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

ZIP ESP32-HUB75-MatrixPanel-I2S-DMA-master.zip
ZIP clockwise-main.zip
ZIP ESP32-Trinity-master.zip

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

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

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

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

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

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