Raspberry PiでDS1307 RTCを使用する

Using the DS1307 RTC with the Raspberry Pi

(日本語) DS1307リアルタイムクロック(RTC)モジュール Raspberry Piは電源オフ時でも時間を追跡できます。このガイドでは、 DS1307 RTCモジュール Raspberry Piを使って プロトコルの.


あなたが必要とするもの

  1. ラズベリーパイ (GPIOとI2Cをサポートしているモデル(例:Pi 3、 Pi 4)
  2. DS1307 RTCモジュール
  3. CR2032バッテリー (電源オフ時の時間維持のため)
  4. ブレッドボードとジャンパーワイヤー
  5. インストールされたPython ラズベリーパイに

ステップ1:ラズベリーパイにDS1307を配線する

(日本語) は 経由で通信Raspberry PiのI2Cピンに接続します。

接続(I2Cモード)

DS1307ピン ラズベリーピピン
VCC 3.3Vまたは5V(ピン1または2)
GND グラウンド(ピン6)
SDA SDA(ピン3、 GPIO2)
SCL SCL(ピン5、 GPIO3)

ステップ2: Raspberry PiでI2Cを有効にする

  1. Raspberry Pi設定ツールを開きます。
    sudo raspi-config
    
  2. に移動します。 インターフェイスオプション>I2C それを有効にします。
  3. Raspberry Piを再起動する:
    sudo reboot
    
  4. を確認します。 DS1307が検出されました I2Cバスで:
    sudo i2cdetect -y 1
    
    (日本語) アドレスにDS1307が表示されます 0x68.

ステップ3:必要なライブラリをインストールする

  1. Raspberry Piのパッケージリストを更新してください:
    sudo apt update && sudo apt upgrade -y
    
  2. 必要なI2CツールとPythonライブラリをインストールします。
    sudo apt install -y i2c-tools python3-smbus python3-pip
    pip3 install adafruit-circuitpython-ds1307
    

ステップ4: DS1307の設定と読み取り時間

日付と時刻を設定するPythonコード

このスクリプトを一度実行して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から時間を読み取るPythonコード

時刻を設定した後、このスクリプトを使用して現在の日時を読み取ります。

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: Raspberry PiシステムクロックとDS1307を同期する

同期するには DS1307 RTC時間 Raspberry Piシステム時間で:

  1. DS1307 RTC時間を読む システム時間として設定します。
    sudo hwclock -r
    sudo hwclock -s
    
  2. Raspberry Piシステム時間からDS1307 RTC時間を設定する:
    sudo hwclock -w
    

ステップ6: DS1307 RTCモジュールのアプリケーション

  1. ヘッドレスRaspberry 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バッテリー 正しくインストールされています。
    • バッテリーが低いか死んでいる場合は交換してください。

おわりに

(日本語) DS1307 RTCモジュール 提供する 正確なリアルタイムトラッキング 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.