Mengambil Data Waktu RTC DS3231 di Raspberry Pi dengan Python

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:

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 DS3231Pin Header RaspiGPIO Raspi
Vcc1
Gnd6
SDA3GPIO2
SCL5GPIO3

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 …

0 0 votes
Article Rating

Leave a Reply

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x