さて、再開します。

まずはRTCを。


採用したのは、DS1307ZN。

参考にしたのはこちらのサイト

https://qiita.com/kioto/items/415787721b03bf47c961


・I2Cの有効化


$ sudo pico /boot/config.txt


以下の行をpi4の項目に追加


dtoverlay=i2c-rtc,ds1307

dtparam=i2c_arm=on


・fake-hwclockの削除


$ sudo apt-get -y remove fake-hwclock

$ sudo update-rc.d -f fake-hwclock remove

 

・I2Cドライバのロード

$ sudo su -

# modprobe i2c-bcm2835

# modprobe rtc-ds1307

# echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device

# exit

 

・firmware/config.txtの修正

ないので、一回飛ばす。

 

Rasbianのバージョン違いの影響みたい。

 

・hwclockの設定を変更

$ sudo pico /lib/udev/hwclock-set

以下、コメントアウト


#if [ -e /run/systemd/system ] ; then

#    exit 0

#fi

 

・再起動

以下、コマンドで読めてればOKっぽい。

$ sudo dmesg | grep rtc-ds1307

[   26.476558] rtc-ds1307 1-0068: registered as rtc0


[   26.479004] rtc-ds1307 1-0068: hctosys: unable to read the hardware clock


まだバックアップ電源入れていないのでエラー出てるかな?


 

その後、バックアップ電源を入れて、wifを殺し、pi電源を落とした。

しばらく放置して電源を入れたところ、時計あってた!

動いていそう。

 


$ sudo dmesg | grep rtc-ds1307

[    6.196496] rtc-ds1307 1-0068: registered as rtc0

[    6.200965] rtc-ds1307 1-0068: setting system clock to 2025-04-26T11:45:54 UTC (1745667954)

 

よしよし。

バックアップ時の電流は2mA程度。まあ、よかろうというか測定誤差な気がする。