Membuat NTP Clock 7 Segment 4 Digit Menggunakan Wemos D1 Mini ESP8266

Pada percobaan kali ini saya akan membuat tutorial bagaimana cara membuat Jam NTP 7 Segment Menggunakan Wemos D1 Mini ESP8266. Sebelum Lanjut saya akan menjelasakan apa itu NTP. Network Time Protocol (NTP) adalah sebuah protokol yang digunakan untuk pengsinkronan waktu di dalam sebuah jaringan bisa pada jaringan LAN (Local Area Network) maupun pada jaringan internet dan untuk sinkronisasi jam-jam sistem komputer di atas paket-switching, variabel-latency jaringan data. Proses sinkronisasi ini dilakukan didalam jalur komunikasi data yang biasanya menggunakan protokol komunikasi TCP/IP. Jadi Jam ini akan secara otomatis sinkron dengan server yang kita gunakan, jadi tidak membutuhkan modul RTC lagi sebagai penyinkron waktunya. Bagi Kalian Yang ingin Membuat atau mencoba percobaan kali ini kalian perlu menyiapkan bahan sebagai berikut:
1. Modul 7 Segment
2. Wemos D1 Mini
3. Kabel USB
4. Kabel Jumper Secukupnya

Setelah bahan lengkap silahkan dirangkai sesuai Skema rangkaian di bawah ini:



Jika Rangkaian sudah selesai dirangkai, buatlah program seperti  di bawah ini:




================================== SOURCE CODE ==================================
#include "NTPClient.h"
#include "ESP8266WiFi.h"
#include "WiFiUdp.h"

#define LATCH D4
#define CLK D3
#define DATA D2
  
byte digit[10]= {0xFD, 0x31, 0xDB, 0x7B, 0x37, 0x6F, 0xEF, 0x39, 0xFF, 0x7F};//1,5+dot
byte digit1[10]= {0xFC, 0x30, 0xDA, 0x7A, 0x36, 0x6E, 0xEE, 0x38, 0xFE, 0x7E};//1,5 Normal

const char *ssid     = "xxxxxxxx"; //Wifi yang Kalian Gunakan
const char *password = "xxxxxxxx"; //Password Wifi yang Kalian Gunakan

const long utcOffsetInSeconds = 25200;

char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

// Define NTP Client to get time
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "asia.pool.ntp.org", utcOffsetInSeconds);

int hh, mm, ss;

void setup() {
  WiFi.begin(ssid, password);

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

  timeClient.begin();
  pinMode(LATCH, OUTPUT);
  pinMode(CLK, OUTPUT);
  pinMode(DATA, OUTPUT);
}

void loop() {
 timeClient.update();
  hh = timeClient.getHours();
  mm = timeClient.getMinutes();
  ss = timeClient.getSeconds();
  Serial.print(daysOfTheWeek[timeClient.getDay()]);
  Serial.print(", ");
  Serial.print(hh);
  Serial.print(":");
  Serial.print(mm);
  Serial.print(":");
  Serial.println(ss);

    int m1,m2,h1,h2;       
     m1 = mm % 10/1;
     m2 = mm % 100/10;
     h1 = hh   % 10/1;
     h2 = hh   % 100/10;
     
      digitalWrite(LATCH, LOW);
      shiftOut(DATA, CLK, MSBFIRST, ~digit[m1]); 
      shiftOut(DATA, CLK, MSBFIRST, ~digit[m2]); 
      shiftOut(DATA, CLK, MSBFIRST, ~digit[h1]);  
      shiftOut(DATA, CLK, MSBFIRST, ~digit[h2]);  
      digitalWrite(LATCH, HIGH);
      delay(500);
      digitalWrite(LATCH, LOW);
      shiftOut(DATA, CLK, MSBFIRST, ~digit1[m1]);  
      shiftOut(DATA, CLK, MSBFIRST, ~digit1[m2]); 
      shiftOut(DATA, CLK, MSBFIRST, ~digit1[h1]); 
      shiftOut(DATA, CLK, MSBFIRST, ~digit1[h2]); 
      digitalWrite(LATCH, HIGH);
      delay(500);
}


lalu Upload Program Tersebut Ke Wemos D1 Mini Dengan Kabel USB yang sudah disediakan.

Selamat Mencoba.!



1 comment

voltios said...

Hello, can you adapt the ds18b20 sensor to the circuit so that it shows the temperature, example 25.6C?

Dicky B_Mz. Powered by Blogger.