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 :
  1. Arduino
  2. Modul RTC DS1307
  3. kabel jumper secukupnya
Library :

Download library RTC DS1307 di sini (sumber adafruit)

WIRING DIAGRAM 
  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 :  

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



Subscribe to receive free email updates:

20 Responses to "CARA PROGRAM RTC DS1307 MENGGUNAKAN ARDUINO"

  1. apakah ada fitur kalibrasi pada ds1307
    soalnya itu ic sering selisih waktunya

    BalasHapus
  2. apakah sama dengan rtc ds 1302, punya librarynya RTC ds 1302??

    BalasHapus
    Balasan
    1. mas ilmi, rtc DS1307 beda dengan RTC ds1302

      Hapus
    2. Setau 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.
      Mengenai library, sudah pasti librarynya berbeda karena cara komunikasinya berbeda.

      Hapus
  3. 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?

    BalasHapus
    Balasan
    1. Pertama 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.

      Hapus
  4. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  5. Min, misal niih.. program rtc tersebut dipakai buat pengontrolan lampu berbasis ardiuno menggunakan sms.. apa harus ditambahkan yaa.?

    BalasHapus
    Balasan
    1. untuk hardwarenya tambah modul gsm, relay dan lampu

      Hapus
  6. gan 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?

    BalasHapus
    Balasan
    1. biasanya masalah battery nya sudah low atau rtc nya sudah kurang bagus.

      Hapus
  7. Bang 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?

    BalasHapus
    Balasan
    1. jadi 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.

      Hapus
  8. Min, Rtc tidak terbaca padahal semua kabelnya sudah sesuai di petunjuk, itu kira2 kenapa ya?

    BalasHapus
    Balasan
    1. untuk system rtc bisa jalan, ada 3 parameter yang harus di perhatikan
      1.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

      Hapus
  9. bang bagaimana caranya kalau jam nya mau ditampilkan pada modul TM1637

    BalasHapus
    Balasan
    1. pertama pastikan program untuk TM1637 sudah di nyalakan, selanjutnyabaru di gabung dengan program RTC

      Hapus