時計モジュールをRaspbian OSで管理する

ここまでで、物理的な配線と工作は完了だ。Raspberry Piに有線LANケーブルと電源(microUSBケーブル)をつないで起動し、Windows PCのTera TermからRaspberry Piにログインしよう(詳細は本連載の第1回2ページ目を参照)

Tera Termのコンソール画面で「sudo i2cdetect -y 1」を実行すると、Raspberry PiのI2Cインタフェース「0x51」に反応があり、このアドレスにRTC-8564NBが接続されていることが分かる。RTC-8564NBをRaspberry Piで動かすためには、次の7つのコマンドを実行だ。

sudo su
modprobe i2c-dev
modprobe rtc-pcf8563
echo pcf8563 0x51 > /sys/class/i2c-adapter/i2c-1/new_device
hwclock -w
hwclock
exit

エラーが表示されなければ、RTC-8564NBは正しく認識されているはずだ。ちなみに「sudo su」コマンドは、今まで何回か行った「sudo」コマンドをずっと行うための命令だ。「modprobe」コマンドは、引数のモジュールがあるかどうかチェックするもの。

本題は「echo pcf8563 0x51 > /sys/class/i2c-adapter/i2c-1/new_device」で、Raspberry Piに対して「pcf8563というものが0x51にあるよ」と知らせる1行だ。RaspbianはPCF8563というRTC(時計)をサポートしているので、これでRTCはOSが管理してくれる。「hwclock」はRTCを管理するためのコマンドで、オプション「-w」を付けると、現在時刻をRTCに書き込む。

余談だが、「取り付けたのはRTC-8564NBなのに、パラメーターが『8563』じゃないか?」と思ったらスルドイ。Raspbianは同じようなRTCのPCF8563をサポートしており、このドライバはPCF8563とRTC8564の両方を扱えるためだ。

最後に、次回から起動時にRTCの時刻を使うために「sudo nano /etc/rc.local」コマンドを実行し、「rc.local」ファイルを編集する。元ファイルの最終行に「exit 0」という行があるが、その手前に下記の3行を加えよう。「hwclock -s」はRTCの時刻をシステム時刻として設定する。これで、Raspberry Piの電源を切ってネットワークから切断されていても、正しい時刻に設定可能だ。

echo pcf8563 0x51 > /sys/class/i2c-adapter/i2c-1/new_device
sleep 1
hwclock -s

「i2cdetect」で確認すると、「0x51」という新しいデバイスが見えた。RTC-8564NBが正しく取り付けられていることが分かる

最後の「hwclock」までエラーが出なければ問題ない。この状態で「i2cdetect」をすると「0x51」の表示が「UU」に変わる。Raspbian自身がこのアドレスを管理しているという意味だ

「/etc/rc.local」ファイルは起動時に実行される。先に入力したコマンドを、毎回の起動時に自動実行するように設定