ESP8266 Arduino IDE – Setting Waktu dengan NTP Client

Hallo Warrior, pada pembahasan sebelumnya kita sudah membahas mengenai Setting waktu menggunakan modul RTC DS3231. Disini kita akan membahas mengenai Setting waktu tanpa modul RTC melainkan menggunakan NTP (Network Time Protocol).

Baca juga : Setting Waktu pada Modul RTC DS3231 Menggunakan ESP8266

Apa itu NTP ?

NTP (Network Time Protocol) Merupakan sebuah protokol jaringan yang berfungsi untuk mensinkronisasi waktu berupa tanggal, jam, menit dan detik. Protokol ini menggunakan jaringan TCP/IP dengan port 123.

NTP ini memiliki dua sisi diantaranya ntp server dan ntp client, server disini berfungsi sebagai pusat waktu yang membagikan data waktu kepada client. Sedangkan client yang memiliki alamat akses ke server tersebut akan melakukan sinkronisasi sehingga waktunya sama dengan server.

Untuk mengakses pool url dari ntp server di interner, kalian dapat mengaksesnya pada url tersebut https://www.pool.ntp.org/zone/id.

Pada tutorial ini kita akan coba melakukan konfigurasi ntp client pada NodeMCU ESP8266, sehingga dia dapat mengakses waktu sesuai dengan ntp server pool di situs pool ntp. Berikut skema gambaran proses sinkronisasinya.

Ilustrasi NTP Client
Ilustrasi NTP Client

Praktek

Persiapan dan bahan

Pada praktek ntp ini kita hanya memerlikan NodeMCU ESP8266 dan juga koneksi internet saja. Karena kita hanya akan mengakses waktu.

Installasi Library

Sebelum kita memasukan program ntp client ini, pastikan bahwa library ntpclient sudah terinstall pada arduino IDE yang kita miliki. Jika belum kalian dapat mencarinya pada library manager seperti dibawah ini.

Library NTP Client sudah terinstall
Library NTP Client sudah terinstall

Sketch Program

Pada program ini kita menggunakan alamat ntp server id.pool.ntp.org sesuai dengan pool yang kita dapat pada website yang sudah diterangkan pada bagian sebelumnya.

#include <NTPClient.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>

// Setup Wifi
const char *ssid     = "jenamonster";
const char *password = "c0c0d0tb4u";


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

  WiFi.begin(ssid, password);

  while ( WiFi.status() != WL_CONNECTED ) {
    delay ( 500 );
    Serial.print ( "." );
  }

  timeClient.begin();
}

void loop() {
  timeClient.update();

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

Hasil Percobaan

Setelah program berhasil kita upload, selanjutnya kita cek hasil yang sudah kita buat dengan membuka serial monitor dan apabila berhasil maka akan muncul seperti dibawah ini.

Kebetulan disini saya melakukan percobaan pada pukul 23. 38 WIB dan ternyata ketika saya mengecek jam yang ada pada laptop terlihat waktunya sesuai dengan hasil serial monitor.

Kesimpulan

Menurut hasil percobaan yang sudah kita lakukan, disini kita bisa menjalankan fungsi waktu pada NodeMCU ESP8266 tanpa perlu menggunakan modul RTC. Kita hanya perlu menjalankan NTP Client sehingga kita bisa mengakses waktu seperti jam, menit, detik, sesuai pool ntp server.

Referensi

Tresna Widiyaman Avatar
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments