- 世にあるほとんどのPCであれば、電源を抜いて時間が経過した後でも、数年の間を開けなければ年月日日時は正確な状態だと思います(多少のずれはあったとしても)
Raspberry PI に至っては、起動時にインターネットから現在の時間を取得するハードウェア仕様のため、「インターネットに接続できない環境では時計が狂う」問題が発生します。
これは、ハードウェア的に「RTC」という機能がないために発生します。
ドライブレコーダーとしては、常にインターネットに接続できる状況は考えずらいため、ハードウェア的に「RTC」機能を付与します。
まずは物品購入。
GPIOに刺すだけで使えます(設定は後述)
電源OFF、GPIOに刺したら起動します。
なお、ボタン電池が入っていない場合は入れておきましょう。
設定方法は以下。
1.i2cの有効化
GPIOに接続、i2cにて認識させるので、i2cを有効にします。
$ sudo raspi-config
にてOSの設定を行います。
OSのバージョンにより内容が変わるのですが、
「Interface Options」に「I2C」があると思うので、有効にして再起動します。
2.RTCモジュールのデバイス登録
OSにRTCモジュールを登録します。
/boot/config.txt
の末尾に
dtoverlay=i2c-rtc,ds3231
を追記します。
接続したRTCモジュールに合わせて「ds3231」は変更が必要です。
3.接続確認
ターミナルにて、
$ timedatectl
を実行すると、「RTC TIME:」の後に日時が表示されます。
「N/A」と表示されている場合は接続がうまくできていません。
4.「fake-hwclock」の無効可
RaspberryPiは、シャットダウン時点での時刻を保存、再起動時に復元することで、
なんとなく日時を保存しているようです。
これはRTCを組み込んだ場合は不要となるので無効にします。
ターミナルにて、
$ sudo apt-get purge fake-hwclock
を実行します。
5.RTCモジュールから日時を取得するように
以下の内容でファイル「/etc/udev/rules.d/85-hwclock.rules」を新規作成します。
KERNEL=="rtc0", RUN+="/sbin/hwclock --rtc=$root/$name --hctosys"