Pendahuluan
RTC merupakan komponen yang diperlukan untuk memberikan informasi mengenai waktu. Waktu disini dapat berupa detik, menit, hari, bulan dan tahun. Arduino (misalnya UNO) tidak dilengkapi secara internal dengan RTC. Dengan demikian, untuk aplikasi yang memerlukan pewaktuan, kita harus menyertakannya secara tersendiri. Agar tetap dapat bekerja, sebuah RTC dilengkapi dengan baterai, yang umumnya orang-orang menyebutkannya sebagai baterai "CMOS". Pada tutorial ini, kita akan menggunakan RTC dengan chip DS3231. Selain DS3231, contoh chip lain misalnya DS1307 atau DS1302.
Hardware
Siapkanlah modul RTC DS3231, sebuah papan Arduino (disini kita gunakan UNO) dan beberapa kabel jumper. Rangkailah seperti pada Gambar 1. Tergantung modul yang kita beli, umumnya terdapat beberapa pin pada modul RTC kita. Namun, yang pokok terdapat empat buah pin, yaitu VCC, GND, SDA, dan SCL. SDA (Serial Data) dan SCL (Serial Clock) adalah dua pin unik untuk berkomunikasi secara I2C (Inter-Integrated Circuit). Pada tutorial kali ini, kita tidak akan membahas I2C secara detail. Sambungkan SDA dengan pin A4 pada Arduino, dan SCL dengan pin A5, seperti pada tabel berikut:
Tabel 1. Konfigurasi Pin RTC dan Arduino
Pin RTC | Pin Arduino |
---|---|
VCC | 5V |
GND | GND |
SDA | A4 |
SCL | A5 |
[[{"fid":"769","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"RTC-Arduino","field_file_image_title_text[und][0][value]":"RTC-Arduino"},"type":"media","link_text":null,"attributes":{"alt":"RTC-Arduino","title":"RTC-Arduino","height":"427","width":"482","class":"media-element file-default"}}]]
Gambar 1. Konfigurasi pin-pin RTC dan Arduino UNO
Software
Pertama, unduhlah pustaka untuk RTC kita pada pada file yang telah disertakan pada tutorial ini. Library ini sedikit Penulis modifikasi, yaitu mengubah nama hari dan bulan yang dalam bahasa Inggris menjadi Bahasa Indonesia.
Jika telah selesai mengunduh, Import-lah pustaka tersebut ke library Arduino kita. Caranya, buka IDE Arduino, cari Sketch ->Include Library -> Add .ZIP Library... . Selanjutnya, ketiklah program untuk seting pertama kali RTC kita, sebagai berikut:
#include <DS3231.h> DS3231 rtc(SDA, SCL); void setup() { Serial.begin(9600); rtc.begin(); // Seting waktu saat pertama kali RTC digunakan rtc.setDOW(SELASA); // Set Hari rtc.setTime(23, 01, 00); // Set waktu JJ:MM:DD (24hr format) rtc.setDate(20, 9, 2016); // Set tanggal 20 September 2016 //Selanjutnya, informasi berikut dapat diambil sesuai kebutuhan kita Serial.println(rtc.getDOWStr(FORMAT_SHORT)); //tampilkan hari dalam format singkat Serial.println(rtc.getDOWStr(FORMAT_LONG)); //tampilkan hari dalam format panjang Serial.println(rtc.getMonthStr(FORMAT_SHORT)); //tampilkan bulan dalam format singkat Serial.println(rtc.getMonthStr(FORMAT_LONG)); //tampilkan bulan dalam format panjang Serial.println(rtc.getDateStr()); //tampilkan tanggal Serial.println(rtc.getTimeStr()); //tampilkan waktu Serial.println(rtc.getUnixTime(rtc.getTime())); //konvert ke Unix time } void loop() { //tidak melakukan apa-apa }
Hasil yang ditampilkan pada Serial Monitor adalah sebagai berikut:
Sel
Selasa
Sep
September
20.09.2016
23:01:00
1474412460
Seting cukup dilakukan hanya sekali. Selanjutnya, RTC kita siap digunakan sesuai kebutuhan. Misal, kita gunakan untuk melihat hari dan waktu saat ini:
#include <DS3231.h> DS3231 rtc(SDA, SCL); Time waktu; void setup() { Serial.begin(9600); rtc.begin(); } void loop() { //tampilkan hari Serial.println(rtc.getDOWStr(FORMAT_LONG)); //ambil waktu waktu = rtc.getTime(); int dataJam = waktu.hour; int dataMenit = waktu.min; int dataDetik = waktu.sec; Serial.print(dataJam); Serial.print(':'); Serial.print(dataMenit); Serial.print(':'); Serial.println(dataDetik); delay(1000); }
Hasil yang ditampilkan pada Serial Monitor adalah sebagai berikut:
Selasa
23:13:2
Selasa
23:13:3
Selasa
23:13:4
Selasa
23:13:5
Selasa
23:13:6
Selasa
23:13:7
Demikian tutorial kali ini. Semoga bermanfaat :)
Komentar Terbaru