⏰ ماژول ساعت RTC (DS3231) (DS3231 Real-Time Clock Module)

اسم انگلیسیDS3231 Real-Time Clock Module
در ووکوی (Wokwi)نسخه‌ی آماده‌ای سراغ نداریم
دسته📦 ماژول‌ها
در شبیه‌ساز فارسیمود آردوینو · رایگان

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

ساعت RTC در ووکوی (Wokwi)

تا جایی که می‌دانیم ووکوی نسخه‌ی آماده‌ی DS3231 را ندارد. نزدیک‌ترین قطعه wokwi-ds1307 است با پایه‌های GND، 5V، SDA، SCL و SQW. تراشه فرق دارد: DS1307 دماسنج داخلی ندارد، دقتش کمتر است و در کتابخانه به‌جای lostPower تابع isrunning دارد. ولی آدرس I2C هر دو 0x68 است و سیم‌کشی یکی است:

{
  "version": 1,
  "parts": [
    { "type": "wokwi-arduino-uno", "id": "uno", "top": 0, "left": 0, "attrs": {} },
    { "type": "wokwi-ds1307", "id": "rtc1", "top": -110, "left": 120, "attrs": {} }
  ],
  "connections": [
    [ "rtc1:GND", "uno:GND.1", "black", [] ],
    [ "rtc1:5V", "uno:5V", "red", [] ],
    [ "rtc1:SDA", "uno:A4", "green", [] ],
    [ "rtc1:SCL", "uno:A5", "blue", [] ]
  ]
}

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

سیم‌کشی با آردوینو

پایه‌ی ماژول DS3231وصل به
VCC5V
GNDGND
SDAA4
SCLA5
SQWاختیاری؛ برای وقفه‌ی زنگ هشدار به پین 2
32Kوصل نمی‌شود

روی آردوینو مگا SDA و SCL روی پایه‌های 20 و 21 هستند و روی ESP32 معمولاً 21 و 22. بیشتر ماژول‌های DS3231 یک حافظه‌ی EEPROM کوچک هم روی همان باس I2C دارند که برای کار ساعت لازمش نداری.

کد نمونه

// DS3231 clock with RTClib: date, time and the chip temperature
#include <Wire.h>
#include <RTClib.h>

RTC_DS3231 rtc;   // in Wokwi use RTC_DS1307 (see the note below)

void setup() {
  Serial.begin(9600);
  if (!rtc.begin()) {
    Serial.println("RTC not found - check SDA and SCL");
    while (true) {}
  }
  if (rtc.lostPower()) {
    // set the clock once, from the time this sketch was compiled
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }
}

void loop() {
  DateTime now = rtc.now();
  char stamp[] = "YYYY-MM-DD hh:mm:ss";
  Serial.print(now.toString(stamp));
  Serial.print("   chip: ");
  Serial.print(rtc.getTemperature());
  Serial.println(" C");
  delay(1000);
}

برای اجرا در ووکوی سه تغییر بده: RTC_DS3231 را به RTC_DS1307 عوض کن، شرط rtc.lostPower() را !rtc.isrunning() کن و دو خط دمای تراشه را پاک کن، چون DS1307 دماسنج ندارد. کتابخانه‌ی RTClib از Adafruit برای هر دو کافی است.

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

آموزش‌های مرتبط

سؤال‌های رایج

ووکوی DS3231 دارد؟

تا جایی که می‌دانیم نه؛ نزدیک‌ترین قطعه‌اش wokwi-ds1307 است که همان آدرس I2C یعنی 0x68 را دارد. کد RTClib با عوض کردن RTC_DS3231 به RTC_DS1307 و دو تغییر کوچک روی آن اجرا می‌شود.

چرا هر بار که آردوینو ریست می‌شود ساعت به عقب برمی‌گردد؟

احتمالاً rtc.adjust را بی‌شرط در setup گذاشته‌ای. این دستور ساعت را روی زمان کامپایل تنظیم می‌کند؛ آن را فقط وقتی اجرا کن که ساعت برقش را از دست داده باشد، یعنی داخل شرط lostPower.

DS3231 بهتر است یا DS1307؟

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

📖 طرز کار، مشخصات فنی و نکته‌های خرید این قطعه در دانشنامه‌ی تینکرکد فارسی: ماژول ساعت RTC (DS3231) آمده است.

آموزش‌هایی که از این قطعه استفاده می‌کنند

⏰

ماژول ساعت DS3231 با آردوینو: ساعت و تاریخی که با قطع برق هم گم نمی‌شود

💡

۳۰ ایده پروژه اینترنت اشیا با ESP32، از مبتدی تا پیشرفته (با قطعه‌ها و نقطه‌ی شروع)

قطعه‌های دیگرِ ماژول‌ها

🧲

رله

Relay Module (5V)

💾

ماژول کارت SD

microSD Card Module

📱

ماژول بلوتوث HC-05

HC-05 Bluetooth Module

🪪

کارت‌خوان RFID (RC522)

RC522 RFID Reader

همه‌ی ۱۰۵ قطعه ← · آموزش مدار

ماژول ساعت RTC (DS3231) را در شبیه‌ساز امتحان کن 🚀