⏰ ماژول ساعت RTC (DS3231)

ماژول RTC DS3231 چیست؟ ساعت دقیقی که تاریخ و زمان را حتی وقتی آردوینو خاموش است با باتری سکه‌ای نگه می‌دارد. فرق DS3231 و DS1307، سیم‌بندی I2C، کتابخانه‌ی RTClib، تنظیم ساعت و کد کامل.

CR2032 DS3231
ماژول ساعت RTC (DS3231)

RTC چیست؟

RTC یعنی Real-Time Clock یا «ساعت واقعی». آردوینو خودش ساعت ندارد: تابع millis فقط می‌گوید از روشن شدن چند میلی‌ثانیه گذشته، و با هر بار خاموش شدن صفر می‌شود. ماژول RTC یک تراشه‌ی ساعت با یک باتری سکه‌ای است که تاریخ و ساعت را همیشه نگه می‌دارد، حتی وقتی آردوینو خاموش است. هر وقت بپرسی، می‌گوید الان چه سال و ماه و روز و ساعتی است.

DS3231DS1307
دقتخیلی خوب — حدود ۱ دقیقه در سالمعمولی — چند ثانیه در روز
دماسنج داخلیداردندارد
ولتاژ۳.۳ تا ۵ ولت۵ ولت
پیشنهادهمین را بخرفقط اگر ارزان‌تر بود

سیم‌بندی (I2C)

مشخصهمقدار
VCC۵ ولت
GNDGND
SDAA4 در آردوینو Uno
SCLA5 در آردوینو Uno

ارتباط از نوع I2C است: فقط دو سیم داده، و می‌شود چند ماژول (مثلاً RTC و LCD با I2C) را روی همان دو سیم گذاشت.

کد کامل با RTClib

کتابخانه‌ی RTClib (از Adafruit) را نصب کن. این کد در شبیه‌ساز تینکرکد فارسی هم اجرا می‌شود:

#include <Wire.h>
#include "RTClib.h"

RTC_DS3231 rtc;
char days[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

void setup() {
  Serial.begin(9600);
  rtc.begin();
  if (rtc.lostPower()) {
    // set the clock to the moment this sketch was compiled
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }
}

void loop() {
  DateTime now = rtc.now();
  Serial.print(now.year());  Serial.print('/');
  Serial.print(now.month()); Serial.print('/');
  Serial.print(now.day());   Serial.print("  ");
  Serial.print(days[now.dayOfTheWeek()]); Serial.print("  ");
  Serial.print(now.hour());  Serial.print(':');
  Serial.print(now.minute()); Serial.print(':');
  Serial.println(now.second());
  delay(1000);
}

تنظیم ساعت: یک بار، نه هر بار

خط rtc.adjust(DateTime(F(__DATE__), F(__TIME__))) ساعت را روی لحظه‌ی کامپایل برنامه می‌گذارد. آن را داخل if (rtc.lostPower()) بگذار تا فقط وقتی باتری تمام شده اجرا شود. اگر بیرون از if باشد، هر بار که آردوینو ریست شود، ساعت به عقب (به لحظه‌ی کامپایل) برمی‌گردد! برای تنظیم دستی: rtc.adjust(DateTime(2026, 10, 4, 8, 30, 0)).

در شبیه‌ساز

در مود آردوینوی شبیه ساز مدار، ماژول RTC را از جعبه‌ابزار بیاور و SDA را به A4 و SCL را به A5 وصل کن. ساعت شبیه‌ساز از ساعت کامپیوتر خودت شروع می‌شود و ثانیه‌به‌ثانیه جلو می‌رود؛ با adjust هم می‌توانی هر تاریخی بخواهی بگذاری (مثلاً امتحان کن ساعت زنگ مدرسه درست کار می‌کند یا نه، بدون اینکه تا فردا صبح صبر کنی!).

اشتباه‌های رایج

ایده‌ی پروژه

ساعت RTC در شبیه‌ساز ⏰

🛒 قبل از خرید، لیست خرید قطعات الکترونیک را ببین و قطعه را اول در شبیه ساز مدار امتحان کن.

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

🕰️

ساعت واقعی DS3231

⏰

ساعت زنگ‌دار

یاد بگیر، امتحان کن، بعد بخر

قطعات مرتبط

💡

LED (دیود نورانی)

🟤

مقاومت (Resistor)

🔘

دکمه فشاری (Push Button)