Käyttämällä DS1307 RTC: tä Raspberry Pi: n kanssa

Using the DS1307 RTC with the Raspberry Pi

Se DS1307 Reaaliaikainen kello (RTC) -moduuli Mahdollistaa Raspberry Pi seurata aikaa, vaikka se olisi virta. Tämä opas opastaa sinut läpi perustamisen DS1307 RTC -moduuli Raspberry Pi I2C -protokolla.


Mitä tarvitset

  1. Raspberry Pi (Mikä tahansa malli, jolla on GPIO- ja I2C -tuki, esim. Pi 3, pi 4)
  2. DS1307 RTC -moduuli
  3. CR2032 akku (Ajan ylläpitämistä varten, kun se virtaa pois)
  4. Leipälevy- ja hyppyjohdot
  5. Python asennettu Raspberry Pi

Vaihe 1: DS1307: n johdotus Raspberry Pi: hen

Se DS1307 kommunikoi I2C: n kautta, joten yhdistämme sen Raspberry Pi: n I2C -nastaihin.

Yhteydet (I2C -tila)

DS1307 -nasta Raspberry Pi -tappi
VCC 3,3 V tai 5 V (nasta 1 tai 2)
Hölynpöly Maa (nasta 6)
SDA SDA (PIN 3, GPIO2)
SCL SCL (nasta 5, GPIO3)

Vaihe 2: Ota I2c käyttöön Raspberry Pi

  1. Avaa Raspberry Pi -määritystyökalu:
    sudo raspi-config
    
  2. Siirtyä jhk Käyttöliittymävaihtoehdot> I2C ja ota se käyttöön.
  3. Käynnistä Raspberry Pi uudelleen:
    sudo reboot
    
  4. Varmista, että DS1307 havaitaan I2C -bussissa:
    sudo i2cdetect -y 1
    
    Se DS1307: n tulisi näkyä osoitteessa 0x68.

Vaihe 3: Asenna vaadittavat kirjastot

  1. Päivitä Raspberry Pi: n pakettiluettelo:
    sudo apt update && sudo apt upgrade -y
    
  2. Asenna tarvittavat I2C -työkalut ja Python -kirjastot:
    sudo apt install -y i2c-tools python3-smbus python3-pip
    pip3 install adafruit-circuitpython-ds1307
    

Vaihe 4: DS1307: n asettaminen ja lukeminen

Python -koodi asettaa päivämäärä ja aika

Suorita tämä skripti kerran asettaaksesi RTC -kello.

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 -koodi lukemaan aikaa DS1307: stä

Ajan asettamisen jälkeen tämän komentosarjan lukeminen nykyinen päivämäärä ja aika.

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)

Vaihe 5: DS1307: n synkronointi Raspberry Pi System Clock -kellon kanssa

Synkronoida DS1307 RTC -aika Vadelma Pi -järjestelmän kanssa:

  1. Lue DS1307 RTC -aika ja aseta se järjestelmäaikana:
    sudo hwclock -r
    sudo hwclock -s
    
  2. Aseta DS1307 RTC -aika Raspberry Pi -järjestelmän ajasta:
    sudo hwclock -w
    

Vaihe 6: DS1307 RTC -moduulin sovellukset

  1. Pidä aikaa päättömillä Raspberry Pi -laitteilla - hyödyllinen tietojen kirjaus projektit.
  2. Kodin automaatiojärjestelmät - Varmista tarkkoja aikataulun mukaisia ​​tapahtumia myös virranhäviön jälkeen.
  3. Internet -projektit - Käytä DS1307: tä aikaleiman tiedot irrotetuissa ympäristöissä.
  4. Sääasemat - Säilytä tarkkoja aikaleimoja Lämpötila- ja kosteustiedot.

Vianetsintä

  1. DS1307: tä ei havaittu (i2cdetect ei näy 0x68)

    • Varmistaa SDA/SCL -nastat ovat oikein johdotettuja.
    • Varmistaa, että I2C on käytössä käyttäminen sudo raspi-config.
  2. Virheelliset päivämäärä-/aikatiedot

    • Juoksua sudo hwclock -r Tarkista laitteistokello.
    • Nollaa RTC -kello käyttämällä sudo hwclock -w.
  3. RTC -aika ei pysy voiman jälkeen

    • Varmistaa CR2032 akku on asennettu oikein.
    • Vaihda akku, jos se on matala tai kuollut.

Johtopäätös

Se DS1307 RTC -moduuli tarjoaa tarkka reaaliaikainen seuranta Raspberry Pi -projekteihin, jopa silloin, kun se poistuu. Seuraamalla tätä opasta, voit integroida RTC -toiminnallisuuden IoT-, automaatio- ja tietojen kirjaussovellukset. 🚀

Jätä kommentti

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.