A DS1307 valós idejű óra (RTC) modul Lehetővé teszi, hogy a Raspberry Pi nyomon kövesse az időt, még akkor is, ha ki van kapcsolva. Ez az útmutató végigvezeti a DS1307 RTC modul a Raspberry Pi segítségével a I2C protokoll.
Mire lesz szüksége
- Málna PI (Bármely modell GPIO és I2C támogatással, például PI 3, PI 4)
- DS1307 RTC modul
- CR2032 akkumulátor (az idő fenntartásáért, amikor kikapcsolják)
- Kenyérlemez és jumper vezetékek
- Python telepítve a málna pi -n
1. lépés: A DS1307 huzalozása a Raspberry PI -hez
A A DS1307 az I2C -n keresztül kommunikál, tehát összekapcsoljuk a Raspberry Pi I2C csapokkal.
Csatlakozások (I2C mód)
DS1307 PIN | Málna pi tű |
---|---|
VCC | 3,3 V vagy 5 V (1. vagy 2. érintkező) |
GND | Föld (6. érintkező) |
SDA | SDA (3. érintkező, GPIO2) |
SCL | SCL (5. érintkező, GPIO3) |
2. lépés: Engedélyezze az I2C -t a Raspberry PI -n
- Nyissa meg a Raspberry PI konfigurációs eszközt:
sudo raspi-config
- Navigál Interfész opciók> i2c és engedélyezze.
- Indítsa újra a Raspberry Pi -t:
sudo reboot
- Ellenőrizze, hogy a DS1307 észlelhető Az I2C buszon:
A A DS1307 címen megjelenik a címensudo i2cdetect -y 1
0x68
.
3. lépés: Telepítse a szükséges könyvtárakat
- Frissítse a Raspberry Pi csomaglistáját:
sudo apt update && sudo apt upgrade -y
- Telepítse a szükséges I2C eszközöket és a Python könyvtárakat:
sudo apt install -y i2c-tools python3-smbus python3-pip pip3 install adafruit-circuitpython-ds1307
4. lépés: A DS1307 beállítása és olvasási ideje
Python kód a dátum és az idő beállításához
Futtassa ezt a szkriptet egyszer az RTC óra beállításához.
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!")
Python kód, hogy elolvassa az időt a DS1307 -ből
Az idő beállítása után használja ezt a szkriptet az aktuális dátum és idő elolvasásához.
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)
5. lépés: A DS1307 szinkronizálása a Raspberry Pi System órával
Szinkronizálni a DS1307 RTC idő A Raspberry Pi rendszer időjével:
-
Olvassa el a DS1307 RTC időt és állítsa be a rendszeridőként:
sudo hwclock -r sudo hwclock -s
-
Állítsa be a DS1307 RTC időt a Raspberry Pi rendszer időpontjáról:
sudo hwclock -w
6. lépés: A DS1307 RTC modul alkalmazásai
- Tartsa az időt a fej nélküli málna PI eszközökön - Hasznos a adatnaplózás projektek.
- Otthoni automatizálási rendszerek - Biztosítsa a pontos ütemezett eseményeket még az energiavesztés után is.
- IOT projektek - Használja a DS1307 -et időbélyegző adatok leválasztott környezetben.
- Időjárási állomások - Tárolja a pontos időbélyegeket hőmérsékleti és páratartalom nyilvántartása.
Hibaelhárítás
-
A DS1307 -et nem észlelték (
i2cdetect
nem mutat0x68
)- Gondoskodjon a SDA/SCL csapok helyesen vezetékes.
- Ellenőrizze ezt Az I2C engedélyezve van felhasználás
sudo raspi-config
.
-
Helytelen dátum/időolvasások
- Fut
sudo hwclock -r
A hardver óra ellenőrzéséhez. - Állítsa vissza az RTC órát
sudo hwclock -w
.
- Fut
-
Az RTC idő nem tart fenn a kikapcsolás után
- Gondoskodjon a CR2032 akkumulátor helyesen van telepítve.
- Cserélje ki az akkumulátort, ha alacsony vagy halott.
Következtetés
A DS1307 RTC modul biztosít pontos valós idejű követés A Raspberry PI projektekhez, még akkor is, ha kikapcsolják. Az útmutató követésével integrálhatja az RTC funkcionalitást IoT, automatizálás és adatnaplózási alkalmazások. 🚀