Raspberry Pi ドライブレコーダーの作成⑩ RTC問題

  1. 世にあるほとんどの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"