Arduino, Project, TUTORIAL

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.

    1. 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

    1. 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.
    2. 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:

    AlarmModeArtinya (Memicu alarm…)
    Alarm 1DS3231_A1_PerSecondsetiap detik
    Alarm 1DS3231_A1_Secondketika detik-detiknya cocok
    Alarm 1DS3231_A1_Minuteketika menitnya cocok
    Alarm 1DS3231_A1_Hoursaat jamnya cocok
    Alarm 1DS3231_A1_Dateketika tanggalnya cocok
    Alarm 1DS3231_A1_Daysaat hari itu cocok
    Alarm 2DS3231_A2_PerMinutesetiap menit
    Alarm 2DS3231_A2_Minuteketika menitnya cocok
    Alarm 2DS3231_A2_Hoursaat jamnya cocok
    Alarm 2DS3231_A2_Dateketika tanggalnya cocok
    Alarm 2DS3231_A2_Daysaat 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.

    Tinggalkan Balasan