ESP32 - NTP Clock

 


ESP32 adalah mikrokontroler yang sangat populer di kalangan penggemar IoT (Internet of Things) karena memiliki Wi-Fi dan Bluetooth terintegrasi. Salah satu proyek paling praktis yang dapat Anda buat dengan ESP32 adalah Jam NTP (Network Time Protocol).

Proyek ini memungkinkan ESP32 untuk terhubung ke internet, mengambil waktu yang sangat akurat dari server waktu global (NTP Server), dan menampilkannya. Jauh lebih akurat daripada jam berbasis kristal saja!

Kode: NTP Clock

#include <WiFi.h>
#include <NTPClient.h>
#include <WiFiUdp.h> // ---------- Konfigurasi Wi-Fi ---------- const char* ssid = "NAMA_WIFI_ANDA"; const char* password = "PASSWORD_WIFI_ANDA"; // ---------- Konfigurasi NTP ---------- // Untuk WIB (Waktu Indonesia Barat) = GMT+7 const long gmtOffset_sec = 25200; // 7 jam * 3600 detik const int daylightOffset_sec = 0; // Tidak ada Daylight Saving Time const char* ntpServer = "pool.ntp.org"; // Objek UDP dan NTPClient WiFiUDP ntpUDP; NTPClient timeClient(ntpUDP, ntpServer, gmtOffset_sec, daylightOffset_sec); // ------------------------------------ void setup() { // Inisialisasi komunikasi serial Serial.begin(115200); Serial.println(); Serial.print("Menghubungkan ke Wi-Fi: "); Serial.println(ssid); // Mulai koneksi Wi-Fi WiFi.begin(ssid, password); // Tunggu hingga koneksi berhasil while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } // Tampilkan status koneksi Serial.println(); Serial.println("Wi-Fi terkoneksi!"); Serial.print("Alamat IP ESP32: "); Serial.println(WiFi.localIP()); // Mulai klien NTP timeClient.begin(); } void loop() { // Perbarui waktu dari server NTP. Ini hanya dilakukan jika interval update sudah terpenuhi // atau jika dipanggil secara manual. Kita bisa memanggilnya di loop. timeClient.update(); // Ambil waktu yang sudah diformat (HH:MM:SS) String formattedTime = timeClient.getFormattedTime(); // Ambil Hari (0=Minggu, 1=Senin, dst) int day = timeClient.getDay(); // Untuk mendapatkan tanggal, bulan, dan tahun, NTPClient memiliki fungsi terbatas. // Kita akan menggunakan fungsi `getEpochTime()` dan mengonversinya. unsigned long epochTime = timeClient.getEpochTime(); // Konversi epoch time ke struktur waktu lokal struct tm *ptm = gmtime ((time_t *)&epochTime); int currentYear = ptm->tm_year + 1900; int currentMonth = ptm->tm_mon + 1; int currentDay = ptm->tm_mday; // Buat string tanggal yang lebih mudah dibaca (DD/MM/YYYY) String dateString = String(currentDay) + "/" + String(currentMonth) + "/" + String(currentYear); // Tampilkan di Serial Monitor Serial.print("Waktu saat ini: "); Serial.print(formattedTime); Serial.print(" | Tanggal: "); Serial.println(dateString); // Tunggu 5 detik sebelum update berikutnya delay(5000); }

 Berikut saat dijalankan dan waktu serta tanggal ditampilkan di Serial Monitor :

 

Latest
Sebelumnya
Post Sebelumnya »

EmoticonEmoticon

Note: Only a member of this blog may post a comment.