. 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
- Ahududu pi (GPIO ve I2C destekli herhangi bir model, örneğin Pi 3, Pi 4)
- DS1307 RTC Modülü
- CR2032 Pil (Güçlendirildiğinde zamanı korumak için)
- Breadboard ve jumper telleri
- 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
- Raspberry Pi yapılandırma aracını açın:
sudo raspi-config
- Gezmek Arayüz Seçenekleri> I2C ve etkinleştir.
- Raspberry Pi'yi yeniden başlatın:
sudo reboot
- Doğrula DS1307 tespit edildi I2C otobüsünde:
. DS1307 adreste görünmelidirsudo i2cdetect -y 1
0x68
.
3. Adım: Gerekli kütüphaneleri kurun
- Raspberry Pi’nin paket listesini güncelleyin:
sudo apt update && sudo apt upgrade -y
- 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:
-
DS1307 RTC zamanını okuyun ve sistem zamanı olarak ayarlayın:
sudo hwclock -r sudo hwclock -s
-
Raspberry Pi sistem süresinden DS1307 RTC süresini ayarlayın:
sudo hwclock -w
Adım 6: DS1307 RTC modülünün uygulamaları
- Başsız Raspberry Pi cihazlarında zaman tutma - için yararlı Veri Günlüğü projeler.
- Ev Otomasyon Sistemleri - Güç kaybından sonra bile doğru zamanlanmış olayları sağlayın.
- IoT Projeleri - DS1307'yi kullanın zaman damgası verileri bağlantısı kesilmiş ortamlarda.
- Hava istasyonları - Doğru zaman damgalarını saklayın Sıcaklık ve Nem Kayıtları.
Sorun giderme
-
DS1307 Tespit edilmedi (
i2cdetect
göstermiyor0x68
)- Sağlamak SDA/SCL pimleri doğru kablolu.
- Doğrula I2C etkinleştirildi kullanma
sudo raspi-config
.
-
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
.
- Koşmak
-
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ı. 🚀