Raspberry Pi が扱える低レベル周辺機器の一つに I2C があります. I2C バスに温度センサなどを接続すると比較的簡単にデータを取得できます. しかし, 標準の Raspbian では I2C が無効化されているため, これを有効化するためにいくつかの手順が必要になります.
2015 年にリリースされた Linux 3.18.x のカーネルから Device Tree という仕組みがデフォルトで導入され, 以前紹介した記事の内容では I2C を有効化できなくなってしまいました.
Raspbian とファームウェアのアップデート
Raspbian と Raspberry Pi のファームウェアを最新版にアップデートし, ファームウェアの更新を適用するため再起動しておきます.
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo rpi-update
sudo reboot
方法1: raspi-config
最も手軽な設定方法として, raspi-config を用いる方法があります. 以下のコマンドを実行して raspi-config を起動します.
sudo raspi-config
“8 Advenced Options” -> “A7 I2C” の順にメニューを選択して, I2C をデフォルトで利用できるように設定します. 設定終了後, 再起動を促されるので再起動します.
方法2: 設定ファイルの手動修正
/boot/config.txt の末尾に以下の内容を追記します.
dtparam=i2c_arm=on
起動時にカーネルモジュールを自動的に読み込むために, 以下のように /etc/modules に i2c-dev を追加します. この手順は以前の方法と同じです.
# /etc/modules: kernel modules to load at boot time. # # This file contains the names of kernel modules that should be loaded # at boot time, one per line. Lines beginning with "#" are ignored. # Parameters can be specified after the module name. snd-bcm2835 i2c-dev
設定が終了したら, Raspberry Pi を再起動します.
テスト
再起動した後, lsmod を実行してカーネルモジュールがロードされていることを確認します.
$ lsmod Module Size Used by binfmt_misc 7161 1 i2c_bcm2708 6200 0 uio_pdrv_genirq 3666 0 uio 9897 1 uio_pdrv_genirq i2c_dev 6709 0 snd_bcm2835 21342 0 snd_pcm 93100 1 snd_bcm2835 snd_timer 23007 1 snd_pcm snd 67211 3 snd_bcm2835,snd_timer,snd_pcm fuse 92121 1 ipv6 351566 16
これで, Raspberry Pi で I2C バスを利用するための準備が整いました. i2cdetect を使って, 現在 I2C バスに接続されているデバイスの情報を出力できます.
以下は, Raspberry Pi Model B Rev. 2 で 2つの I2C デバイスを接続したときの例です.
$ sudo apt-get install i2c-tools $ 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: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- 5d -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
その他
先日発売された Raspberry Pi 2 Model B でも基本的な手順は同じなようです. 何か問題が発生した場合は以下の参考の資料も当たってみてください.
Device Tree については, Raspbian 内の /boot/overlays/README を読むこともお勧めします.