Jam Digital dengan Modul Real Time Clock RTC pengaturan via Wifi
Modul Jam Digital atau sering disebut dengan Real Time Clock banyak diaplikasikan untuk mendukung proyek lain seperti data logger, ataupun hanya sekedar penunjuk waktu saja. RTC DS1307 yang digunakan menggunakan komunikasi I2C agar hemat PIN.
Selama ini Pengaturan/setting bisa dilakukan secara manual yaitu ketika upload kode Baca Juga Jam Digital dengan Relay Time Clock RTC DS1307, namun hal ini tidak praktis! Apalagi menggunakan modul bluetooth menjadi ribet! Kita akali menggunakan Wifi saja! tentu kita butuh mikrokontroler yaitu NodeMCU serta koding berbasis web server ajax. Keunggulan Jam Digital dengan Modul RTC pengaturan via Wifi yaitu kita bebas membuat tampilan berbasis CSS+HTML+ Java script! serta tidak butuh alat / modul tambahan lagi lho! Kalian bisa baca Membuat Relay Berbasis Webserver berbasis Ajax dengan NodeMCU
RTC DS1307 module adalah chip RTC yang memungkinkan penggunaannya dalam berbagai aplikasi yang memerlukan pengukuran waktu dan tanggal secara real-time. RTC DS1307 memiliki fitur-fitur seperti deteksi daya rendah, konsumsi daya rendah, dan memori SRAM 56-byte yang dapat diakses oleh mikrokontroler.
Sedangkan Display nya menggunakan LCD 2×16 I2C biar hemat pin juga. baca Display LCD 2×16 character untuk mikrokontroler
Update / Setting Jam RTC berbasis Web Server NodeMCU
Saat ini dipasaran banyak menjual alat penunjuk waktu sholat yang bisa dikendalikan lewat ponsel via bluetooth. Nah kali ini kita akan menggunakan komunikasi wireless juga berbasis WiFi dengan NodeMCU. Biasanya pengaturan RTC menggunakan jam di laptop maka nanti juga demikian, hanya saja akan diakses via browser di sisi client untuk pengaturannya.
Wiring nya sebagai berikut semuanya dirangkai secara pararel saja
Pin NodeMCU Amica | LCD 2 x 16 | Modul RTC DS1307 |
Vin (5 volt) | VCC | VCC |
Ground | Grnd | Grnd |
D1 | SCL | SCL |
D2 | SDA | SDA |
Library RTC dan LCD 2 x 16 interface I2C
Untuk library yang digunakan, bisa kalian download
Berikut tampilan web disisi client ketika diakses
jadi Jam Digital dengan Modul RTC pengaturan via Wifi sangat mudah sekali ketika gunakan, hanya bermodalkan Wifi, kita bisa mengatur dengan mudah.
Kode Header.h
Nanti kita akan pisahkan header.h yang berisi kode html untuk bisa diakses di client. Kode HTML dibawah berikut ini akan tampil jika kalian telah login atau telah mendaftar
Kode Arduino/NodeMCU jam_RTC_wifi.ino nya
#include <Wire.h> #include "RTClib.h" #include <LiquidCrystal_I2C.h> #include <ESP8266WiFi.h> #include "index.h" //Our HTML webpage contents #include <ESP8266WebServer.h> LiquidCrystal_I2C lcd(0x27, 16, 2); RTC_DS1307 rtc; char namaHari[7][12] = {"Mingg", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"}; const char *ssid_AP = "clock"; //menjadi hotspot AP acces point const char *password_AP = "12345678"; ESP8266WebServer server(80); //Server on port 80 String webpage = MAIN_page; //Read HTML contents #define LED 2 // untuk lampu LED void handleRoot() { String s = MAIN_page; //Read HTML contents server.send(200, "text/html", s); //Send web page } void handleForm() { server.send(200, "text/html","sukses"); //Send web page String tahun = server.arg("tahun"); String bulan = server.arg("bulan"); String hari = server.arg("tanggal"); String jam = server.arg("jam"); String menit = server.arg("menit"); String detik = server.arg("detik"); //https://www.ardumotive.com/ds1307_rtc-en.html rtc.adjust(DateTime(tahun.toInt(), bulan.toInt(), hari.toInt(), jam.toInt(), menit.toInt(), detik.toInt())); rtc.begin(); } void setup() { // put your setup code here, to run once: pinMode(LED_BUILTIN, OUTPUT); Serial.begin(9600); WiFi.mode(WIFI_AP); WiFi.softAP(ssid_AP, password_AP); // Membuat Access Point Wire.begin(); if (! rtc.begin()) { Serial.println("RTC TIDAK TERBACA"); //while (1); } //rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));//update secara manual pakai komputer //rtc.adjust(DateTime(2016, 11, 19, 19, 45, 0)); if (! rtc.isrunning()) { Serial.println("RTC is NOT running!"); //rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));//update rtc dari waktu komputer } rtc.begin(); //lcd.begin(); lcd.init(); lcd.home(); lcd.backlight(); server.on("/",handleRoot); server.on("/action_page", handleForm); //form action is handled here server.begin(); } void loop() { server.handleClient(); 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.clear(); String tanggalsekarang = String(namaHari[now.dayOfTheWeek()])+", "+String(now.day())+"/"+String(now.month())+"/"+String(now.year()); String jamsekarang = String(now.hour())+":"+String(now.minute())+":"+String(now.second()); lcd.setCursor(0, 0); lcd.print(tanggalsekarang); lcd.setCursor(0, 1); lcd.print(jamsekarang); digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) }
Setelah kita upload dan aktifkan ponsel/komputer untuk terhubung ke Hotspot dengan alamat diatas, kita buka browser dengan alamat http://192.168.4.1