CARA PROGRAM RTC DS1307 MENGGUNAKAN ARDUINO
RTC adalah Real Time Clock, Biasanya IC yang mempunyai clock sumber sendiri dan mempunya internal Baterai untuk menyimpan tanggal dan waktu.Berupa detik ,menit ,jam ,tanggal ,bulan dan tahun.Module RTC yang umum di gunakan di Mikrokontroler memakai IC DS3231, DS1307 dan DS1302.
Pada kesempatan sebelumnya kita sudah membahas Tutorial RTC DS3231 pada Cara Program RTC DS3231 Menggunakan Arduino. Untuk menambah alternatif penggunaan RTC ,Pada kesempatan kali ini kita akan membaha Tutorial Cara Program RTC Real Time Clock DS1307 Menggunakan Arduino
Arduino secara internal tidak di lengkapi denga RTC sehingga untuk membuatan project yang membutuhkan waktu Real Time di perlukan module RTC yang sudah terpasang baterai,sehingga saat power supply mati, RTC tetap dapat power supply dari baterai.
Mikrokontroler Arduino berkomunikasi dengan RTC DS1307 Menggunakan komunikasi I2C (Inter-Integrated Circuit).Sehingga pin yang di gunakan ada 4 yaitu VCC untuk supply tegangan 5V DC, GND , SDA (Serial Data) dan SCL (Serial Clock).Untuk lebih jelasnya dapat mengikuti tutorial berikut ini :
Top View RTC DS1307 |
Button View RTC DS1307 |
Module/Part yang di butuhkan :
- Arduino
- Modul RTC DS1307
- kabel jumper secukupnya
WIRING DIAGRAM
Berikut wiring diagram yang menghubungkan arduino dengan RTC DS1307
Berikut wiring diagram yang menghubungkan arduino dengan RTC DS1307
ALOKASI PIN ARDUINO
Komunikasi RTC DS1307 denga Arduino menggunakan komunikasi I2C, pin yang digunakan pin SDA dan SCL.untuk lebih jelasnya sebagai berikut :
Komunikasi RTC DS1307 denga Arduino menggunakan komunikasi I2C, pin yang digunakan pin SDA dan SCL.untuk lebih jelasnya sebagai berikut :
RTC DS1307 | Arduino |
SCL | A5 |
SDA | A4 |
VCC | +5V |
GND | Gnd |
CONTOH PROGRAM
#include <Wire.h> #include "RTClib.h" RTC_DS1307 rtc; char namaHari[7][12] = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"}; void setup () { Serial.begin(9600); if (! rtc.begin()) { Serial.println("RTC TIDAK TERBACA"); while (1); } if (! rtc.isrunning()) { Serial.println("RTC is NOT running!"); rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));//update rtc dari waktu komputer } } void loop () { DateTime now = rtc.now(); Serial.print(namaHari[now.dayOfTheWeek()]); Serial.print(','); Serial.print(now.day(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.year(), DEC); Serial.print(" "); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.print(now.second(), DEC); Serial.println(); delay(3000); }
OUTPUT SERIAL MONITOR
apakah ada fitur kalibrasi pada ds1307
BalasHapussoalnya itu ic sering selisih waktunya
apakah sama dengan rtc ds 1302, punya librarynya RTC ds 1302??
BalasHapusmas ilmi, rtc DS1307 beda dengan RTC ds1302
HapusSetau saya beda. DS1307 menggunakan I2C sedangkan DS1302 bukan I2C, bukan SPI dan bukan UART. Kelebihan dari DS1302 adalah tidak memerlukan alamat sehingga kita tidak perlu ragu mengganti chip meskipun kita membelinya dari seller yang berbeda-beda untuk sebuah project yang sama. Kekurangannya adalah memerlukan kabel yang lebih banyak yaitu 3 kabel yaitu SDA, SCL dan CE. Selain itu, 2 kabel (SDA dan SCL) tersebut juga tidak bisa digunakan secara paralel dengan modul I2C lain. Kelebihan DS1307 adalah cukup menggunakan 2 kabel dan bisa paralel dengan I2C lain. Kekurangannya, kita harus memastikan alamatnya sebelum kita menggukannya. Takutnya beda. Soalnya saya menggunakan display OLED juga berbeda antara contoh program yang dibuat orang dengan alamat dari modul yang saya miliki. Artinya, kalau saya mengganti OLED tersebut dengan yang digunakan orang lain, bisa saja alamatnya berbeda dan program tidak bisa mengaksesnya.
HapusMengenai library, sudah pasti librarynya berbeda karena cara komunikasinya berbeda.
Bang mau nannya, saya kan mau bikin penjadwalan upload file menggunakan module ini,, nah itu gimana? Misalnya gini saya ada data dari sensor, maunya data tersebut di upload ke server setiap 30 Menit/ 1 Jam sekali.. nah itu gmna?
BalasHapusPertama harus di tentukan dulu, kirim datanya pakai apa?, untuk kirim data bisa pakai gprs,wifi,ethernet atau kabel serial. selanjutnya dari rtc di buat schedule kirim datanya.
HapusKomentar ini telah dihapus oleh pengarang.
BalasHapusMin, misal niih.. program rtc tersebut dipakai buat pengontrolan lampu berbasis ardiuno menggunakan sms.. apa harus ditambahkan yaa.?
BalasHapusuntuk hardwarenya tambah modul gsm, relay dan lampu
HapusThanks gann, Sangat Membantu!
BalasHapusSEmoga bermanfaat, Terima Kasih
Hapusgan mau tanya, ini rtc saya sesuai dengan coding kok setelah 2/3 hari dimatiin jadi telat sehari ya? harusnya selasa disitu ketulisnya senin mulu, pokoknya telat 23 jam lah kurleb, ada saran bang?
BalasHapusbiasanya masalah battery nya sudah low atau rtc nya sudah kurang bagus.
HapusBang itukan pake serial kalo kita upload ke arduino dan kita cabut port usbnya itu akan langsung sesuai waktunya dangan waktu ada di jam ato hp gitu?
BalasHapusjadi rtc adalah real time clock, menyimpan waktu dan waktu tetap jalan / running walaupun arduino di matikan, karena rtc dapat power dari battery yang ada di rtc.
HapusOke siap, thx
HapusMin, Rtc tidak terbaca padahal semua kabelnya sudah sesuai di petunjuk, itu kira2 kenapa ya?
BalasHapusuntuk system rtc bisa jalan, ada 3 parameter yang harus di perhatikan
Hapus1.Hardware atau module pastikan ok
2.Wiring Harus sesui, untuk rtc komunikasinya i2c jadi pastikan sda dan scl nya tidak terbalik
3.program sudah sesui dan sudah di upload ke arduino
bang bagaimana caranya kalau jam nya mau ditampilkan pada modul TM1637
BalasHapuspertama pastikan program untuk TM1637 sudah di nyalakan, selanjutnyabaru di gabung dengan program RTC
Hapus