中野島ロボット

小さなロボットの自作記事を書いています。

週刊中ロボ188 ラズパイ400にRTCを追加する ソフトウェア編

つづきに
ラズパイ400(RPi400)をPCとして普段使いするときに、ほしいのがRTC(リアルタイムクロック)機能です。RTCがあれば、起動直後でも、ネットワークとつながっていなくても、正確な時刻が得られます。

f:id:nakarobo:20220223103719j:plain


ソフトウェアの設定

OSはRaspberrypi OS bullsye 32Bit と 64bitで確認しています。

1. メニューー>設定ー>Raspberry Pi の設定ー>インタフェースタブ で I2CをONにする

2. いつものconfig.txtを開いて、最後に2行追加します。

pi@raspberrypi:~ $ sudo vi /boot/config.txt

(中略)

# RTC DS3231
dtoverlay=i2c-rtc,ds3231

再起動するとRTCが有効になります。

動作確認手順
RTCが故障していないか確認する手順を以下に示しておきます。

1. メニューー>設定ー>Raspberry Pi の設定ー>インタフェースタブ で I2CをONにする
2. $ /usr/sbin/i2cdetect -y 1 で認識しているか表示する。

pi@raspberrypi:~ $ /usr/sbin/i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --    

68がRTC DS3231 です。

$ sudo modprobe -c |grep ds3231
alias i2c:ds3231 rtc_ds1307
alias of:N*T*Cmaxim,ds3231 rtc_ds1307
alias of:N*T*Cmaxim,ds3231C* rtc_ds1307

rs3231はソフトウェア的には rtc_ds1307 と同じです。

3.ドライバーのインストール

pi@raspberrypi:~ $ sudo modprobe rtc_ds1307

pi@raspberrypi:~ $ sudo modprobe -c |grep ds3231
alias i2c:ds3231 rtc_ds1307
alias of:N*T*Cmaxim,ds3231 rtc_ds1307
alias of:N*T*Cmaxim,ds3231C* rtc_ds1307
pi@raspberrypi:~ $ sudo modprobe rtc_ds1307
pi@raspberrypi:~ $ echo ds3231 0x68 | sudo tee /sys/class/i2c-adapter/i2c-1/new_device
ds3231 0x68
pi@raspberrypi:~ $ /usr/sbin/i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         
pi@raspberrypi:~ $ 

68->UU になっているはず

4.時刻を合わせる
ラズパイの時刻が合っていることを確認して現在時刻をRTCに設定します。

 $ sudo hwclock -w

5.時刻の確認
正しく設定されたか確認します。

 $ sudo hwclock -r
 2021-01-03 07:00:48.636663+09:00

現在時刻が端末に表示されれば動作確認は終了です。

 

おわりに
昔はいろいろ手順がありましたが、今は簡単になっています。これで起動直後でも、ネットワークに接続されていなくても正確な時刻が得られます。

おしまい


購入品情報 DS3231 高精度RTCモジュール5個セット
Raspberry Pi4Bのコネクタに直接接続できるタイプのRTCモジュールです。

1個単位でも200円程で購入できます。

電池を交換できるものもありますが、外径が大きくなります。