Arduino dengan RTC (Real Time Clock) DS3231 : Menampilkan Waktu dan Mengatur Alarm

Pada tutorial ini kamu akan belajar cara menggunakan modul RTC (Real Time Clock) menggunakan Arduinol. Modul RTC DS3231 berguna untuk pencatatan waktu yang akurat, juga memungkinkan Anda untuk mengatur alarm, mengeluarkan gelombang persegi dengan frekuensi berbeda, dan mendapatkan pembacaan suhu.
Modul RTC, seperti DS3231 dan DS1307, memiliki jam kecil sendiri di dalamnya untuk melacak waktu secara otomatis. Biasanya, modul ini dilengkapi dengan tempat baterai untuk menghubungkan baterai agar tetap berfungsi meskipun Arduino direset atau terjadi pemadaman listrik.
Modul RTC : Real Time Clock

DS3231 dan DS1307 adalah beberapa pilihan paling populer untuk digunakan dengan mikrokontroler. Keduanya kompatibel dengan papan Arduino dan berkomunikasi melalui protokol komunikasi I2C. DS3231 lebih akurat karena memberikan hasil yang dikompensasi suhu. Selain itu, dimungkinkan juga untuk mengatur alarm eksternal dengan DS3231, yang dapat sangat berguna untuk tugas-tugas periodik
Gambar berikut menunjukkan Modul RTC DS3231. Modul ini menggunakan osilator kristal kompensasi suhu (TCXO) 32kHz untuk melacak waktu secara tepat (tahan terhadap perubahan suhu). Karena itu, modul ini juga memungkinkan Anda untuk mendapatkan data suhu.
Modul RTC DS3231
Selain mencatat tanggal dan waktu dengan tepat, jam ini juga memiliki memori internal untuk menyimpan hingga dua alarm dan dapat menghasilkan gelombang persegi pada frekuensi yang berbeda: 1Hz, 4kHz, 8kHz, dan 32kHz.
Anda berkomunikasi dengan modul RTC menggunakan protokol komunikasi I2C. Biasanya, alamatnya adalah 0x68.
Modul ini juga dilengkapi dengan EEPROM 24C32 32-byte yang dapat Anda gunakan untuk menyimpan data non-volatil apa pun yang Anda inginkan. Anda dapat berkomunikasi dengan memori EEPROM ini melalui I2C dengan mengakses alamat yang benar (0x57).
Dudukan Baterai DS3231
DS3231 dilengkapi dengan dudukan baterai untuk menghubungkan baterai agar ketepatan waktu tetap terjaga. Jika terjadi pemadaman listrik, jam ini tetap dapat mencatat waktu dengan akurat dan mempertahankan semua alarm.
Anda sebaiknya menggunakan baterai LIR2032, yang dapat diisi ulang . Jangan gunakan CR2032 (tidak dapat diisi ulang).
Jika Anda ingin menggunakan baterai CR2032, yang tidak dapat diisi ulang, Anda harus memutuskan sambungan sirkuit pengisian baterai dengan melepaskan solder dan melepas resistor (berlabel R4 pada modul saya) yang berada di sebelah dioda.
Alarm pada DS3231
DS3231 dapat menyimpan hingga dua alarm: alarm 1 dan alarm 2. Alarm ini dapat dikonfigurasi untuk dipicu berdasarkan waktu dan/atau tanggal tertentu. Ketika alarm dipicu, pin SQW pada modul akan mengeluarkan sinyal LOW.
Anda dapat mendeteksi sinyal ini dengan Arduino dan memicu interupsi. Ini berguna untuk mengatur tugas periodik, otomatisasi berbasis waktu, dan juga peringatan satu kali (karena Anda dapat menghapus alarm setelah dipicu).
Setiap alarm dapat dikonfigurasi untuk dipicu dalam berbagai mode. Mode-mode ini memungkinkan Anda untuk membuat alarm yang berulang setiap detik, menit, jam, harian, mingguan, atau bahkan sebulan sekali.
Alarm 1:
Setiap detik
Ketika detik, menit, jam, hari, atau tanggal cocok
Alarm 2:
Setiap menit
Ketika menit, jam, hari, atau tanggal cocok
Kita akan melihat cara mengatur alarm nanti di tutorial ini.
Alamat I2C Modul RTC DS3231
Secara default, alamat RTC DS3231 adalah 0x68 dan EEPROM yang terhubung ke modul adalah 0x57. Kami tidak akan membahas cara menggunakan EEPROM dalam tutorial ini.
Susunan Pin Modul RTC DS3231
Tabel berikut menjelaskan secara singkat susunan pin Modul RTC DS3231.
- Menghubungkan Modul RTC DS3231 ke Arduino
Berikut daftar komponen yang dibutuhkan dalan tutorial ini
Hubungkan DS3231 ke Aarduino. Anda dapat menggunakan tabel berikut sebagai referensi atau melihat diagram skematik
- Mengatur waktu saat ini : Anda dapat melakukannya secara manual dengan memasukkan waktu saat ini (atau waktu lain yang diinginkan) pada kode; waktu lokal sistem; atau mendapatkan waktu dari server NTP.
- Mempertahankan waktu : untuk memastikan RTC tetap menunjukkan waktu yang benar, bahkan jika kehilangan daya, RTC perlu dihubungkan ke baterai. Modul RTC dilengkapi dengan tempat baterai, biasanya untuk baterai koin
Install Library RTC
Terdapat beberapa library untuk berinteraksi dengan modul RTC DS3231. Kita akan menggunakan RTCLib dari Adafruit yang kompatibel dengan modul RTC DS1307, DS3231, dan PCF8523.
Di Arduino IDE, buka Sketch > Include Library > Manage Libraries . Cari RTCLib dan instal library dari Adafruit. Kami menggunakan versi 2.1.4.
Arduino dengan DS3231 :Mengatur dan membaca waktu
Contoh berikut mengatur waktu pada jam RTC dan kemudian membaca waktu dalam loop setiap tiga detik. Kita juga membaca suhu. Kode ini menunjukkan dua cara berbeda untuk mengatur waktu: menyinkronkan RTC dengan waktu sistem (tanggal dan waktu saat sketsa dikompilasi), dan mengatur tanggal dan waktu tertentu secara manual dengan menuliskannya sendiri dalam kode.
Klik disini untuk full codingan
Setelah RTC terhubung ke Arduino, unggah program tersebut ke board arduino, buka serial monitor dengan baud 9600. Apabila berhasil akan muncul hasil seperti gambar berikut
Arduino dengan DS3231: Mengatur Alarm
Modul RTC DS3231 memungkinkan Anda untuk mengatur hingga dua alarm: alarm 1 dan alarm 2. Saat menggunakan RTCLib, berikut adalah mode yang diterima untuk alarm:
| Alarm | Mode | Artinya (Memicu alarm…) |
| Alarm 1 | DS3231_A1_PerSecond | setiap detik |
| Alarm 1 | DS3231_A1_Second | ketika detik-detiknya cocok |
| Alarm 1 | DS3231_A1_Minute | ketika menitnya cocok |
| Alarm 1 | DS3231_A1_Hour | saat jamnya cocok |
| Alarm 1 | DS3231_A1_Date | ketika tanggalnya cocok |
| Alarm 1 | DS3231_A1_Day | saat hari itu cocok |
| Alarm 2 | DS3231_A2_PerMinute | setiap menit |
| Alarm 2 | DS3231_A2_Minute | ketika menitnya cocok |
| Alarm 2 | DS3231_A2_Hour | saat jamnya cocok |
| Alarm 2 | DS3231_A2_Date | ketika tanggalnya cocok |
| Alarm 2 | DS3231_A2_Day | saat hari itu cocok |
Contoh berikut menunjukkan cara mengatur dua alarm dan cara menggunakannya untuk memicu interupsi pada Arduino. Ketika interupsi dipicu, kita akan mengubah status LED yang terhubung ke Pin 3 (jadi, untuk menguji contoh ini, tambahkan LED ke rangkaian Anda dengan menghubungkannya ke Pin 3).
Klik disini untuk full codingan
Catatan penting tentang alarm:
- RTC memungkinkan Anda menyimpan hingga dua alarm;
- Anda hanya dapat mengaktifkan satu alarm dalam satu waktu;
- Setelah alarm berbunyi, Anda harus menghapus flag-nya untuk menghindari pemicuan ulang dan kerusakan pada papan kontrol;
- Anda harus menonaktifkan satu alarm sebelum mengaktifkan alarm lainnya
Setelah mengunggah kode, Anda akan mendapatkan informasi tentang alarm di Serial Monitor. LED akan berkedip setiap kali alarm berbunyi.
Kesimpulan
Dalam tutorial ini, Anda telah mempelajari cara menggunakan Modul RTC DS3231 dengan Arduino untuk mengatur dan mendapatkan waktu, mengatur alarm, dan mendapatkan pembacaan suhu. Sekarang, Anda dapat mengembangkan proyek ini lebih lanjut dan menambahkan layar OLED untuk membuat jam digital. Anda juga dapat menambahkan beberapa tombol dan bel untuk membuat jam alarm dengan lebih banyak fitur.































