. 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 1
0x68
.
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 (
i2cdetect
nie 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 -r
Aby 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. 🚀