تاریخ و ساعتِ اندازهگیریای که یک سنسور انجام داده یا زمان دقیق ضبط دادهها میتواند در هنگام ثبت دادهها؛ روی SD کارت توسط ماژول ساعت (RTC) محاسبه و ذخیره شود.
ماژول DS3231 یک ماژول ساعت (RTC) است
ماژول ساعت (زمان)، ثانیه، دقیقه، ساعت، روز، ماه و سال را ثبت میکند. DS3231 یک ماژول زمان است که میتواند با هر دو ولتاژ ۳/۳V و ۵V کار کند و یک باتری دکمهای لیتیومی CR2032 میتواند ماژول را در زمانی که به آردوینو متصل نیست تغذیه کند. تراشه DS3231 مجهز به یک سنسور دمای داخلی است و از پروتکل I2C با دو مسیر ارتباطی دو جهته به نام های (SCL) و (SCA) (شکل زیر را ببینید) استفاده میکند. شیوه اتصال DS3231 در جدول 1 نشان داده شده.
نحوه اتصال ماژول DS3231 به آردوینو
ترجیحاً سعی کنید از کتابخانهی Henning Karsen برای DS3231 استفاده کنید چرا که راهنمای فوقالعاده عالیای دارد و دستیابی به المانهای زمانی در کتابخانه بسیار راحت میباشد. شما میتوانید کتابخانه ی قطعه را به صورت فایل زیپ از سایت www.rinkydinkelectronics.com دانلود کنید. هنگامی که برای اولین بار از DS3231RTC استفاده میکنید، باید ساعت و تاریخ درست را در آن بگنجانید و سپس لیست کدی که در ادامه آورده شده را به کار ببرید.
هنگام تنظیم زمان باید از فرمت ۲۴ ساعت استفاده کنید و حرف اول روزهای هفته را بزرگ بویسید. کامپایل و بارگزاری اطلاعات تقریباً ۱۰ ثانیه زمان میبرد. بنابراین زمان را ۱۰ ثانیه جلوتر وارد کنید.
جدول اتصال ماژول ساعت DS3231 به آردوینو
جدول 1
کد راه اندازی ماژول ساعت DS3231 با آردوینو
#include // include DS3231 library
DS3231 rtc(SDA, SCL); // #associate rtc with DS3231 library
Time t;
void setup()
{
Serial.begin(9600); // #define Serial output baud rate
rtc.begin(); // start rtc
// rtc.setDOW(WEDNESDAY) // set weekday
// rtc.setTime(10, 23, 20); // set the time to hh mm ss
// rtc.setDate(22, 8, 2018); // set the date to dd mm yyyy
}
void loop()
{
Serial.print(rtc.getDOWStr());Serial.prin#t(" "); // day of week
Serial.print(rtc.getDateStr());Serial.print(" "); // date
Serial.print(rtc.getTimeStr());Serial.print("\t"); // time
t = rtc.getTime(); // #components of date and time
Serial.print(t.date);Serial.print(" "); // day
Serial.print(rtc.getMonthStr()); //# month as text
Serial.print(" (month ");
Serial.print(t.mon);Serial.print(") "); // month
Serial.print(t.year);Serial.print("\t"); // year
Serial.print(t.hour);Serial.print(":"); // hour
Serial.print(t.min);Serial.print(":"); // minute
Serial.print(t.sec);Serial.print("\t"); // second
Serial.print(rtc.getTemp(),1); // #temperature to 1DP
Serial.println(" C");
delay (1000);
}