Menggunakan DS1307 RTC dengan Raspberry Pi

Using the DS1307 RTC with the Raspberry Pi

Itu Modul DS1307 Real-Time Clock (RTC) Memungkinkan Raspberry Pi untuk melacak waktu bahkan saat dimatikan. Panduan ini akan memandu Anda dengan menyiapkan DS1307 Modul RTC dengan raspberry pi menggunakan Protokol I2C.


Apa yang Anda Butuhkan

  1. Raspberry Pi (Model apa pun dengan dukungan GPIO dan I2C, mis., Pi 3, pi 4)
  2. DS1307 Modul RTC
  3. Baterai CR2032 (untuk mempertahankan waktu saat dimatikan)
  4. Papan tempat memotong papan dan kabel jumper
  5. Python terpasang di raspberry pi

Langkah 1: Pengkabelan DS1307 ke Raspberry Pi

Itu DS1307 berkomunikasi melalui I2C, jadi kami menghubungkannya ke pin i2c Raspberry Pi.

Koneksi (mode I2C)

Pin DS1307 Raspberry Pi Pin
Vcc 3.3V atau 5V (pin 1 atau 2)
Gnd Ground (pin 6)
SDA SDA (Pin 3, GPIO2)
Scl SCL (pin 5, gpio3)

Langkah 2: Aktifkan I2C di Raspberry Pi

  1. Buka alat konfigurasi Raspberry Pi:
    sudo raspi-config
    
  2. Navigasikan ke Opsi Antarmuka> I2C dan mengaktifkannya.
  3. Reboot Raspberry Pi:
    sudo reboot
    
  4. Pastikan itu DS1307 terdeteksi di bus I2C:
    sudo i2cdetect -y 1
    
    Itu DS1307 akan muncul di alamat 0x68.

Langkah 3: Instal perpustakaan yang diperlukan

  1. Perbarui Daftar Paket Raspberry Pi Anda:
    sudo apt update && sudo apt upgrade -y
    
  2. Instal I2C Tools dan Python Libraries yang diperlukan:
    sudo apt install -y i2c-tools python3-smbus python3-pip
    pip3 install adafruit-circuitpython-ds1307
    

Langkah 4: Mengatur dan Membaca Waktu di DS1307

Kode Python untuk mengatur tanggal dan waktu

Jalankan skrip ini sekali untuk mengatur jam RTC.

import time
import board
import busio
import adafruit_ds1307

# Initialize I2C bus and DS1307
i2c = busio.I2C(board.SCL, board.SDA)
rtc = adafruit_ds1307.DS1307(i2c)

# Set the date and time (Year, Month, Day, Hour, Minute, Second, Weekday, DST)
rtc.datetime = time.struct_time((2025, 1, 1, 12, 0, 0, 0, -1, -1))

print("RTC Date and Time Set!")

Kode Python untuk membaca waktu dari DS1307

Setelah mengatur waktu, gunakan skrip ini untuk membaca tanggal dan waktu saat ini.

import time
import board
import busio
import adafruit_ds1307

# Initialize I2C bus and DS1307
i2c = busio.I2C(board.SCL, board.SDA)
rtc = adafruit_ds1307.DS1307(i2c)

while True:
    current_time = rtc.datetime
    print(f"Date: {current_time.tm_year}-{current_time.tm_mon:02d}-{current_time.tm_mday:02d}")
    print(f"Time: {current_time.tm_hour:02d}:{current_time.tm_min:02d}:{current_time.tm_sec:02d}")
    time.sleep(1)

Langkah 5: Menyinkronkan DS1307 dengan jam sistem Raspberry Pi

Untuk menyinkronkan Waktu RTC DS1307 Dengan waktu sistem Raspberry Pi:

  1. Baca Waktu RTC DS1307 dan atur sebagai waktu sistem:
    sudo hwclock -r
    sudo hwclock -s
    
  2. Atur waktu RTC DS1307 dari waktu sistem Raspberry Pi:
    sudo hwclock -w
    

Langkah 6: Aplikasi modul DS1307 RTC

  1. Menjaga waktu di perangkat raspberry pi tanpa kepala - berguna untuk Pencatatan Data proyek.
  2. Sistem Otomatisasi Rumah - Pastikan acara terjadwal yang akurat bahkan setelah kehilangan daya.
  3. Proyek IoT - Gunakan DS1307 untuk Data Cap Timest di lingkungan yang terputus.
  4. Stasiun cuaca - Simpan cap waktu yang akurat untuk catatan suhu dan kelembaban.

Pemecahan masalah

  1. DS1307 tidak terdeteksi (i2cdetect tidak menunjukkan 0x68)

    • Pastikan Pin SDA/SCL terhubung dengan benar.
    • Pastikan itu I2C diaktifkan menggunakan sudo raspi-config.
  2. Bacaan Tanggal/Waktu Salah

    • Berlari sudo hwclock -r untuk memeriksa jam perangkat keras.
    • Setel ulang jam RTC menggunakan sudo hwclock -w.
  3. Waktu RTC tidak bertahan setelah dimatikan

    • Pastikan Baterai CR2032 diinstal dengan benar.
    • Ganti baterai jika rendah atau mati.

Kesimpulan

Itu DS1307 Modul RTC menyediakan Pelacakan real-time yang akurat Untuk proyek Raspberry PI, bahkan saat dimatikan. Dengan mengikuti panduan ini, Anda dapat mengintegrasikan fungsionalitas RTC ke dalam Aplikasi IoT, Otomasi, dan Data. 🚀

Tinggalkan komentar

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.