. Moduł Zegar w czasie rzeczywistym DS1307 (RTC) Pozwala Raspberry Pi śledzić czas, nawet gdy jest wyłączony. Ten przewodnik poprowadzi Cię przez konfigurowanie Moduł RTC DS1307 z Raspberry Pi za pomocą Protokół I2C.
Czego będziesz potrzebować
- Raspberry Pi (Każdy model z obsługą GPIO i I2C, np. PI 3, PI 4)
- Moduł RTC DS1307
- Bateria CR2032 (do utrzymania czasu po wyłączeniu)
- Druty chleba i skoczków
- Zainstalowany Python na Raspberry Pi
Krok 1: Okablowanie DS1307 do Raspberry Pi
. DS1307 komunikuje się przez I2C, więc łączymy go z pinami I2C Raspberry Pi.
Połączenia (tryb I2C)
| DS1307 PIN | Pin Raspberry Pi | 
|---|---|
| VCC | 3,3 V lub 5 V (pin 1 lub 2) | 
| GND | Uziemienie (pin 6) | 
| SDA | SDA (pin 3, GPIO2) | 
| Scl | SCL (pin 5, GPIO3) | 
Krok 2: Włącz I2C na Raspberry Pi
- Otwórz narzędzie konfiguracyjne Raspberry Pi:
sudo raspi-config
- Przejść do Opcje interfejsu> i2c i włącz to.
- Uruchom ponownie Raspberry Pi:
sudo reboot
- Sprawdź, czy DS1307 jest wykrywany W autobusie I2C:
 . DS1307 powinien pojawić się pod adresemsudo i2cdetect -y 10x68.
Krok 3: Zainstaluj wymagane biblioteki
- Zaktualizuj listę pakietów Raspberry Pi:
sudo apt update && sudo apt upgrade -y
- Zainstaluj wymagane narzędzia I2C i biblioteki Python:
sudo apt install -y i2c-tools python3-smbus python3-pip pip3 install adafruit-circuitpython-ds1307
Krok 4: Czas ustawienia i czytania na DS1307
Kod Pythona, aby ustawić datę i godzinę
Uruchom ten skrypt raz, aby ustawić zegar 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!")
Kod Pythona do odczytania czasu z DS1307
Po ustawieniu czasu użyj tego skryptu, aby odczytać bieżącą datę i godzinę.
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)
Krok 5: Synchronizacja DS1307 z zegar systemu Raspberry Pi
Zsynchronizować DS1307 RTC Czas Z czasem systemu Raspberry Pi:
- 
Przeczytaj czas RTC DS1307 i ustaw go jako czas systemu:
sudo hwclock -r sudo hwclock -s
- 
Ustaw czas RTC DS1307 od czasu systemu Raspberry Pi:
sudo hwclock -w
Krok 6: Zastosowania modułu RTC DS1307
- Trzymanie czasu na bezgłowych urządzeniach Raspberry Pi - Przydatny dla rejestrowanie danych projektowanie.
- Domowe systemy automatyzacji - Zapewnij dokładne zaplanowane zdarzenia nawet po utraty mocy.
- Projekty IoT - Użyj DS1307 dla Dane dotyczące znaczników czasu w rozłączonych środowiskach.
- Stacje pogodowe - przechowuj dokładne znaczniki czasu dla Rekordy temperatury i wilgotności.
Rozwiązywanie problemów
- 
DS1307 nie wykryty ( i2cdetectnie pokazuje0x68)- Upewnij się SDA/SCL PINS są prawidłowo podłączone.
- Sprawdź to I2C jest włączony używając sudo raspi-config.
 
- 
Nieprawidłowe odczyty daty/godziny - Uruchomić sudo hwclock -rAby sprawdzić zegar sprzętowy.
- Zresetuj zegar RTC za pomocą sudo hwclock -w.
 
- Uruchomić 
- 
RTC czas nie utrzymywał się po zasilaniu - Upewnij się Bateria CR2032 jest instalowany poprawnie.
- Wymień baterię, jeśli jest niska lub martwa.
 
Wniosek
. Moduł RTC DS1307 zapewnia Dokładne śledzenie w czasie rzeczywistym W przypadku projektów Raspberry Pi, nawet po wyłączeniu. Postępując zgodnie z tym przewodnikiem, możesz zintegrować funkcjonalność RTC z Aplikacje IoT, automatyzacja i rejestrowanie danych. 🚀
 
            
 
      
 
      
 
      
 
      
 
      
 
       
         
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
   
   
   
   
   
   
   
   
   
   
   
   
  