×

Jam Digital dengan Relay Time Clock RTC DS1307

Jam Digital dengan Relay Time Clock RTC DS1307

3,342 Views

Kali ini saya akan membahas mengenai Relay Time Clock atau biasa disebut disingkat dengan RTC yang akan digunakan sebagai logger untuk mencatat nilai sensor berdasarkan waktu sehingga dengan demikian, kita bisa tahu catatan logger setiap hari realtime. Data time series akan digunakan untuk analisis tingkat lanjut.

Ada banyak jenis yang bisa kita gunakan seperti module RTC DS3231.  Kebetulan saya hanya punya RTC DS1307 dengan Interface atau antarmuka untuk mengakses modul ini yaitu menggunakan i2c atau two wire (SDA dan SCL). Sehingga apabila diakses menggunakan mikrontroler misal Arduino Uno pin yang dibutuhkan 2 pin saja dan 2 pin power. RTC DS1307 ini pada umumnya sudah tersedia dengan battery CR2032 3V yang berfungsi sebagai back up RTC apabila catudaya utama mati. RTC Ds1307 sangat irit daya sekali, saya sudah gunakan hampir 2 tahun tapi tidak pernah ganti baterai.

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 :
Module/Part  yang di butuhkan :
  1. Arduino
  2. Modul RTC DS1307
  3. kabel jumper secukupnya

Library :

Download library RTC DS1307 di sini (sumber adafruit)

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
See also  Pengertian dan Penggunaan Modul I2C: Memahami Komunikasi Serial Antar-Perangkat

Setting Jam berdasarkan Komputer

Jadi sebelum kita gunakan, kita harus setting RTC agar diset dengan jam yang ada dikomputer, caranya sebagai berikut

#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 () {
    
}

jadi setelah kita setting untuk pertama kali, maka RTC tersebut akan mengikuti jam yang ada dikomputer. Nah selanjutnya kita bisa flash ulang menggunakan kode berikut

#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);
  rtc.begin();
}

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);
}

Sambungkan dengan LCD 16×2. Agar tampilan lebih menarik, maka kita butuh LCD 2×16 untuk menampilkan jam digital diatas.

 

Cara mengakses modul display LCD 16×2

Spesifikasi dari LCD 16×2

Adapun fitur – fitur yang tersedia antara lain

  • Terdiri dari 16 kolom dan 2 baris
  • Dilengkapi dengan back light
  • Mempunyai 192 karakter tersimpan
  • Dapat dialamati dengan mode 4-bit dan 8-bit
  • Terdapat karakter generator terprogram
See also  Mengatur Kecepatan motor DC tanpa kehilangan daya dengan PWM

Pin – pin LCD 16×2 dan keterangannya

 

 

Keterangan :

  1. GND : catu daya 0Vdc
  2. VCC : catu daya positif
  3. Constrate : untuk kontras tulisan pada LCD
  4. RS atau Register Select :
    • High : untuk mengirim data
    • Low : untuk mengirim instruksi
  5. R/W atau Read/Write
    • High : mengirim data
    • Low : mengirim instruksi
    • Disambungkan dengan LOW untuk pengiriman data ke layar
  6. E (enable) : untuk mengontrol ke LCD ketika bernilai LOW, LCD tidak dapat diakses
  7. D0 – D7 = Data Bus 0 – 7
  8. Backlight + : disambungkan ke VCC untuk menyalakan lampu latar
  9. Backlight – : disambungkan ke GND untuk menyalakan lampu latar

Wiring nya yaitu

  1. Pin V0    pada    LCD    disambungkan ke kaki tengah potensiometer, sementara masing-masing kaki potensiometer yang ada di pinggir disambungkan ke VCC dan GND.
    Jika nanti tampilan tulisannya kurang jelas, silakan putar-putar potensiometernya.
  2. Pin R/W pada LCD disambungkan ke GND
  3. Pin RS pada LCD disambungkan ke pin 12 pada Arduino
  4. Pin E pada LCD disambungkan ke pin 11 pada Arduino
  5. Pin untuk data (D4 – D7) pada LCD disambungkan ke pin 5, 4, 3, 2, pada Arduino
    1. D4 ke pin no 5
    2. D5 ke pin no 4
    3. D6 ke pin no 3
    4. D7 ke pin no 2
  6. VDD dan A pada LCD disambungkan ke +5v
  7. VSS dan K pada LCD disambungkan ke GND

Lebih jelasnya kalian bisa melihat disini

Maka untuk menampilkan jam digitalnya gunakan kode berikut

#include <Wire.h>
#include "RTClib.h"
#include <LiquidCrystal.h>

RTC_DS1307 rtc;
char namaHari[7][12] = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"};
LiquidCrystal lcd(12,11,5,4,3,2);
void setup()
{  
  lcd.begin(16, 2);
  lcd.setCursor(00,00); //set pada baris 1 dan kolom 1
  rtc.begin();
  Serial.begin(9600);
  pinMode(13, OUTPUT);
  delay(1000);   
//  rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));//update rtc dari waktu komputer
//  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()
{
   //tidak melakukan apa-apa
    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();
    lcd.print(now.hour(),DEC);
    lcd.print(":"); 
    lcd.print(now.minute(),DEC); 
    lcd.print(":"); 
    lcd.print(now.second(),DEC); 
    delay(500);
    lcd.clear();
}

 

See also  Display LCD 2×16 character untuk mikrokontroler

 

Jadi  ketika catu daya arduino dicabut, RTC DS1307 akan tetap berjalan seperti layaknya CMOS di motherboard karena RTC DS1307 sudah dilengkapi dengan baterai tersendiri.

ref:

http://www.labelektronika.com/2018/02/cara-program-rtc-ds1307-menggunakan-Arduino.html

https://www.nyebarilmu.com/cara-mengakses-modul-display-lcd-16×2/

You May Have Missed