Membuat NTP Clock Dengan panel P10 Menggunakan Wemos D1 Mini ESP8266
Pada percobaan kali ini saya akan membuat tutorial bagaimana cara membuat Jam NTP P10 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 P10 4 Buah
2. Wemos D1 Mini
3. Kabel USB
4. Kabel Jumper Secukupnya
5. Power Supply 5V 20A
Setelah bahan lengkap silahkan dirangkai sesuai Skema rangkaian di bawah ini:
================================== SOURCE CODE ==================================
#include "NTPClient.h"
#include "ESP8266WiFi.h"
#include "WiFiUdp.h"
#include "HJS589.h"
#include "fonts/Mono5x7.h"
#include "fonts/bmz15x32.h"
#include "fonts/bmz10x16.h"
#include "fonts/angka6x13.h"
#include "fonts/TimesNewRoman12.h"
// SETUP DMD HJS589
#define DispS_WIDE 4
#define DispS_HIGH 1
HJS589 Disp(DispS_WIDE, DispS_HIGH); // Jumlah Panel P10 yang digunakan (KOLOM,BARIS)
// HJS589 P10 FUNGSI TAMBAHAN UNTUK NODEMCU ESP8266
void ICACHE_RAM_ATTR refresh() {
Disp.refresh();
timer0_write(ESP.getCycleCount() + 80000);
}
void Disp_init() {
Disp.start();
noInterrupts();
timer0_isr_init();
timer0_attachInterrupt(refresh);
interrupts();
Disp.clear();
}
const char *ssid = "xxxxxxxx";
const char *password = "xxxxxxxx";
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();
//DMD
Disp_init();
Disp.setBrightness(50);
Disp.setFont(Mono5x7);
Disp.drawText(0, 0,"Connecting.");
delay(500);
Disp.drawText(0, 0,"Connecting..");
delay(500);
Disp.drawText(0, 0,"Connecting...");
delay(500);
Disp.drawText(0, 0,"Connecting....!");
delay(500);
Disp.clear();
}
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);
char BuffH1[20];
char BuffH2[20];
char BuffM1[20];
char BuffM2[20];
char BuffD1[20];
char BuffD2[20];
int s1,s2,m1,m2,h1,h2;
s1 = ss % 10/1;
s2 = ss % 100/10;
m1 = mm % 10/1;
m2 = mm % 100/10;
h1 = hh % 10/1;
h2 = hh % 100/10;
sprintf(BuffD1, "%.1d", s1);
sprintf(BuffD2, "%.1d", s2);
sprintf(BuffM1, "%.1d", m1);
sprintf(BuffM2, "%.1d", m2);
sprintf(BuffH1, "%.1d", h1);
sprintf(BuffH2, "%.1d", h2);
Disp.setFont(bmz10x16);
Disp.drawText(20, 0, BuffH2);
Disp.drawText(32, 0, BuffH1);
Disp.drawText(53, 0, BuffM2);
Disp.drawText(65, 0, BuffM1);
Disp.drawText(86, 0, BuffD2);
Disp.drawText(98, 0, BuffD1);
Disp.drawCircle(47,3,2);
Disp.drawCircle(47,12,2);
Disp.drawCircle(80,3,2);
Disp.drawCircle(80,12,2);
Disp.drawCircle(47,3,1);
Disp.drawCircle(47,12,1);
Disp.drawCircle(80,3,1);
Disp.drawCircle(80,12,1);
Disp.drawCircle(47,3,0);
Disp.drawCircle(47,12,0);
Disp.drawCircle(80,3,0);
Disp.drawCircle(80,12,0);
Disp.drawLine(0,0,0,15,1);
Disp.drawLine(15,0,15,15,1);
Disp.drawLine(0,0,15,0,1);
Disp.drawLine(0,15,15,15,1);
Disp.drawLine(2,2,4,4,1);
Disp.drawLine(4,2,2,4,1);
Disp.drawLine(11,2,13,4,1);
Disp.drawLine(13,2,11,4,1);
Disp.drawLine(2,11,4,13,1);
Disp.drawLine(4,11,2,13,1);
Disp.drawLine(11,11,13,13,1);
Disp.drawLine(13,11,11,13,1);
Disp.drawLine(6,6,9,9,1);
Disp.drawLine(6,9,9,6,1);
Disp.drawLine(112,0,112,15,1);
Disp.drawLine(127,0,127,15,1);
Disp.drawLine(112,0,127,0,1);
Disp.drawLine(112,15,127,15,1);
Disp.drawLine(114,2,116,4,1);
Disp.drawLine(116,2,114,4,1);
Disp.drawLine(123,2,125,4,1);
Disp.drawLine(125,2,123,4,1);
Disp.drawLine(114,11,116,13,1);
Disp.drawLine(116,11,114,13,1);
Disp.drawLine(123,11,125,13,1);
Disp.drawLine(125,11,123,13,1);
Disp.drawLine(118,6,121,9,1);
Disp.drawLine(118,9,121,6,1);
}
lalu Upload Program Tersebut Ke Wemos D1 Mini Dengan Kabel USB yang sudah disediakan. Bagi Yang Belum Mempunyai Library HJS589 dan NTPClient Silahkan Download.
Selamat Mencoba.!
Selamat Mencoba.!
2 comments
Mas, apa bedanya lib HJS sama DMDESP? bagus mana mas?
Bismillah, sy sudah berhasil buat, tapi beberapa saat layar jadi blank (kadang bisa bertahan lama kadang juga cepat), harus di reset baru tampil lagi, sudah ganti beberapa panel tetap saja gitu, sudah pake buffer juga, kira2 masalahnya dimana ya. Trima kasih
Post a Comment