Raspberry Pi ile DS1307 RTC'yi kullanma

Using the DS1307 RTC with the Raspberry Pi

DS1307 Gerçek Zamanlı Saat (RTC) Modülü Raspberry Pi'nin güçlendirildiğinde bile zamanı takip etmesini sağlar. Bu rehber, DS1307 RTC Modülü Raspberry Pi ile I2C protokolü.


Ne İhtiyacınız Olacak

  1. Ahududu pi (GPIO ve I2C destekli herhangi bir model, örneğin Pi 3, Pi 4)
  2. DS1307 RTC Modülü
  3. CR2032 Pil (Güçlendirildiğinde zamanı korumak için)
  4. Breadboard ve jumper telleri
  5. Python yüklü Raspberry Pi'de

1. Adım: DS1307'yi Raspberry Pi'ye bağlama

. DS1307 I2C aracılığıyla iletişim kurar, bu yüzden onu Raspberry Pi’nin I2C pimlerine bağlarız.

Bağlantılar (I2C modu)

DS1307 PIN Raspberry Pi Pimi
VCC 3.3V veya 5V (pim 1 veya 2)
Gnd Zemin (pim 6)
SDA SDA (pim 3, GPIO2)
Scl SCL (Pin 5, GPIO3)

Adım 2: Raspberry Pi'de I2C'yi etkinleştirin

  1. Raspberry Pi yapılandırma aracını açın:
    sudo raspi-config
    
  2. Gezmek Arayüz Seçenekleri> I2C ve etkinleştir.
  3. Raspberry Pi'yi yeniden başlatın:
    sudo reboot
    
  4. Doğrula DS1307 tespit edildi I2C otobüsünde:
    sudo i2cdetect -y 1
    
    . DS1307 adreste görünmelidir 0x68.

3. Adım: Gerekli kütüphaneleri kurun

  1. Raspberry Pi’nin paket listesini güncelleyin:
    sudo apt update && sudo apt upgrade -y
    
  2. Gerekli I2C araçlarını ve Python kütüphanelerini yükleyin:
    sudo apt install -y i2c-tools python3-smbus python3-pip
    pip3 install adafruit-circuitpython-ds1307
    

4. Adım: DS1307'de ayar ve okuma süresi

Tarih ve saati ayarlamak için python kodu

RTC saatini ayarlamak için bu komut dosyasını bir kez çalıştırın.

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!")

DS1307'den Python Kodu Okumaya

Zamanı ayarladıktan sonra, geçerli tarih ve saati okumak için bu komut dosyasını kullanın.

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)

Adım 5: DS1307'yi Raspberry Pi Sistem Saati ile Senkronize Etme

Senkronize etmek için DS1307 RTC Süresi Raspberry Pi Sistem Zamanı ile:

  1. DS1307 RTC zamanını okuyun ve sistem zamanı olarak ayarlayın:
    sudo hwclock -r
    sudo hwclock -s
    
  2. Raspberry Pi sistem süresinden DS1307 RTC süresini ayarlayın:
    sudo hwclock -w
    

Adım 6: DS1307 RTC modülünün uygulamaları

  1. Başsız Raspberry Pi cihazlarında zaman tutma - için yararlı Veri Günlüğü projeler.
  2. Ev Otomasyon Sistemleri - Güç kaybından sonra bile doğru zamanlanmış olayları sağlayın.
  3. IoT Projeleri - DS1307'yi kullanın zaman damgası verileri bağlantısı kesilmiş ortamlarda.
  4. Hava istasyonları - Doğru zaman damgalarını saklayın Sıcaklık ve Nem Kayıtları.

Sorun giderme

  1. DS1307 Tespit edilmedi (i2cdetect göstermiyor 0x68)

    • Sağlamak SDA/SCL pimleri doğru kablolu.
    • Doğrula I2C etkinleştirildi kullanma sudo raspi-config.
  2. Yanlış tarih/saat okumaları

    • Koşmak sudo hwclock -r Donanım saatini kontrol etmek için.
    • RTC saatini kullanarak sıfırlayın sudo hwclock -w.
  3. RTC süresi güç kapalıdan sonra devam etmiyor

    • Sağlamak CR2032 Pil doğru yüklenir.
    • Düşük veya ölü ise pili değiştirin.

Çözüm

. DS1307 RTC Modülü sağlayan Doğru gerçek zamanlı izleme Raspberry Pi projeleri için, güçlendirildiğinde bile. Bu kılavuzu takip ederek RTC işlevselliğini entegre edebilirsiniz. IoT, Otomasyon ve Veri Günlüğü Uygulamaları. 🚀

Yorum bırak

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.