Hallo Warrior, Pada pembahasan ini kita akan membahas mengenai modul RTC DS3231 yang akan kita setting waktunya agar sama dengan waktu pada NTP yang ada di internet.
Baca Juga : Menambahkan Modul RTC DS3231 Pada ESP8266
Contents
Introduction
Pada pembahasan sebelumnya kita sudah membahas mengenai setting modul RTC DS3231 dan juga setting ntp client, pada pembahasan ini kita akan coba kombinasikan keduanya dengan menyetel waktu pada RTC DS3231 menggunakan NTP Client.
Sehingga waktu pada RTC akan menyesuaikan dengan zona waktu GMT +7 Jakarta yang kita dapat datanya dari NTP Server menggunakan NTP Client. Cara kerjanya bisa dilihat seperti dibawah ini.

Baca juga : Setting Waktu ESP8266 dengan menggunakan NTP Client
Praktek
Persiapan dan bahan
Berikut beberpa perangkat yang perlu kita persiapkan pada tutorial ini :
- NodeMCU/ESP8266
- Modul RTC DS3231
Installasi Library
Pastikan library RTClib dan NTPClient sudah terinstall di Arduino IDE yang kalian miliki, jika belum kalian data menginstallkan RTClib seperti pada pembahasan sebelumnya, dan NTPClient seperti dibawah ini.


Rangkaian
Rangkaian yang kita gunakan tidak jauh berbeda dengan pembahasan sebelumnya, karena yang berbeda hanya dari program yang akan kita gunakan.


Sketch Program
Pada bagian id.pool.ntp.org kalian dapat menyesuaikan dengan url zona waktu negara yang kalian tempati, kalian dapat mengeceknya pada url berikut : https://www.pool.ntp.org/zone/id
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
#include <NTPClient.h> #include <ESP8266WiFi.h> #include <WiFiUdp.h> #include <RTClib.h> #include <Wire.h> RTC_DS3231 rtc; char t[32]; // Setup Wifi const char *ssid = "warriornux.com"; const char *password = "1234567890"; const long utcOffsetInSeconds = 25200; // Setting tanggal menjadi nama hari char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; // Define NTP Client to get time WiFiUDP ntpUDP; NTPClient timeClient(ntpUDP, "id.pool.ntp.org", utcOffsetInSeconds); void setup(){ Serial.begin(115200); Wire.begin(5, 4); WiFi.begin(ssid, password); while ( WiFi.status() != WL_CONNECTED ) { delay ( 500 ); Serial.print ( "." ); } timeClient.begin(); timeClient.update(); //Kalibrasi Waktu RTC dengan NTP rtc.begin(); rtc.adjust(DateTime(F(__DATE__),F(__TIME__))); rtc.adjust(DateTime(2019, 8, 21, timeClient.getHours(), timeClient.getMinutes(), timeClient.getSeconds())); } void loop() { timeClient.update(); DateTime now = rtc.now(); //Menampilkan data waktu NTP Serial.print(daysOfTheWeek[timeClient.getDay()]); Serial.print(", "); Serial.print(timeClient.getHours()); Serial.print(":"); Serial.print(timeClient.getMinutes()); Serial.print(":"); Serial.println(timeClient.getSeconds()); delay(1000); //Menampilkan Data Waktu RTC Serial.print("Jam : "); Serial.print(now.hour()); //Menampilkan Jam Serial.print(":"); Serial.print(now.minute()); //Menampilkan Menit Serial.print(":"); Serial.print(now.second()); //Menampilkan Detik Serial.println(); delay(1000); } |
Setelah program berhasil di upload, buka serial monitor dan lihat hasilnya.
Hasil Percobaan
Berikut merupakan hasilnya apabila kita membuka serial monitor.

Pada bagian void setup disana ada script yang berfungsi untuk mengkalibrasi waktu dari si RTC DS3231 tersebut, pada bagian berikut kita sisipkan script NTP yang difungsikan untuk memanggil waktu dari internet. Sehingga RTC akan otomatis di set sesuai dengan waktu NTP.
Kesimpulan
Dengan melakukan kombinasi antara NTPclient dan RTClib kita dapat melakukan kalibrasi waktu pada RTC sesuai dengan zona waktu saat ini. Dengan menyisipkan pemanggilan waktu NTP pada saat setup RTC, menjadikan RTC DS3231 memiliki waktu yang sama dengan zona waktu GMT +7.