متوسط⏱ 15 دقیقه مطالعه

ساعت داخلی ESP32 با هر بار قطع برق یا ریست‌شدن، به زمان صفر بازمی‌گردد (مگر با NTP از اینترنت تنظیم شود). برای پروژه‌هایی که به تاریخ و ساعت دقیق حتی بدون اینترنت نیاز دارند (مثل دیتالاگر یا زنگ هوشمند)، از یک ماژول RTC سخت‌افزاری مثل DS3231 استفاده می‌کنیم که با باتری سکه‌ای، زمان را همیشه نگه می‌دارد.

اتصال ماژول ساعت واقعی DS3231 با I2C

خواندن و تنظیم زمان با DS3231

مشابه نمایشگر OLED (درس ۹)، ماژول RTC هم از I2C استفاده می‌کند و به کتابخانهٔ ds3231.py نیاز دارد.

PYTHON
from machine import Pin, I2C
import ds3231

i2c = I2C(0, scl=Pin(22), sda=Pin(21))
rtc = ds3231.DS3231(i2c)

# تنظیم زمان (فقط یک‌بار لازم است): سال، ماه، روز، ساعت، دقیقه، ثانیه، روز هفته
rtc.set_time((2026, 7, 19, 14, 30, 0, 0))

while True:
    t = rtc.get_time()
    print("تاریخ و ساعت:", t)
ℹ️ اطلاعات

اگر به ماژول RTC سخت‌افزاری دسترسی ندارید، می‌توانید زمان را با پروتکل NTP از طریق ماژول ntptime و اتصال Wi-Fi (درس ۱۱) نیز همگام‌سازی کنید؛ اما در آن حالت با قطع برق و بدون اینترنت، زمان از دست می‌رود.

🧩

در حال حاضر قطعهٔ DS3231 آمادهٔ میکروپایتون در کتابخانهٔ Wokwi با نمونهٔ عمومی موجود نیست؛ می‌توانید از قطعهٔ RTC موجود در کتابخانهٔ Wokwi برای ساخت مدار خودتان استفاده کنید (مشابه سیم‌کشی I2C در تصویر بالا).

ساخت پروژهٔ خالی میکروپایتون در Wokwi ↗
🛠️ کارگاه عملی

کارگاه عملی: یک برنامه بنویسید که هر ساعت (با کمک RTC) یک پیام “چک سلامت سیستم” در سریال چاپ کند.

❓ مزیت اصلی استفاده از ماژول RTC سخت‌افزاری مثل DS3231 نسبت به NTP چیست؟
طراحی و توسعه: امین شیخ نجدیglcd.ir