Membuat Jam Digital Menggunakan RTC DS3231 dan ESP 32 dengan Tampilan LCD
Pada tulisan kali ini kita akan mencoba untuk membuat program sederhana untuk tampilan waktu dan tanggal pada LCD 240x240. Pada percobaan ini kita akan menggunakan mikrokontroller ESP 32 dan RTC DS3231. Sementara itu untuk tampilannya menggunakan modul LCD TFT dengan driver ST7789.
RTC DS3231
RTC DS3231 adalah modul Real-Time Clock berpresisi tinggi yang menggunakan kristal osilator internal dengan Temperature Compensated Crystal Oscillator (TCXO) sehingga memiliki akurasi sekitar ±1 menit per tahun, jauh lebih stabil dibanding RTC konvensional seperti DS1307. IC ini menggunakan antarmuka I²C dengan alamat 0x68. DS3231 bekerja pada tegangan 2.3–5.5V, dan dilengkapi backup battery (CR2032/LIR2032). DS3231 menyediakan fungsi kalender lengkap (detik, menit, jam, hari, tanggal, bulan, tahun, leap year otomatis), dua alarm independen, output square wave, serta sensor suhu internal yang digunakan untuk kompensasi drift frekuensi osilator. Pada penggunaan awal kita perlu set waktu nya menggunakan program melalui perintah rtc adjust. Untuk mudahnya kita bisa buat agar waktu diset ke jam komputer yang digunakan untuk memprogram dengan menambahkan perintah berikut:
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
Perintah ini cukup dijalankan sekali saja untuk mengatur waktu awal. Selanjutnya timer dari RTC akan berjalan. Meskipun supply daya RTC terputus timer akan tetap berjalan selama terdapata daya dari baterai backup. Data-data waktu kemudian dikirimkan ke ESP 32 melalui protokol I²C untuk diolah lebih lanjut. Untuk memprogram RTC ini digunakan library RTClib.
ESP 32
ESP32 adalah SoC (System on Chip) berbasis mikroprosesor dual-core Xtensa LX6 yang mengintegrasikan WiFi, Bluetooth, dan periferal embedded dalam satu chip, sehingga berfungsi sebagai platform komputasi terdistribusi untuk sistem IoT dan embedded modern. ESP32 memiliki arsitektur heterogeneous processing (dual-core + coprocessor ULP), memungkinkan pemisahan tugas real-time dan non-real-time, serta mendukung RTOS (FreeRTOS native) untuk manajemen task, semaphore, queue, dan interrupt secara deterministik. Dari sisi hardware, ESP32 menyediakan GPIO multifungsi, SPI, I²C, UART, ADC, DAC, PWM. Seperti yang telah dijelaskan sebelumnya, pada percobaan sederhana ini ESP32 digunakan untuk akuisisi data dari RTC DS3231 dan memproses nya untuk ditampilkan di LCD 240x240.
LCD 240x240
LCD 240×240 dengan driver ST7789 adalah modul TFT color display yang sangat umum digunakan pada sistem embedded karena resolusi simetris, konsumsi daya relatif rendah, dan performa refresh yang cepat melalui antarmuka SPI. Display ini menggunakan TFT IPS panel sehingga memiliki sudut pandang lebar dan reproduksi warna yang stabil, dikendalikan oleh controller ST7789 yang mendukung format warna RGB565 (16-bit color) serta mode komunikasi SPI. Resolusi 240×240 membuatnya ideal untuk antarmuka grafis kompak (UI dashboard, wearable, IoT panel, mini instrument display) dengan rasio 1:1 yang efisien untuk layout simetris. Modul ini bekerja pada tegangan 3.3V (logic level dan supply), memiliki pin utama VCC, GND, SCL(SCK), SDA(MOSI), DC, RST, dan CS (kadang CS diikat low/di-nonaktifkan karena single-device SPI), serta mendukung refresh rate tinggi sehingga cocok untuk animasi UI ringan. Secara arsitektural, ST7789 berfungsi sebagai display controller mandiri yang memisahkan beban grafis dari MCU, sehingga mikrokontroler hanya bertugas sebagai data feeder SPI, sementara manajemen pixel, addressing, dan refresh di-handle oleh controller internal display. Library yang digunakan untuk memprogram LCD ini yaitu Adafruit ST7735 and ST7789 library.
Meskipun pada pin nya tertulis SCL dan SDA namun pada kebanyakan modul LCD 240x240 dengan driver ST7789 menggunakan komunikasi SPI. Pada percobaan ini kita akan menggunakan VSPI pada ESP32.
Rangkaian dibuat diatas protoboard sebagai berikut:
Detail koneksi dari rangkaian diatas dapat dilihat pada tabel berikut:
Sedangkan program yang dibuat menggunakan Arduino IDE sebagai berikut:
Bagikan Ke
Komentar
Posting Komentar
berkomentarlah dengan bijak