Contents
RTC (Real Time Clock) DS3231 adalah salah satu modul RTC yang populer di pasaran. Selain karena hasilnya yang presisi dan konsumsi arus yang rendah (hanya sekitar 500 nA), RTC DS3231 harganya relatif murah. RTC tipe ini juga memiliki fitur TCXO (Temperature- Compensated Crystal Oscillator) yang menjaga output RTC tetap akurat karena mampu mengkompensasi perubahan suhu sehingga tidak mempengaruhi penghitungan waktu. Fitur inilah yang membedakan RTC DS3231 dengan pendahulunya yakni RTC DS1307. RTC DS3231 dilengkapi dengan baterai kancing CR2032 untuk menjaga waktu tetap update setidaknya sampai 3 tahun. Sedangkan untuk output, RTC DS3231 menggunakan interface I2C dengan address default 68H. Dengan menggunakan bus I2C, maka RTC ini dapat digunakan bersama-sama dengan device lain dalam bus yang sama. Dengan demikian dapat menghemat pinout dan scripting dalam sistem yang besar.
Spesifikasi RTC DS3231
- Tegangan kerja : 2.3V – 5.5V
- Arus : 500nA on battery backup
- Interface : I2C/IIC at address 68H
- Suhu kerja : -45ºC s.d +80ºC
- Akurasi : ±3ºC
Di pasaran setidaknya tersedia dua macam/varian produk RTC DS3231 yang sudah berupa module siap pakai. Varian ini hanya beda dimensi dan pinout saja, selebihnya fungsionalitas tetap sama.
Percobaan RTC DS3231 – Raspberry Pi
Setelah mengenal tentang produk RTC DS3231 ini, sekarang saatnya kita mempejari bagaimana cara mengambil data waktu RTC ini di Raspberry Pi menggunakan bahasa pemrograman Python. Alat dan bahan yang dibutuhkan adalah sebagai berikut:
- Modul Basic Trainer Kit
- Jumper female to female 4 pcs
- Power supply 12V / 5A
- Laptop untuk programming
- smartphone sebagai WIFI hotspot
- aplikasi Putty dan Notepad++ (persiapan dua aplikasi ini untuk programming Raspberry Pi)
Pinout RTC DS3231
Gambar rangkaian untuk percobaan ini adalah sebagai berikut:
Sedangkan wiring percobaan kali ini adalah sbb:
Koneksi RTC DS3231 – Header GPIO Raspberry Pi
RTC DS3231 | Pin Header Raspi | GPIO Raspi |
Vcc | 1 | |
Gnd | 6 | |
SDA | 3 | GPIO2 |
SCL | 5 | GPIO3 |
Setelah semua hardware sudah siap kini saatnya kita untuk memprogram Raspberry Pi agar dapat mengambil data waktu RTC DS3231. Sebagai persiapan, setidaknya dua hal yang harus Anda lakukan, yakni:
- meng-enable I2C interface di Raspberry Pi
Cara termudah adalah sebagai berikut. Dari Putty ketik perintah ‘sudo raspi config’, kemudian pilih opsi ‘Interfacing Options’
kemudian pilih opsi I2C
kemudian muncul jendela ‘Would you like the ARM I2C interface to be enabled?’ pilih ‘Ya’
- menginstal library DS3231
Dari terminal Putty, ketik perintah sbb: (pastikan ada koneksi internet di WIFI Anda)
pip3 install adafruit-circuitpython-ds3231
Jika sudah melakukan persiapan di atas, buka Notepad++ Anda, kemudian tulis baris program sbb:
import time import board import adafruit_ds3231 i2c = board.I2C() rtc = adafruit_ds3231.DS3231(i2c) hari = ("Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu") while True: t = rtc.datetime print( "Hari: {} {}/{}/{}".format( hari[int(t.tm_wday)], t.tm_mday, t.tm_mon, t.tm_year ) ) print("Jam: {}:{:02}:{:02}".format(t.tm_hour, t.tm_min, t.tm_sec)) time.sleep(1)
Simpan script di atas dengan nama (misalnya) “rtc.py” (jangan lupa tetap kasih tanda petik dua ketika save file di Notepad++)
Penjelasan program
- Baris [1] : memanggil library ‘time’ untuk delay
- Baris [2] : memanggil library ‘board’ untuk memudahkan menangani pin GPIO khususnya nanti adalah pin I2C
- Baris [3] : memanggil library untuk RTC DS3231
- Baris [5-6] : mendefinisikan pin I2C dan ‘menumpangkan’ protokol I2C RTC di pin GPIO tersebut
- Baris [8] : mendefinisikan hari dalam seminggu
- Baris [10-18] : perulangan untuk mengambil sata waktu di RTC dan menampilkannya di Terminal console
Kemudian buka aplikasi Putty, login dengan user ‘pi’ dan password ‘raspberry’ (user pass default), kemudian jalankan script di atas dengan perintah
python3 ds3231.py
Amati hasil program di atas di terminal Putty Raspi Anda. Seharusnya tampilan program adalah sbb:
Tampak pada gambar di atas, tanggal dan waktu akan terus update dengan interval satu detik
Bagaimana? cukup mudah, bukan? Dengan library ‘adafruit_ds3231’ semuanya jadi lebih mudah. Anda dapat dengan mudah pula menggabungkannya dengan sistem yang lebih besar misal datalogger, jam digital atau project-project lain yang membutuhkan data waktu yang akurat. Semoga bermanfaat …
a Technopreneur – writer – Enthusiastic about learning AI, IoT, Robotics, Raspberry Pi, Arduino, ESP8266, Delphi, Python, Javascript, PHP, etc. Founder of startup Indomaker.com