Dalam tutorial ini, kita akan belajar tentang Real Time Clock (RTC) dan interfacingnya dengan tampilan ESP32 dan OLED.
Kami akan menggunakan modul DS3231 RTC untuk melacak waktu yang benar dan menampilkannya di SPI OLED dengan menggunakan ESP32 sebagai mikrokontroler kami. ESP32 lebih dari sekedar mikrokontroler. Ini memiliki Wi-Fi dan chip Bluetooth di dalamnya dan 39 pin GPIO. Ini mendukung semua protokol komunikasi seperti SPI, I2C, UART, dll. Jika Anda baru mengenal ESP32, pertama-tama ikuti tutorial Memulai ESP32 kami.
Apa itu RTC ??
DS3231 adalah modul RTC (Real Time Clock). Ini digunakan untuk mempertahankan tanggal dan waktu untuk sebagian besar proyek Elektronik. Modul ini memiliki catu daya sel berbentuk koin yang digunakan untuk mempertahankan tanggal dan waktu bahkan ketika daya utama dilepas atau MCU mengalami hard reset. Jadi, begitu kita menyetel tanggal dan waktu dalam modul ini, modul ini akan selalu melacaknya. Ada beberapa jenis IC RTC yang tersedia seperti DS1307, DS3231 dll.
Kami sebelumnya telah menggunakan DS3231 RTC dengan Arduino di proyek-proyek di bawah ini:
- Pet Feeder Otomatis menggunakan Arduino
- Pencatat Data Arduino
Catatan: Saat menggunakan modul ini untuk pertama kalinya Anda harus mengatur tanggal dan waktu. Anda juga bisa menggunakan IC RTC DS1307, kami sebelumnya telah menggunakan DS1307 dengan Arduino.
Mengenal OLED Displays:
Istilah OLED adalah singkatan dari " Organic Light emitting diode" yang menggunakan teknologi yang sama yang digunakan di sebagian besar televisi kita tetapi memiliki piksel lebih sedikit dibandingkan dengan mereka. Sangat menyenangkan memiliki modul tampilan yang tampak keren ini karena akan membuat proyek kita terlihat keren. Kami telah membahas Artikel lengkap tentang tampilan OLED dan tipenya di sini.
Kami menggunakan layar OLED Monokrom 7-pin SSD1306 0,96 ”. Alasan memilih tampilan ini adalah karena dapat bekerja pada tiga protokol komunikasi yang berbeda seperti mode SPI 3 Wire, mode SPI empat kabel dan mode IIC. Tutorial ini akan membahas cara menggunakan modul dalam mode SPI 4-kabel karena ini adalah mode komunikasi tercepat dan default.
Pin dan fungsinya dijelaskan pada tabel di bawah ini.
Nomor PIN |
Nama Pin |
Nama lain |
Pemakaian |
1 |
Gnd |
Tanah |
Pin ground modul |
2 |
Vdd |
Vcc, 5V |
Pin daya (dapat ditoleransi 3-5V) |
3 |
SCK |
D0, SCL, CLK |
Bertindak sebagai pin jam. Digunakan untuk I2C dan SPI |
4 |
SDA |
D1, MOSI |
Pin data modul. Digunakan untuk IIC dan SPI |
5 |
RES |
RST, RESET |
Mereset modul (berguna selama SPI) |
6 |
DC |
A0 |
Pin Perintah Data. Digunakan untuk protokol SPI |
7 |
CS |
Pilih Chip |
Berguna jika lebih dari satu modul digunakan di bawah protokol SPI |
Dalam tutorial ini kita hanya akan mengoperasikan modul dalam mode SPI 4-Wire, kita akan meninggalkan sisanya untuk beberapa tutorial lainnya.
Komunitas Arduino telah memberi kami banyak Perpustakaan yang dapat langsung digunakan untuk membuat ini jauh lebih sederhana. Saya mencoba beberapa perpustakaan dan menemukan bahwa Perpustakaan Adafruit_SSD1306 sangat mudah digunakan dan memiliki beberapa opsi grafis sehingga kami akan menggunakan hal yang sama dalam tutorial ini. Namun, jika proyek Anda memiliki batasan memori / kecepatan, coba gunakan Perpustakaan U8g karena ia bekerja lebih cepat dan menggunakan lebih sedikit memori program.
Kami juga menghubungkan OLED dengan Raspberry pi dan dengan Arduino.
Material yang dibutuhkan:
- ESP32
- Modul DS3231 RTC
- Modul tampilan OLED 7 pin 128 × 64 (SSD1306)
- Kabel pria-wanita
- Papan tempat memotong roti
Diagram Sirkuit:
Diagram sirkuit untuk menghubungkan RTC3231 ke papan ESP diberikan di bawah ini:
IC RTC DS3231 menggunakan mode komunikasi I2C. Ini memiliki pin SCL, SDA, Vcc dan GND yang keluar darinya. Koneksi modul RTC dengan ESP32 diberikan di bawah ini:
- SCL RTC -> SCL ESP32 yaitu Pin D22
- SDA RTC -> SDA ESP32 yaitu Pin D21
- GND RTC -> GND ESP32
- Vcc dari RTC -> Vcc dari ESP32
Di sini, kami menggunakan mode SPI untuk menghubungkan Modul layar OLED 128 × 64 (SSD1306) kami ke ESP32. Jadi, akan menggunakan 7 pin. Koneksi dengan ESP32 diberikan sebagai:
- Pin CS (Chip pilih) OLED -> PIN D5 ESP32
- Pin DC OLED -> PIN D4 ESP32
- PIN RES dari OLED -> PIN D2 ESP32
- Pin SDA OLED -> PIN D23 yaitu MOSI dari ESP32
- Pin SCK dari OLED -> PIN D18 yaitu SCK dari ESP32
- Vdd OLED -> Vcc ESP32
- GND dari OLED -> GND dari ESP32
Anda membutuhkan file papan untuk ESP32 Anda. Periksa di board manager menu drop-down Arduino IDE untuk kit dev ESP32. Jika tidak ada ikuti langkah-langkah yang diberikan pada tautan di bawah ini:
circuitdigest.com/microcontroller-projects/getting-started-with-esp32-with-arduino-ide
Anda juga dapat menggunakan ESP12 untuk proyek ini, pelajari di sini untuk menggunakan ESP12.
Penjelasan Kode:
Kode lengkap untuk ESP32 diberikan di akhir artikel. Di sini kami menjelaskan beberapa bagian penting dari kode.
Kami membutuhkan beberapa perpustakaan untuk digunakan dalam kode kami yang dapat diunduh dari tautan di bawah ini:
1. Adafruit_SSD1306:
2. SPI:
3. Adafruit_GFX:
4. RTClib:
Jadi kami telah memasukkan semua perpustakaan
#include
Kemudian tentukan semua pin OLED. Anda tidak perlu menentukan pin untuk modul RTC karena pin ini sudah ditentukan di perpustakaan WIRE.
# Tentukan OLED_MOSI 23 # Tentukan OLED_CLK 18 # Tentukan OLED_DC 4 # Tentukan OLED_CS 5 # Tentukan OLED_RESET 2 Tampilan Adafruit_SSD1306 (OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Dalam fungsi setup , kita akan memanggil fungsi rtc.adjust (DateTime (__ DATE__, __TIME__)) yang akan mengatur waktu sesuai dengan waktu PC kita.
void setup () { Serial.begin (9600); if (! rtc.begin ()) { Serial.println ("Tidak dapat menemukan RTC"); sementara (1); } rtc.adjust (DateTime (__ DATE__, __TIME__));
Setelah itu kami memanggil fungsi tampilan untuk ditampilkan di OLED.
display.begin (SSD1306_SWITCHCAPVCC); display.clearDisplay (); display.setTextColor (WHITE); //display.startscrollright(0x00, 0x0F); // Anda dapat menghapus komentar baris ini untuk menggulir teks Anda pada oled display.setTextSize (2); display.setCursor (0,5); display.print ("Jam"); // Ini akan Menampilkan Jam pada OLED selama 3 detik display.display (); penundaan (3000); }
Kemudian akhirnya dalam fungsi loop , kita akan menyimpan waktu kita di DateTime sekarang variabel yang telah ditentukan sebelumnya dan menampilkan waktu menggunakan fungsi tampilan seperti setTextSize, setCursor, dll. Atur ini sesuai dengan kebutuhan Anda dan gunakan fungsi display.println untuk ditampilkan di OLED.
void loop () { DateTime now = rtc.now (); display.clearDisplay (); display.setTextSize (2); display.setCursor (75,0); display.println (now.second (), DEC);
Jadi beginilah cara Anda menampilkan waktu di OLED menggunakan ESP32 dan seperti yang Anda ketahui ESP dikenal dengan kemampuan IoT-nya, sehingga Anda dapat menggunakan ini untuk mempublikasikan waktu di internet. Pada artikel berikutnya kami akan menunjukkan kepada Anda untuk menampilkan Waktu Internet di ESP tanpa menggunakan Modul RTC apa pun.