秋月電子通商のリアルタイムクロック(RTC)モジュール「RTC-8564NB」を購入して、Raspberry PIにI2Cインタフェースを使って接続しました。
Raspberry PIとリアルタイムクロックモジュールとの接続図を次に示します。2ピンのクロック出力端子と3ピンのアラームと定周期タイマ割り込みの割り込み信号にLEDを接続し、表示で確認できるようにしました。
Raspbian OSのバージョンを示します。
# uname -a Linux raspberrypi 3.18.0-trunk-rpi #1 PREEMPT Debian 3.18.5-1~exp1+rpi16 (2015-03-28) armv6l GNU/Linux
最新のRaspbian OSは、RTC-8564NBをサポートしているため、カスタムカーネルをビルドする必要はありません。
初期の状態では、I2C通信がOFFになっているので、次のコマンドでI2Cを有効にします。コマンドを入力すると選択画面が表示されるので、表示に従って選択していきます。
sudo raspi-config
なお、2014年までの Raspbian では、/etc/modprobe.d/raspi-blacklist.conf を使って I2Cの有効/無効 を切り替えるようになっていましたが、2015-01-31 リリースからは、より汎用的な Device Tree という仕組みが導入されたのに伴い、I2C のペリフェラル機能の有効化方法が変わり、raspi-blacklist.confへの設定はなくなりました。
その後、再起動します。
# sudo reboot
/etc/modulesに次のデータを設定し、I2Cが使用できるように設定します。
i2c-bcm2708 i2c-dev rtc-pcf8563
次のコマンドで、i2c-toolsをインストールします。
# sudo apt-get install i2c-tools
その後、再起動します。
# sudo reboot
リアルタイムクロック(RTC)モジュールが動作しているか次のコマンドで確認します。
# sudo i2cdetect -y 1
RTCモジュールが動作していれば次の表示があり、0x51が表示されます。
# sudo 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: -- 51 -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
RTC-8564NBをRaspberry Piで動かすためには、次のコマンドを実行します。
# sudo su # modprobe i2c-dev # modprobe rtc-pcf8563 # echo pcf8563 0x51>/sys/class/i2c-adapter/i2c-1/new_device # hwclock -w # hwclock # exit
私の環境では、デバイスドライバ「rtc-pcf8563」を組み込もうとしたときに、次のように「FATAL: Module rtc-pcf8563 not found」が表示されます。どうもRTC-8564NB用のデバイスドライバが入っていないようです。
# modprobe rtc-pcf8563 FATAL: Module rtc-pcf8563 not found.