Site icon ndoWare

Proyek DIY Jam Digital WiFi Berbasis ESP8266: Sinkron Otomatis dengan Waktu Dunia!

Dalam era digital yang semakin terhubung, perangkat yang dapat berkomunikasi dengan jaringan internet semakin banyak diminati. Salah satu perangkat yang menjadi perhatian adalah mikrokontroler ESP8266, sebuah modul WiFi yang memungkinkan berbagai proyek elektronik untuk terkoneksi dengan internet. Dengan harga yang terjangkau dan kemampuan yang mumpuni, ESP8266 sering digunakan dalam berbagai proyek Internet of Things (IoT), termasuk untuk membuat jam digital yang dapat memperbarui waktu secara otomatis dari internet.

Proyek “Jam Digital WiFi ESP8266” adalah salah satu contoh aplikasi sederhana namun bermanfaat dari penggunaan ESP8266. Proyek ini mengintegrasikan kemampuan ESP8266 untuk terhubung ke jaringan WiFi dan mendapatkan waktu yang akurat dari server NTP (Network Time Protocol). Waktu yang diperoleh kemudian ditampilkan secara real-time pada sebuah LED display, menjadikannya sebagai jam digital yang selalu sinkron dengan waktu global.

Artikel ini akan membahas lebih dalam mengenai cara kerja dan struktur kode dari proyek ini. Dengan memahami kode yang digunakan, pembaca diharapkan dapat mempelajari cara memanfaatkan ESP8266 untuk proyek-proyek IoT lainnya. Dari pengaturan koneksi WiFi hingga proses menampilkan waktu pada LED display, semua aspek teknis dari proyek ini akan dijelaskan secara rinci.

Komponen yang dibutuhkan

Proyek “Jam Digital WiFi ESP8266” menggunakan beberapa komponen kunci yang berperan penting dalam fungsionalitas dan kesederhanaan rangkaian. Berikut adalah pembahasan tentang komponen-komponen tersebut:

1. Max7219 x 4 Dot Matrix Module 4in1 Display (32×8)

Modul Max7219 ini adalah display dot matrix yang terdiri dari 4 unit dot matrix 8×8, disusun dalam format 32×8. Modul ini sangat cocok digunakan dalam proyek seperti jam digital karena memungkinkan tampilan waktu yang jelas dan mudah dibaca. Max7219 berfungsi sebagai driver yang mengontrol tampilan LED dengan hanya menggunakan beberapa pin dari mikrokontroler, sehingga mempermudah pengaturannya. Modul ini terkenal karena kemudahannya dalam dihubungkan ke mikrokontroler seperti ESP8266 dengan antarmuka SPI.

Estimasi harga (Agustus 2024): Rp. 48.000

2. Modul ESP8266: Wemos D1 Mini atau NodeMCU

Wemos D1 Mini dan NodeMCU adalah dua jenis mikrokontroler berbasis ESP8266 yang sering digunakan dalam proyek IoT. Keduanya mendukung konektivitas WiFi yang memungkinkan perangkat terhubung ke internet dan mendapatkan waktu secara otomatis melalui protokol NTP. Wemos D1 Mini memiliki ukuran yang lebih kecil dan lebih hemat ruang dibandingkan NodeMCU, namun NodeMCU menawarkan lebih banyak pin GPIO dan ukuran yang lebih besar untuk fleksibilitas tambahan.

Estimasi Harga:

Pemilihan antara keduanya tergantung pada kebutuhan spesifik proyek dan preferensi ukuran atau jumlah pin yang dibutuhkan.

3. Kabel Jumper

Kabel jumper adalah kabel penghubung yang digunakan untuk membuat koneksi antara mikrokontroler dan modul display Max7219. Kabel ini sangat penting untuk memastikan koneksi antar komponen berjalan dengan baik dan stabil. Menggunakan kabel jumper berkualitas baik dapat membantu menghindari masalah koneksi yang tidak stabil.

Estimasi Harga:

4. Adaptor Mini USB

Adaptor Mini USB digunakan untuk memberi daya pada mikrokontroler (Wemos D1 Mini atau NodeMCU). Komponen ini sangat penting karena memastikan mikrokontroler mendapatkan suplai daya yang stabil, yang penting untuk performa optimal perangkat.

Estimasi Harga:

Estimasi Total Budget yang Dibutuhkan

Untuk membangun jam digital ini, estimasi anggaran tergantung pada pilihan mikrokontroler yang digunakan:

Pemilihan komponen yang tepat sesuai dengan kebutuhan proyek dan anggaran yang tersedia dapat membantu dalam membuat proyek ini lebih efisien dan fungsional.

Rangkaian

Rangkaian cukup sederhana, ESP dihubungkan ke Display melalui protokol SPI, pin disesuaikan dengan device yang digunakan. Berikut gambar rangkaianannya:

Rangkaian Jam Digital WiFi ESP8266

Coding

Flow programnya cukup sederhana, setelah insiasi, hubungkan ke wifi, lalu ambil waktu dari NTP dan tampilkan di LED Dot Matrik

Flowchart Jam Digital WiFi ESP8266

Penjelasan program sebagai berikut:

Program ini dirancang untuk menampilkan waktu dan tanggal pada matrix LED 8×8 menggunakan modul Max72xx dengan ESP8266. Berikut adalah penjelasan mengenai setiap bagian dari kode:

1. Header Files

#include <ESP8266WiFi.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>
#include <time.h>

2. Konstanta dan Variabel Global

int numberOfHorizontalDisplays = 4;
int numberOfVerticalDisplays = 1;
const byte buffer_size = 45;
char time_value[buffer_size];
int pinCS = D4;

Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);

const char *ssid = "WIFINAME";
const char *password = "WIFIPASS";

3. Fungsi setup()

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  configTime(0 * 3600, 0, "pool.ntp.org", "time.nist.gov");
  setenv("TZ", "WIB-7", 1);
  matrix.setIntensity(7);
  matrix.setRotation(0, 1);
  matrix.setRotation(1, 1);
  matrix.setRotation(2, 1);
  matrix.setRotation(3, 1);
}

4. Fungsi loop()

void loop() {
  matrix.fillScreen(LOW);

  String time = get_time();
  time.trim();
  Serial.println(time);
  time.toCharArray(time_value, 12);

  matrix.drawChar(2, 0, time_value[0], HIGH, LOW, 1);
  matrix.drawChar(8, 0, time_value[1], HIGH, LOW, 1);
  matrix.drawChar(20, 0, time_value[3], HIGH, LOW, 1);
  matrix.drawChar(26, 0, time_value[4], HIGH, LOW, 1);

  for (int i = 0; i < 10; i++) {
    matrix.drawChar(14, 0, time_value[2], HIGH, LOW, 1);
    matrix.write();
    delay(500);

    matrix.drawChar(14, 0, time_value[5], HIGH, LOW, 1);
    matrix.write();
    delay(500);
  }

  matrix.drawChar(2, 0, time_value[6], HIGH, LOW, 1);
  matrix.drawChar(8, 0, time_value[7], HIGH, LOW, 1);
  matrix.drawChar(14, 0, time_value[8], HIGH, LOW, 1);
  matrix.drawChar(20, 0, time_value[9], HIGH, LOW, 1);
  matrix.drawChar(26, 0, time_value[10], HIGH, LOW, 1);
  matrix.write();
  delay(2000);
}

5. Fungsi get_time()

String get_time() {
  time_t now;
  time(&now);
  char time_output[buffer_size];

  strftime(time_output, buffer_size, "%R %d/%m", localtime(&now));

  return String(time_output);
}

Program ini menggunakan waktu dari server NTP dan menampilkannya di matrix LED dengan format HH:MM dd/mm. Display menunjukkan waktu saat ini, memperbarui tampilan setiap detik dan menampilkan tanggal setiap 2 detik.


Code program:

https://github.com/brifeb/Jam-Digital-WiFi-ESP8266

Youtube vidio:

Tonton di Youtube: https://www.youtube.com/watch?v=AhU7EykZbcQ
Exit mobile version