Membuat Smart Clock Simple dengan Network Time Protocol (NTP)

NTP merupakan singkatan dari Network Time Protocol. NTP server digunakan untuk singkronisasi waktu dalam sebuah jaringan internet. Dengan adanya WiFi pada NodeMCU memungkinkan kita untuk bisa terkoneksi dengan jaringan internet dan mengakses NTP (Netwotk Time Protocol) kemudian menampilkannya pada Display LCD I2C 16×2.

Komponen

  • Modul Trainer IOT
  • Board NodeMCU ESP8266
  • Display LCD 16×2
  • Modul I2C
  • Kabel Jumper (Male – Female, Female – Female)
  • Kabel USB
  • Arduino IDE

Diagram Wiring

Keterangan :

LCD I2C 16×2Node MCU
SCLD1(GPIO5)
SDAD2(GPIO4)

Note : Hubungkan Port yang ada di Modul I2C LCD (Ground ke ground, VCC ke VCC, SCL ke SCL dan SDA ke SDA pada port Display yang ada di Trainer KIT). Perhatikan juga pada Pin Power Selector jika sumber listrik dari PC langsung hubungkan 5v ke IN sedangkan kalau memakai sumber langsung dari listrik hubungkan 5v ke EXT.

Implementasi

  • Install Board ESP8266
    1. Buka File > Preferences di Arduino IDE.
    2. Tambahkan URL: http://arduino.esp8266.com/stable/package_esp8266com_index.json di Additional Boards Manager URLs.
    3. Pilih Tools > Board > Board Manager.
    4. Masukkan “esp8266” pada kolom pencarian, akan muncul pilihan board esp8266 by ESP8266 Community, untuk versi Board pilih 2.5.2, kemudian klik Install.
    5. Jika Instalasi benar, akan muncul board Esp8266.
    6. Pada menu pemilihan board Pilih board NodeMCU 1.0 (ESP-12E Module).
  • Install Library
    • Silahkan download terlebih dahulu Library NTP Client (Disini).
    • Silahkan download terlebih dahulu Library WIFI (Disini).
    • Silahkan download terlebih dahulu Library LiquidCrystal_I2C (Disini)
    • Setelah di download, file .zip library tidak perlu di ekstrak ya. Tinggal ikuti langkah berikut :
      1. Pada Arduino IDE, klik Menu Sketch -> Include Library -> Add .ZIP Library…
      2. Cari file Library yang sudah di Download sebelumnya, lalu pilih dan klik Open.

Kode Program

Langkah-langkah di Arduino IDE

  • Memverifikasi Kode
    • Klik tombol Verify untuk memeriksa kesalahan pada kode.
  • Upload Program
    • Hubungkan ESP8266 ke komputer.
    • Pilih board ESP8266, pastikan board yang dipilih NodeMCU 1.0 ESP-12E, uploud speed adalah 921600, dan Port telah sesuai.
    • Klik tombol Upload untuk mengunggah program.

Hasil Akhir

Jika berhasil maka akan tampil seperti gambar dibawah ini:

Video Tutorial

FAQ

Apa itu NTP (Network Time Protocol)?

NTP adalah protokol yang digunakan untuk menyinkronkan waktu di perangkat menggunakan server waktu internet. Ini memastikan jam pada ESP8266 selalu akurat

Mengapa menggunakan ESP8266 untuk proyek ini?

ESP8266 adalah mikrokontroler yang dilengkapi dengan modul WiFi, sehingga bisa terhubung ke internet dan mendapatkan waktu dari server NTP secara langsung tanpa memerlukan sumber waktu lokal.

Apa kelebihan menggunakan LCD 16×2 I2C dibandingkan LCD biasa?

LCD I2C hanya membutuhkan 2 pin (SDA dan SCL) dibandingkan LCD biasa yang memerlukan lebih banyak pin. Ini membuatnya lebih mudah dihubungkan ke mikrokontroler dan menghemat pin GPIO.

Apakah saya perlu mengatur ulang waktu secara manual?

Tidak, karena proyek ini menggunakan NTP untuk secara otomatis mendapatkan waktu dari server waktu internet, sehingga waktu selalu sinkron dan akurat.

Bagaimana cara menambahkan fitur tambahan seperti alarm atau sensor suhu?

Fitur tambahan dapat ditambahkan dengan memodifikasi kode dan menambahkan komponen tambahan seperti buzzer untuk alarm atau sensor suhu seperti DHT11/DHT22 untuk membaca suhu dan menampilkannya di LCD.

Kesimpulan

Nah teman-teman sudah berhasil membuatnya kan? Mudah bukan cara Membuat Smart Clock dengan ESP8266 dan NTP memungkinkan penampilan waktu real-time secara akurat dengan koneksi WiFi. Penggunaan LCD 16×2 I2C menyederhanakan tampilan jam dan tanggal, serta meminimalkan penggunaan pin. Proyek ini sederhana, hemat biaya, dan dapat dikembangkan dengan fitur tambahan seperti alarm atau integrasi IoT.

Leave a Reply

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