रास्पबेरी पाई के साथ DS1307 RTC का उपयोग करना

Using the DS1307 RTC with the Raspberry Pi

द DS1307 रियल-टाइम क्लॉक (RTC) मॉड्यूल रास्पबेरी पाई को संचालित होने पर भी समय का ट्रैक रखने की अनुमति देता है. यह मार्गदर्शिका आपको स्थापित करने के माध्यम से चलेगी DS1307 RTC मॉड्यूल रास्पबेरी पाई का उपयोग करके I2C प्रोटोकॉल.


आपको क्या चाहिए

  1. रास्पबेरी पाई (जीपीआईओ और आई 2 सी समर्थन के साथ कोई भी मॉडल, जैसे, पाई 3, पाई 4)
  2. DS1307 RTC मॉड्यूल
  3. CR2032 बैटरी (जब संचालित समय बनाए रखने के लिए)
  4. ब्रेडबोर्ड और जम्पर तारों
  5. पायथन स्थापित रास्पबेरी पाई पर

चरण 1: रास्पबेरी पाई को DS1307 वायरिंग

DS1307 I2C के माध्यम से संचार करता है, इसलिए हम इसे रास्पबेरी पाई के I2C पिन से जोड़ते हैं.

कनेक्शन (I2C मोड)

DS1307 पिन रास्पबेरी पाई पिन
वीसीसी 3.3V या 5V (पिन 1 या 2)
GND ग्राउंड (पिन 6)
एसडीए SDA (पिन 3, GPIO2)
एससीएल SCL (पिन 5, GPIO3)

चरण 2: रास्पबेरी पाई पर I2C सक्षम करें

  1. रास्पबेरी पाई विन्यास उपकरण खोलें:
    sudo raspi-config
    
  2. पर नेविगेट करें इंटरफ़ेस विकल्प > I2C और इसे सक्षम करें.
  3. रास्पबेरी पाई को रिबूट करें:
    sudo reboot
    
  4. सत्यापित करें कि DS1307 का पता चला है I2C बस पर:
    sudo i2cdetect -y 1
    
    DS1307 पते पर दिखाई देना चाहिए 0x68.

चरण 3: आवश्यक लाइब्रेरी स्थापित करें

  1. अपनी रास्पबेरी पाई की पैकेज सूची अपडेट करें:
    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 को सिंक करना

सिंक करने के लिए DS1307 RTC समय रास्पबेरी पाई प्रणाली समय के साथ:

  1. DS1307 RTC समय पढ़ें और इसे सिस्टम समय के रूप में सेट करें:
    sudo hwclock -r
    sudo hwclock -s
    
  2. रास्पबेरी पाई प्रणाली समय से DS1307 RTC समय निर्धारित करें:
    sudo hwclock -w
    

चरण 6: DS1307 RTC मॉड्यूल के अनुप्रयोग

  1. हेडलेस रास्पबेरी पाई डिवाइसेस पर टाइम रखना – के लिए उपयोगी डेटा लॉगिंग परियोजनाओं.
  2. होम ऑटोमेशन सिस्टम – बिजली की हानि के बाद भी सटीक अनुसूचित घटनाओं को सुनिश्चित करें.
  3. IoT प्रोजेक्ट्स – के लिए DS1307 का उपयोग करें टाइमस्टैम्पिंग डेटा डिस्कनेक्ट किए गए वातावरण में.
  4. मौसम स्टेशन – के लिए सटीक टाइमस्टैम्प स्टोर करें तापमान और आर्द्रता रिकॉर्ड.

समस्या निवारण

  1. DS1307 पता नहीं (i2cdetect नहीं दिखाता 0x68)

    • सुनिश्चित करें एसडीए / एससीएल पिन सही ढंग से वायर्ड हैं.
    • सत्यापित करें कि I2C सक्षम है उपयोग sudo raspi-config.
  2. गलत तिथि / समय रीडिंग

    • Daud sudo hwclock -r हार्डवेयर घड़ी की जाँच करने के लिए.
    • उपयोग करके RTC घड़ी रीसेट करें sudo hwclock -w.
  3. पावर ऑफ के बाद आरटीसी टाइम पर्सिस्टिंग नहीं

    • सुनिश्चित करें CR2032 बैटरी सही तरीके से स्थापित किया गया है.
    • बैटरी को कम या मृत होने पर बदलें.

निष्कर्ष

DS1307 RTC मॉड्यूल प्रदान करता है सटीक वास्तविक समय ट्रैकिंग रास्पबेरी पाई परियोजनाओं के लिए, यहां तक कि जब बंद संचालित. इस गाइड का पालन करके, आप 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.