Amazonで検索すると、うってつけの製品が見つかった。SunFounder DS3231という小さなPCボードで、I2CでRPi(やArduino)のI/Oポートに直接装着できる。単価$6という価格も嬉しい。さっそく買ってみた。
RPiでの使用方法はこちらのサイトに解説されており(右の製品写真もこのサイトから拝借した)、それに従えばちゃんと動くが、少々読みにくいので以下に読み下し解説を再掲載してみる。
ハードウェアの実装はとても簡単。写真のようにI/Oポートに向きを正しく差し込んでお終い。
ソフトウェアは、以下の二つのファイルを変更し、
- /etc/init.d/hwclock.sh
- /etc/modprobe.d/raspi-blacklist.con
- /etc/cron.hourly/sync-hwclock
/tmp/ds3231にパッチファイルをダウンロードして、patchを実行。
root@pi:~# cd / root@pi:/# patch --dry-run -p0 < /tmp/ds3231.patch 問題のないことを確認してね root@pi:/# patch -p0 < /tmp/ds3231.patch |
実は、最後の追加ファイル(/etc/cron.hourly/sync-hwclock)は原典には含まれていない。定期的にntptraceを実行して、NTPが生きているならリアルタイムクロックをNTPに同期させるごく簡単なスクリプト。
で、OSの設定を変更ファイルにパッチを当てただけではまだ動かない。以下の手順を実行してOSの設定を変更しなければならない。 |
root@pi:~# update-rc.d hwclock.sh enable root@pi:~# reboot |
この段階で、/dev/rtc0という新しいデバイスファイルが出来上がっていることを確認。
確認できたら、今一度タイムゾーンの設定を確認。
root@pi:~# dpkg-reconfigure tzdata |
もうリアルタイムクロックが使えるので、NTPで同期してある現在の時刻をリアルタイムクロックに書き込んで、もともとのダミーのリアルタイムクロックをディセーブルすると出来上がり。
root@pi:~# heclock -w root@pi:~# update-rc.d fake-hwclock disable root@pi:~# reboot |
原典では以下も実行してNTPを完全に殺しているが、時々でもインターネットに繋がる可能性があるのなら、NTPで時刻を常に同期させる方がよいのでここでは実行しない。もしNTPを完全に殺すなら、上記で作成したcronファイルは削除してください。
root@pi:~# update-rc.d ntp disable |
リアルタイムクロックの動作確認は、本当はネットワークを外してリブートしてOSの時計がちゃんと設定されていることを確認すべきだが、ハードウェアクロックの動作確認だけなら以下で十分。
root@pi:~# hwclock --show |
簡単でしたね。
0 件のコメント:
コメントを投稿