Wemos D1 mini with LCD NTP Server

Realtime Clock NTP Server with Wemos D1 Mini ESP8266

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.

NTP Server

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 :

  1. Client Device misalnya yang akan digunakan wemos D1 Mini ESP8266 terhubung ke server menggunakan User Datagram Protocol (UDP) pada port 123
  2. Setelah itu Client request ke server NTP
  3. Respon dari request tersebut, server NTP mengirimkan Time-Stamp Packet
  4. Time-Stamp Packet berisi banyak informasi data seperti waktu UNIX, zona waktu, dan lain – lain
  5. Dari data tersebut Client menterjemahkan kedalam data waktu dan tanggal saat ini

Ilustrasi NTP Server dan Wemos D1 mini sebagai client

Tutorial mendapatkan waktu dari NTP dengan Wemos D1 mini ESP8266

Bahan yang diperlukan :

  1. Wemos D1 mini
  2. LCD 16×2 dan PCF8574
  3. Kabel Jumper
  4. Regulator LM2596
  5. Catudaya 12 / 5 Vdc minimal 2A
  6. Koneksi Internet

Gambar rangkaian untuk tutorial diatas

Wemos D1 mini + LCD NTP Server

Hal pertama yang dilakukan yaitu instalasi libraries NTP Client pada Arduino IDE, dikarenakan sebagai include header pengakasesan NTP Server.

Berikut langkah – langkah instalasinya :

  1. Buka software Arduino IDE
  2. Pastikan komputer atau laptop terhubung dengan internet
  3. Kemudian klik Sketch > Include Library > Manage Libraries Instalasi libraries NTP Server di arduino IDE
  4. Ketikan “NTPClient by Fabrice Weinberg”  dan klik install libraries NTP Server di arduino IDE

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”]

I2C SCANNER WEMOS D1 MINI DAN PCF8574

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

hasil program diatas Wemos D1 mini + LCD NTP Server

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

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *