ラズパイにRTCを追加する


センサーからデータを収集してデータを記録するときに日時と一緒に記録するとお思います。
自分も色々とセンサーを繋げて遊んでいるのですが、必ずネットワークに接続されている環境とは限りません。
ラズパイの場合、RTCを内蔵していないのでネットワークに接続していないと正確な時刻を使うには、起動後に手動で毎回設定する必要があります。
それは、面倒なのでラズパイに接続できるRTCを買ってきました。
ラズパイの電源が入っていない状態でも電池を使って日時をカウントしています。

今回購入したRTCモジュール

今回は、Seeed Studioの2種類のモジュールを購入しました。
1つはPi RTCという製品で、もう一つは高精度Pi RTCとなります。
両方とも電池はCR1225かCR1220を使います。
近所のスーパーにはCR1220しか売っていなかったので、今回はCR1220を使います。
CR1225とCR1220の違いは厚みが0.5mm違うそうです。
(CR1225の少し厚い)

Pi RTC

High Accuracy Pi RTC

メーカーのドキュメント

High Accuracy Pi RTCを接続

ドライバの取得

$ mkdir rtc
$ cd rtc
$  git clone https://github.com/Seeed-Studio/pi-hats.git
Cloning into 'pi-hats'...
remote: Enumerating objects: 394, done.
remote: Counting objects: 100% (135/135), done.
remote: Compressing objects: 100% (91/91), done.
remote: Total 394 (delta 66), reused 71 (delta 44), pack-reused 259
Receiving objects: 100% (394/394), 10.28 MiB | 2.71 MiB/s, done.
Resolving deltas: 100% (181/181), done.

ドライバのインストール

$ cd pi-hats/tools
$ sudo ./install.sh -u rtc_ds3231
Uninstall rtc_ds1307 ...
Uninstall rtc_ds3231 ...
Uninstall adc_ads1115 ...
Enable I2C interface ...
Install rtc_ds3231 ...
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージは「削除」されます:
  fake-hwclock
アップグレード: 0 個、新規インストール: 0 個、削除: 1 個、保留: 13 個。
この操作後に 32.8 kB のディスク容量が解放されます。
(データベースを読み込んでいます ... 現在 104235 個のファイルとディレクトリがインストールされています。)
fake-hwclock (0.11+rpt1) を削除しています ...
man-db (2.8.5-2) のトリガを処理しています ...
Synchronizing state of fake-hwclock.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable fake-hwclock
Unit /etc/systemd/system/fake-hwclock.service is masked, ignoring.
#######################################################
Reboot the system to take a effect of Install/Uninstall
#######################################################

High Accuracy Pi RTCの接続

ドライバのインストールが完了したら、ラズパイをシャットダウンして、RTCのHATをつけて、起動します。

High Accuracy Pi RTCのピン配列

スクリーンショット 2021-12-11 13.37.53.png

ラズパイのPINに合わせてHigh Accuracy Pi RTCを接続します。

動作確認

インストールされているドライバの確認

$ ./install.sh -l
rtc_ds1307    : not installed
rtc_ds3231    : installed
adc_ads1115   : not installed

ハードウェアクロックの表示

$ sudo hwclock -r
2021-12-11 13:18:35.921227+09:00

ハードウェアクロックを使ってシステム時間を設定

$ sudo hwclock -s

システム時間を使ってハードウェアクロックを設定

sudo hwclock -w

ドライバのインストールスクリプトが全てやってくれるので、インストール自体は簡単に終わりました。
普通のPi RTCの方も同じように簡単に使える状態になると思います。