ساعت داخلی ESP32 با هر بار قطع برق یا ریستشدن، به زمان صفر بازمیگردد (مگر با NTP از اینترنت تنظیم شود). برای پروژههایی که به تاریخ و ساعت دقیق حتی بدون اینترنت نیاز دارند (مثل دیتالاگر یا زنگ هوشمند)، از یک ماژول RTC سختافزاری مثل DS3231 استفاده میکنیم که با باتری سکهای، زمان را همیشه نگه میدارد.
خواندن و تنظیم زمان با DS3231
مشابه نمایشگر OLED (درس ۹)، ماژول RTC هم از I2C استفاده میکند و به کتابخانهٔ ds3231.py نیاز دارد.
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) یک پیام “چک سلامت سیستم” در سریال چاپ کند.