באמצעות DS1307 RTC עם ה- Raspberry Pi

Using the DS1307 RTC with the Raspberry Pi

THE מודול DS1307 בזמן אמת (RTC) מאפשר ל- Raspberry Pi לעקוב אחר הזמן גם כאשר הוא מכבה. מדריך זה יעבור אותך בהגדרת מודול RTC DS1307 עם ה- Raspberry Pi באמצעות ה- פרוטוקול I2C.


מה תצטרך

  1. Raspberry Pi (כל דגם עם תמיכה ב- GPIO ו- I2C, למשל, pi 3, pi 4)
  2. מודול RTC DS1307
  3. CR2032 סוללה (לשמירה על זמן כאשר כבוי)
  4. חוטי לחם וגשר
  5. פיתון מותקן על ה- Raspberry Pi

שלב 1: חיווט DS1307 ל- Raspberry Pi

THE DS1307 מתקשר דרך i2cאז אנו מחברים אותו לסיכות ה- i2c של Raspberry Pi.

חיבורים (מצב I2C)

PIN DS1307 סיכת פטל pi
VCC 3.3V או 5V (סיכה 1 או 2)
GND קרקע (סיכה 6)
SDA SDA (PIN 3, GPIO2)
SCL SCL (סיכה 5, GPIO3)

שלב 2: הפעל את i2c ב- Raspberry Pi

  1. פתח את כלי התצורה של Raspberry Pi:
    sudo raspi-config
    
  2. נווט אל אפשרויות ממשק> i2c ולאפשר את זה.
  3. אתחל מחדש את ה- Raspberry Pi:
    sudo reboot
    
  4. ודא ש- DS1307 מתגלה באוטובוס i2c:
    sudo i2cdetect -y 1
    
    THE DS1307 אמור להופיע בכתובת 0x68.

שלב 3: התקן ספריות נדרשות

  1. עדכן את רשימת החבילות של Raspberry Pi שלך:
    sudo apt update && sudo apt upgrade -y
    
  2. התקן את כלי ה- I2C והספריות הפיתון הנדרשים:
    sudo apt install -y i2c-tools python3-smbus python3-pip
    pip3 install adafruit-circuitpython-ds1307
    

שלב 4: הגדרת זמן קריאה ב- DS1307

קוד פייתון לקביעת התאריך והשעה

הפעל את סקריפט זה פעם אחת כדי להגדיר את שעון ה- 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!")

קוד פייתון לקריאת זמן מ- DS1307

לאחר קביעת השעה, השתמש בתסריט זה כדי לקרוא את התאריך והשעה הנוכחיים.

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: סנכרון DS1307 עם שעון מערכת Raspberry Pi

לסנכרן את זמן RTC DS1307 עם זמן מערכת ה- Raspberry Pi:

  1. קרא את זמן ה- DS1307 RTC ולהגדיר אותו כזמן המערכת:
    sudo hwclock -r
    sudo hwclock -s
    
  2. קבע את זמן ה- DS1307 RTC משעת מערכת Raspberry Pi:
    sudo hwclock -w
    

שלב 6: יישומים של מודול RTC DS1307

  1. שמירה על זמן במכשירי פטל PI ללא ראש - שימושי ל רישום נתונים פרויקטים.
  2. מערכות אוטומציה ביתיות - להבטיח אירועים מתוזמנים מדויקים גם לאחר הפסד חשמל.
  3. פרויקטים של IoT - השתמש ב- DS1307 עבור נתוני חותמת זמן בסביבות מנותקות.
  4. תחנות מזג אוויר - אחסן חותמות זמן מדויקות עבור רשומות טמפרטורה ולחות.

פתרון בעיות

  1. DS1307 לא זוהה (i2cdetect לא מראה 0x68)

    • להבטיח את סיכות SDA/SCL מחווטות נכון.
    • אמת את זה I2C מופעל באמצעות sudo raspi-config.
  2. קריאות תאריך/זמן שגוי

    • לָרוּץ sudo hwclock -r כדי לבדוק את שעון החומרה.
    • אפס את שעון ה- RTC באמצעות sudo hwclock -w.
  3. זמן RTC לא מתמיד לאחר כיבוי

    • להבטיח את CR2032 סוללה מותקן כראוי.
    • החלף את הסוללה אם היא נמוכה או מתה.

מַסְקָנָה

THE מודול RTC DS1307 מספק מעקב מדויק בזמן אמת לפרויקטים של Raspberry Pi, גם כאשר הם כבויים. על ידי ביצוע מדריך זה, באפשרותך לשלב פונקציונליות של RTC ב יישומי IoT, אוטומציה ויישומי רישום נתונים. 🚀

השאירו תגובה

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.