Cara menghubungkan RTC PCF8563 dengan Arduino ESP8266 ESP32
Berhubung harga modul RTC DS3231 naik cukup mahal admin akan memberikan solusi tipe RTC PCF8563 sebagai pengganti modul RTC DS3231. Modul RTC ini cukup presisi sama seperti DS3231, Pertama admin cukup ragu dengan modul ini ketika ditawarkan oleh supplier di China. ternyata memang benar, admin gunakan modul ini untuk sistem antrian, tepatnya di sistem printer antrian. dan cukup presisi modulnya dan bisa digunakan untuk jangka panjang. pada sistem antrian tersebut, admin menghubungkan modul RTC PCF8563 dengan board ESP32 DEVKIT V1. untuk teman – teman yang menggunakan NodeMCU atau arduino pin map nya juga akan admin lampirkan.
Teman – teman bisa membeli modul ini di toko DT Production via Tokopedia.
Skema untuk Arduino
Arduino PIN | PCF8563 PIN |
5V | VCC |
GND | GND |
A4 | SDA |
A5 | SCL |
Skema untuk NodeMCU
NodeMCU PIN | PCF8563 PIN |
5V | VIN/5V (Jika pakai base board) |
GND | GND |
D2 | SDA |
D1 | SCL |
Skema untuk ESP32 DEVKIT V1
ESP32 PIN | PCF8563 PIN |
5V | VIN/5V (Jika pakai base board) |
GND | GND |
D21 | SDA |
D22 | SCL |
Selanjutnya download library untuk RTC PCF8563, kemudian tambahkan ke software Arduino IDE. Download librarynya DISINI.
Berilkut adalah contoh program untuk set tanggal dan jam, serta menampilkan tanggal dan jam di serial monitor.
#include <PCF8563.h>
PCF8563 pcf;
void setup() {
Serial.begin(9600);
pcf.init();//initialize the clock
pcf.stopClock();//stop the clock
//set time to to 31/3/2018 17:33:0
pcf.setYear(18);//set year
pcf.setMonth(3);//set month
pcf.setDay(31);//set dat
pcf.setHour(17);//set hour
pcf.setMinut(33);//set minut
pcf.setSecond(0);//set second
pcf.startClock();//start the clock
}
void loop() {
Time nowTime = pcf.getTime();//get current time
//print current time
Serial.print(nowTime.day);
Serial.print("/");
Serial.print(nowTime.month);
Serial.print("/");
Serial.print(nowTime.year);
Serial.print(" ");
Serial.print(nowTime.hour);
Serial.print(":");
Serial.print(nowTime.minute);
Serial.print(":");
Serial.println(nowTime.second);
delay(1000);
}