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

با رزبری‌پای پیکو یک ساعت دیواری LED ریاضی بساز

ابزار و گجت
۰ نظر
۳۱ نفر
کد ۳۰۸۰

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

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

برای ساخت این ساعت از یک رزبری‌پای پیکو 2 به‌عنوان مغز پروژه استفاده می‌کنیم، یک ماژول RTC برای نگه‌داشتن زمان دقیق حتی بعد از قطع برق، یک حلقه نوار ال‌ای‌دی برای نمایش ساعت و دقیقه، و یک باتری 18650 قابل شارژ که باعث میشه ساعت بدون نیاز به سیم دائمی کار کنه. بدنه‌ی کل پروژه هم با پرینت سه‌بعدی ساخته میشه و طراحی جمع‌وجور و تمیزی داره.

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

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

  • رزبری‌پای پیکو 2 (Raspberry Pi Pico 2)
  • ماژول RTC مدل PCF8563
  • نوار ال‌ای‌دی آر‌جی‌بی (WS2812B)
  • باتری 18650
  • ماژول شارژ باتری
  • سیم لحیم‌کاری
  • هویه لحیم‌کاری میان‌ویر (Miniware)
  • شارژر باتری Xtar VX4
مرحله ۱

طراحی سه‌بعدی و پرینت بدنه ساعت

برای شروع کار، بدنه‌ی PiTime رو با نرم‌افزار Fusion 360 طراحی کردم. هدف این بود که طراحی تا جای ممکن ساده، جمع‌وجور و راحت برای مونتاژ باشه، ولی در عین حال ظاهری تمیز و مدرن هم داشته باشه.

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

به طور خلاصه دو تا گزینه داری:

  1. فایل‌های STL رو دانلود کن و مستقیم پرینتشون بگیر
  2. فایل‌های Fusion 360 (فرمت STEP) رو دانلود کن و طراحی رو مطابق نیاز خودت تغییر بده

⚠️ نکته: این طراحی فقط برای استفاده‌ی آموزشی و شخصی به اشتراک گذاشته شده و استفاده‌ی تجاری ازش مجاز نیست.

مرحله ۲

مونتاژ نوار LED دور ساعت

اول نوار ال‌ای‌دی رو به قطعات جدا ببر. هر قطعه باید فقط یک ال‌ای‌دی آر‌جی‌بی داشته باشه، در نهایت باید 12 عدد ال‌ای‌دی جدا داشته باشی؛ یکی برای هر موقعیت ساعت.

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

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

مرحله ۳

اضافه کردن ماژول شارژ باتری

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

ماژول شارژ رو داخل شیار کناری بدنه‌ی پرینت‌شده قرار بده. حواست باشه پورت Type-C دقیقا روی محل بریده‌شده تنظیم بشه تا از بیرون راحت در دسترس باشه. بعد از تنظیم، با یه مقدار کم چسب محکمش کن.

مرحله ۴

سیم‌کشی و اتصال قطعات به پیکو

حالا وقتشه همه‌چیز رو با دقت به هم وصل کنیم. این ترتیب رو دنبال کن تا اشتباهی پیش نیاد؛ می‌تونی برای درک بهتر به نقشه مدار هم نگاه کنی. اتصالات ماژول RTC (مدل PCF8563)

  1. پین 6 ← GP4 ← پایه SDA ماژول RTC
  2. پین 7 ← GP5 ← پایه SCL ماژول RTC
  3. پین 36 ← خروجی 3V3 ← پایه VCC ماژول RTC
  4. پایه GND ← پایه GND ماژول RTC

اتصالات حلقه ال‌ای‌دی مدل WS2812B

  1. پین 34 ← GP28 ← پایه DIN حلقه ال‌ای‌دی (دیتای نئوپیکسل)
  2. پین 39 ← VSYS ← تغذیه 5 ولت حلقه ال‌ای‌دی
  3. پایه GND ← پایه GND حلقه ال‌ای‌دی

اتصالات باتری 18650

  1. قطب مثبت باتری ← پین 39 (VSYS)
  2. قطب منفی باتری ← پایه GND
مرحله ۵

جاگذاری باتری در بدنه

باتری 18650 رو بردار و داخل نگه‌دارنده‌ای که تو بدنه طراحی شده جا بذار. این نگه‌دارنده باتری رو محکم و وسط‌چین نگه می‌داره تا هیچ‌وقت جابه‌جا نشه.

مرحله ۶

نصب فریمور مایکروپایتون روی پیکو

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

  1. آخرین فایل با پسوند uf2. رو دانلود کن
  2. فایل رو روی دسکتاپ ذخیره کن

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

  1. دکمه BOOTSEL روی پیکو رو نگه دار
  2. در همون حالت، کابل USB رو به کامپیوتر وصل کن
  3. دکمه رو رها کن
  4. یک درایو جدید به اسم RPI-RP2 روی سیستمت ظاهر میشه
  5. فایل uf2. رو بکش و داخل این درایو رها کن

بعد از چند لحظه این درایو خودش ناپدید میشه؛ یعنی مایکروپایتون با موفقیت نصب شده.

مرحله ۷

راه‌اندازی محیط برنامه‌نویسی Thonny

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

  1. نرم‌افزار Thonny رو پیدا کن
  2. آخرین نسخه‌ش رو دانلود کن
  3. مثل هر نرم‌افزار دیگه‌ای نصبش کن

اتصال Thonny به پیکو

  1. پیکو رو به کامپیوتر وصل کن (این بار بدون نگه‌داشتن BOOTSEL)
  2. نرم‌افزار Thonny رو باز کن
  3. برو به مسیر: Tools ← Options ← Interpreter
  4. گزینه‌ی MicroPython (Raspberry Pi Pico) رو انتخاب کن
  5. پورت رو روی حالت تشخیص خودکار بذار
  6. روی OK کلیک کن
مرحله ۸

آپلود کد اصلی روی پیکو

فایل کد اصلی و فایل آماده‌ی uf2. رو کنار خودت آماده کن.

  1. فایل main.py رو پیدا کن
  2. در Thonny برو به: File ← Open ← This Computer
  3. فایل main.py رو انتخاب کن

ذخیره روی پیکو

  1. برو به: File ← Save As
  2. گزینه‌ی Raspberry Pi Pico رو انتخاب کن
  3. با نام main.py ذخیره کن

دقت کن اسم فایل حتما باید main.py باشه؛ این کار باعث میشه پیکو با هر بار روشن شدن، خودکار همین کد رو اجرا کنه.

مرحله ۹

تنظیم ساعت روی ماژول RTC

ماژول RTC از اول هیچ اطلاعاتی از زمان فعلی نداره، پس باید یک بار دستی تنظیمش کنی. اول باید محیط Shell رو باز کنی.

  1. دکمه‌ی توقف (⛔) رو تو Thonny بزن
  2. صبر کن تا علامت >>> ظاهر بشه

وارد کردن تابع تنظیم زمان

Python
from main import rtc_set_time

تنظیم زمان فعلی با فرمت 24 ساعته

TXT
rtc_set_time(10, 15) # Example: 10:15 AM

چند مثال:

  1. ساعت 9:05 صبح ← rtc_set_time(9, 5)
  2. ساعت 12:30 ظهر ← rtc_set_time(12, 30)
  3. ساعت 3:45 بعدازظهر ← rtc_set_time(15, 45)
  4. ساعت 8:00 شب ← rtc_set_time(20, 0)
مرحله ۱۰

نصب برد کنترلر و ماژول RTC در بدنه

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

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

مرحله ۱۱

بستن درب رویی ساعت

درب بالایی، همونی که عبارت‌های ریاضی روشه، رو بردار و با احتیاط روی بدنه بذار. قبل از بستن، مطمئن شو همه سیم‌ها مرتب جمع شدن و ال‌ای‌دی‌ها دقیقا زیر بخش‌های خودشون قرار دارن. بعد به آرومی درب رو فشار بده تا جا بیفته. چون طراحی این قسمت به‌صورت قفلی (snap-fit) هست، با یه فشار ساده درست سرجاش کلیک میشه.

مرحله ۱۲

تست نهایی و راه‌اندازی ساعت

الان ساعتت کاملا مونتاژ شده و آماده استفاده‌ست. اول یک انیمیشن کوتاه شروع اجرا میشه و بعدش ساعت شروع می‌کنه به نمایش زمان. هر ال‌ای‌دی نماینده‌ی یک موقعیت روی ساعته، از 1 تا 12.

  1. 🔴 ال‌ای‌دی قرمز نشون‌دهنده‌ی عدد ساعته
  2. 🟢 ال‌ای‌دی سبز نشون‌دهنده‌ی دقیقه‌ست (با گام‌های 5 دقیقه‌ای)
  3. 🔵 اگه ساعت و دقیقه هردو رو یک موقعیت بیفتن، همون ال‌ای‌دی به رنگ آبی روشن میشه

برای مثال:

  1. اگه ساعت حدود 6:50 باشه،
  2. ال‌ای‌دی روی عدد 6 قرمز روشن میشه (ساعت)
  3. ال‌ای‌دی روی عدد 10 سبز روشن میشه (دقیقه)

وقتی این منطق دستت بیاد، خوندن زمان از روی این ساعت خیلی سریع و راحت میشه. برای اولین بار، باتری رو از طریق پورت Type-C تا شارژ کامل وصل نگه دار. این کار باعث میشه ساعت پایدارتر کار کنه و عمر باتری هم بیشتر بشه.

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

مرحله ۱۳

حرف آخر

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

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

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

اگه این ایده رو دوست داشتی، حتما پیشنهاد می‌کنم نسخه‌ی خودت رو بسازی و شاید حتی بهترش کنی. تیم آیسی‌مدار خوشحال میشه نظرها، ایده‌ها و بهبودهایی که به ذهنت می‌رسه رو تو بخش دیدگاه‌ها باهامون در میون بذاری. ساخت خوبی داشته باشی! 🚀

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

PY main.py
STL Bottom.stl
STL Top.stl

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

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

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

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

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

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