NTP Server
NTP Server merupakan Internet Protokol (IP) standar guna menyinkronisasikan jam komputer ke beberapa referensi melalui jaringan internet.
Pada pembuatan project tertentu, tentu kita membutuhkan data logger sebagai penyimpan data berdasarkan waktu tertentu.
Untuk itu kita menggunakan modul tambahan RTC misalnya DS3231, DS1307, DS1302, sebagai dasar waktu untuk penyimpanan.
Akan tetapi itu, kadang pada RTC tersebut tingkat keakuratannya tidak selalu oke dan butuh untuk penyesuaian manual sehingga sesuai dengan waktu yang semestinya.
Dari sinilah dipilihlah penggunaan NTP Server atau Network Time Protocol yang dimana apabila modul wifi dapat mengambil data waktu secara gratis.
Dan Modul wifi tersebut misalnya ESP8266 tidak perlu menambahkan perangkat atau modul RTC tambahan lagi.
Protokol tersebut dapat digunakan untuk menyinkronkan semua perangkat jaringan ke Coordinated Universal Time (UTC) dalam beberapa milidetik (50 milidetik melalui Internet publik dan di bawah 5 milidetik jaringan LAN).
Coordinated Universal Time (UTC) merupakan standar waktu yang digunakan di seluruh dunia, yang berkaitan dengan GMT (Greenwich Time).
NTP dapat mensinkronisasi jam komputer, handphone secara otomatis sesuai dengan waktu lokasi posisi saat itu dengan waktu zona lokal.
Cara Kerja dari NTP atau Network Time Protocol
NTP dapat beroperasi dalam beberapa cara konfigurasi, dan konfigurasi yang paling umum yaitu beroperasi dalam mode client-server.
Prinsip cara kerja dasarnya yaitu :
- Client Device misalnya yang akan digunakan wemos D1 Mini ESP8266 terhubung ke server menggunakan User Datagram Protocol (UDP) pada port 123
- Setelah itu Client request ke server NTP
- Respon dari request tersebut, server NTP mengirimkan Time-Stamp Packet
- Time-Stamp Packet berisi banyak informasi data seperti waktu UNIX, zona waktu, dan lain – lain
- Dari data tersebut Client menterjemahkan kedalam data waktu dan tanggal saat ini
Tutorial mendapatkan waktu dari NTP dengan Wemos D1 mini ESP8266
Bahan yang diperlukan :
- Wemos D1 mini
- LCD 16×2 dan PCF8574
- Kabel Jumper
- Regulator LM2596
- Catudaya 12 / 5 Vdc minimal 2A
- Koneksi Internet
Gambar rangkaian untuk tutorial diatas
Hal pertama yang dilakukan yaitu instalasi libraries NTP Client pada Arduino IDE, dikarenakan sebagai include header pengakasesan NTP Server.
Berikut langkah – langkah instalasinya :
- Buka software Arduino IDE
- Pastikan komputer atau laptop terhubung dengan internet
- Kemudian klik Sketch > Include Library > Manage Libraries
- Ketikan “NTPClient by Fabrice Weinberg” dan klik install
Selain itu dibutuhkan juga driver kedua yaitu driver LCD PCF8574, dengan metode yang sama seperti diatas.
Untuk libraries driver LCD PCF8574 yang dipakai yaitu “LiquidCrystal_PCF8574 by Matthias Hertel“.
Setelah itu, hal yang pertama dilakukan yaitu i2c scanner untuk mencari alamat dari driver lcd tersebut.
Program dapat didapatkan dan langsung bisa diupload, jangan lupa setting di board wemos D1 mini. [ddownload id=”3104”]
Program Realtime Clock dari NTP Sederhana menggunakan LCD
//www.nyebarilmu.com #include <NTPClient.h> #include <ESP8266WiFi.h> #include <WiFiUdp.h> #include <LiquidCrystal_PCF8574.h> #include <Wire.h> LiquidCrystal_PCF8574 lcd(0x27); const char *ssid = "trial11"; const char *password = "1234567890"; const long utcOffsetInSeconds = 3600*7; //area saya ada di WIB Indonesia, //dan itu harus +7jam dari GMT //sehingga program diatas harus dikalikan dengan 7 saja char daysOfTheWeek[7][12] = {"Minggu", "Senin ", "Selasa", "Rabu ", "Kamis ", "Jumat ", "Sabtu "}; //Definisi tool NTP nya WiFiUDP ntpUDP; NTPClient timeClient(ntpUDP, "pool.ntp.org", utcOffsetInSeconds); void setup(){ Serial.begin(9600); Wire.begin(); lcd.setBacklight(255); lcd.noCursor(); lcd.setCursor(00,00); lcd.print("nyebarilmu.com"); lcd.setCursor(00,1); lcd.print("NTP Server"); delay(2000); lcd.clear(); WiFi.begin(ssid, password); while ( WiFi.status() != WL_CONNECTED ) { delay ( 500 ); lcd.setCursor(00,00); lcd.print ("Connecting"); } lcd.clear(); timeClient.begin(); } void loop() { timeClient.update(); lcd.setCursor(00,00); lcd.print(daysOfTheWeek[timeClient.getDay()]); lcd.print(","); if (timeClient.getHours() <= 9) {lcd.print("0");} lcd.print(timeClient.getHours()); lcd.print(":"); if (timeClient.getMinutes() <= 9) {lcd.print("0");} lcd.print(timeClient.getMinutes()); lcd.print(":"); if (timeClient.getSeconds() <= 9) {lcd.print("0");} lcd.println(timeClient.getSeconds()); lcd.setCursor(15,00); lcd.print(" "); //Serial.println(timeClient.getFormattedTime()); delay(1000); }
Hasil dari program diatas
Pool.ntp.org secara otomatis memilih server waktu yang secara geografis terdekat dengan Anda. Akan Tetapi jika Anda ingin memilih secara eksplisit, dapat digunakan salah satu sub-zona dari pool.ntp.org.
Zona | Hostname |
Di seluruh dunia | pool.ntp.org |
Asia | asia.pool.ntp.org |
Eropa | europe.pool.ntp.org |
Amerika Utara | north-america.pool.ntp.org |
Oceania | oceania.pool.ntp.org |
Amerika Selatan | south-america.pool.ntp.org |
Dari program diatas dapat dikembangkan untuk schedule timer automatic, misalnya menghidupkan matikan lampu dijalanan, tanpa menggunakan RTC tambahan.
Semoga bermanfaat, salam nyebarilmu.com