RTC Module adalah Module yang dapat menyimpan MAKLUMAT MASA.
Tidak semua MicroController Arduino (UNO/NANO/MEGA/ESP32/ESP8266) mampu menyimpan maklumat masa, kecuali board-board yang advance seperti Arduino Due dan lain-lain.
Ini adalah kerana, apabila Arduino di-Power-Off, semua sistemnya akan terpadam.
RTC Module mempunyai battery tersendiri yang mampu menyalakan unit RTC walaupun Power sudah dipadamkan. Tambahan pula, RTC Module mempunyai Clock-Crystal dalaman yang mampu menyimpan DETIK-MASA ketika Power di-Offkan.
Bagi Board WiFi seperti NodeMCU ESP8266 dan ESP32 pula, RTC Module tidak diperlukan kerana mereka dapat mengambil masa dari internet dengan Time Library. Kecuali, jika WiFi tidak digunakan atau tiada sambungan internet.
RTC MODULE DS3231
Terdapat pelbagai jenis model Module RTC dan fungsi mereka sehampirnya sama.
Dalam guide ini, kami akan menunjukkan kaedah menggunakan RTC Module DS3231.
DISCLAIMER:
Isi kandung Blog-Content ini, diolah dari rujukan web www.create.arduino.cc untuk memberi pemahaman lebih pada Komuniti Arduino Malaysia.
Link Rujukan: https://create.arduino.cc/projecthub/electropeak/interfacing-ds1307-rtc-module-with-arduino-make-a-reminder-08cb61

WIRING & CONNECTION
Jika dilihat pada Pin Module RTC ini, terdapat hanya 4 pin penting.
- Pin VCC – Power 5V
- Pin GND – Ground
- SDA – I2C Connection
- SCL – I2C Connection
Pin-pin lain tidak diperlukan.
I2C PORT PADA BOARD ARDUINO
Pada Board Arduino UNO dan NANO, pin I2C adalah pada A4 (SDA) dan A5 (SCL).
Pada Board Arduino MEGA pula, pin I2C adalah pada D20 (SDA) dan D21 (SCL).
Dengan itu kaedah sambunganya hanyalah:
- SDA RTC – SDA Board
- SCL RTC – SCL Board
I2C ADDRESS MODULE RTC DS3231
By default, I2C Address untuk semua Module DS3231 adalah sama, iaitu 0x68.
Oleh itu, dalam coding, address ini telah diletakkan secara default dalam Library.
LIBRARY RTCLib (Edited oleh MatGyver)
Terdapat pelbagai Version Library RTC atau Library DS3231 dalam internet. Untuk beginners ia banyak menimbulkan kekeliruan, dan terdapat fungsi-fungsi dan syntax-syntax yang berbeza untu ksetiap Library.
Namun, hasil kajian kami, Library berikut adalah antara Library termudah untuk diikuti bersam Example yang jelas.
(Klik untuk download Library)
Kami telah menambahkan example coding yang Beginner-Friendly.

Disebabkan Library ini dalam bentuk file .zip , gunakan fungsi Add .ZIP Library dalam Arduino IDE, untuk install/tambahkan library ini dalam computer.
MENGGUNAKAN LIBRARY RTCLib
File > Examples > RTCLib > DS3231_Set_Time_PC
Apabila Library telah berjaya di-Install, navigasi ke example code di atas
DS3231_Set_Time_PC
Berikut ada isi kandung library tersebut:
// Date and time functions using a DS3231 RTC connected via I2C and Wire lib //Edited Oleh : MatGyver #include <Wire.h> #include <RTClib.h> RTC_DS3231 rtc; //Variable di bawah diperlukan untuk memberi tahu Hari char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; void setup () { //Mulakan Serial Monitor 9600 BaudRate Serial.begin(9600); //Sedikit Delay delay(100); //Tidak Wajib //Memulakan RTC dan memberikan notifikasi jika RTC tidak dijumpai if (! rtc.begin()) { Serial.println("Couldn't find RTC"); while (1); //Constant loop, sila restart Arduino } //RTC.LostPower digunakan untuk check samada //RTC kehilangan power atau tidak ketika Arduino Start if (rtc.lostPower()) { Serial.println("RTC lost power, lets set the time!"); //Syntax berikut setkan masa dan tarikh RTC dari PC //mengikut waktu Program diUpload //pastikan computer mempunyai masa yang betul rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); //Untuk mengubah masa dan tarikh secara manual //Gunakan syntax di bawah //Contoh :January 21, 2014 at 3am you would call: //rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0)); } }//END VOID SETUP void loop () { //Dapatkan masa terkini dan simpan dalam Object "now" DateTime now = rtc.now(); //Print/Paparkan maklumat masa/tarikh pada Serial Monitor Serial.print(now.year(), DEC); //Nombor Tahun (2021) Serial.print('/'); //Tanda sempadan Serial.print(now.month(), DEC); //Nombor Tahun (6) Serial.print('/'); //Tanda sempadan Serial.print(now.day(), DEC); //Nombor Tahun (17) Serial.print(" ("); //Kurungan untuk hari Serial.print(daysOfTheWeek[now.daysOfTheWeek()]); //Print hari Serial.print(") "); //Kurungan untuk hari Serial.print(now.hour(), DEC); //Nombor Jam Serial.print(':'); //Tanda sempadan Serial.print(now.minute(), DEC);//Nombor Minit Serial.print(':'); //Tanda sempadan Serial.print(now.second(), DEC);//Nombor Saat Serial.println(); Serial.println(); delay(3000); }//END VOID LOOP
MENTAPKAN MASA DAN TARIKH
Module RTC yang baru pertama kali dinyalakan, tidak akan mempunyai Tarikh dan Masa yang terkini.
Oleh itu, jika anda perhatikan dalam coding di atas, terdapat syntax seperti berikut:
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
Ini adalah suatu kelainan, berbanding library-library lain, di mana, fungsi F(__DATE__) dan juga F(__TIME__) sangat mudah, ia merujuk kepada masa PC kita sewaktu Program Arduino di upload.
Dengan 2 syntax ini, setiap kali program diupload, RTC akan diupdate dengan maklumat MASA dan TARIKH yang terkini dari PC Computer.
Walaubagaimanapun, terdapat juga Kaedah Alternatif untuk menetapkan Masa dan Tarikh secara manual, melalui syntax di bawah:
rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
Syntax di atas, akan menetapkan maklumat masa dan tarikh dalam bentuk berikut:
January 21, 2014 at 3:00 am
MEMANGGIL MAKLUMAT MASA DAN TARIKH TERKINI
Setiap kali maklumat masa dan tarikh terkini ingin dipanggil, syntax berikut perlu dipanggil:
DateTime now = rtc.now();
Syntax ini, akan Update Object-Variable now , dengan maklumat terkini.
MEMANGGIL MAKLUMAT TERPERINCI
Selepas memanggil maklumat terkini, kesemua maklumat Tahun, Bulan, Hari, Jam, Minit dan saat, boleh dipanggil secara individu dengan Syntax-syntax berikut:
tahun = now.year(); bulan = now.month(); hari = now.day(); jam = now.hour(); minit = now.minute(); saat = now.second();
Kesemua variable tahun,bulan, hari,jam... perlu di-Declare sebelum digunakan.
PERSEDIAAN UNTUK KE CODING ARDUINO
Jika anda menghadapi kesukara dalam menggunakan atau memahamkan Arduino dan Coding, kami sarankan anda ikuti E-Learning E-Kursus Pemantapan Asas Arduino MatGyver ini.
Sebelum membuat sebarang Project Arduino, kita perlu tahu dahulu Fundamental Hardware dan juga Fundamental C++ Coding supaya kita dapat kenal-pasti sebarang masalah atau error-error basic yang bakal terjadi ketika membuat project ini.
Jika anda mempunyai sebarang PERTANYAAN berkenaan artikel ini, anda boleh maklumkan dalam bahagian COMMENT.
Selamat Mempelajari Module RTC DS3231!
Jika anda menyukai artikel-artikel keluaran MatGyver.my, kami mohon jasa baik tuan/cikpuan untuk sumbangkan like pada page FaceBook kami,
dan juga Subscribe ke YouTube Channel kami !
