Raspberry Pi の I2C を有効化する方法 (2015年版)

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 を読むこともお勧めします.

参考