はじめに
RaspberryPi(ラズパイ)で「I2C通信を有効化」する方法と、確認に便利な「i2c-tools」の使い方について解説します。
RaspberryPi OS (Bullseyes)では、インストールした状態で「I2C通信」が無効化されているため、I2C通信のプログラムを作る際は「有効化」が必要です。
また、有効後、デバイスのI2Cアドレスを確認したり、配線確認を行うには、デフォルトで使える「i2c-tools」が便利です。コマンド1つで、デバイスのI2Cアドレス(スレーブアドレス)が表示できます。
今回は上記「I2C通信の有効化方法」と「i2c-toolの使い方」について解説します。
環境
今回の記事は以下の環境で作成しています。
環境 | バージョンなど | 備考 |
RaspberryPi | 2 Model B | RaspberryPi 2/3/4 Zero各種でも使えます |
OS | RaspberryPi OS (bullseye) | 32bit版です |
RaspberryPi 4 (8GBモデル)
スイッチやLEDをつなげて使うなら、価格が下がった「RaspberryPi4」がおすすめです。

I2C通信の有効化方法
RaspberryPiのデスクトップ「左上のアイコン」から有効化を行います。手順は以下の通りです。
① RaspberryPiのデスクトップ左上の「RaspberryPiのアイコン」をクリックします。
②「設定」を選択して「RaspberryPiの設定」をクリックします。
④ 開いた画面の「インターフェイス」タブを選択します。
⑤「I2C」のスイッチをクリックします。〇が右側になれば有効です。
⑥ OKボタンを押して画面を閉じます。
以上で「I2C通信の有効化」は完了です。
「i2c-tools」でI2Cアドレスを確認する
通信を行いたいデバイスを正しく配線してから、RaspberryPiの端末で以下のi2cdetectコマンドを実行します。
i2cdetect -y 1
※ 引数の内容は後述します。
i2cdetectコマンドを実行すると、以下のようにデバイスのI2Cアドレス(スレーブアドレス)が16進数で表示されます。
「表示されたアドレス」と「デバイスのアドレス」が一致していれば、デバイスが正しくRaspberryPiに配線されています。
esu@raspberrypi:~ $ 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: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
esu@raspberrypi:~ $
I2Cアドレス(スレーブアドレス)は、基本的にデバイスの取扱説明書・データシートに記載されています。「デバイスのアドレスが分からない」という方はデータシート等を確認してみてください。
コマンドの引数
前述したコマンドの引数の内容は以下のとおりです。「I2Cのバス番号」については、RaspberryPiの3番(SDA)・5番(SCL)ピンを使用している場合、「1」固定で問題ありません。
コマンド | 引数 | 備考 |
i2cdetect | RaspberryPiに接続されているデバイスのアドレスを表示します。 | |
-y | コマンドからの確認メッセージを、すべてYESで答えるオプションです。 | |
1 | I2Cのバス番号「1」を固定で指定します。 |
【参考】yオプションをつけないとどうなる?
ちなみに「-y」を付けないと、以下のように「このプログラムはI2Cバスを混乱させ、データの損失や…続けますか?」というメッセージが表示されます。
おそらく「運用/稼働中のシステム」で誤って実行した場合の想定してのものなので、デバイスとの配線を確認している状況であれば、YesでOKになります。
※ 「-y」オプションは以下の確認を、すべて「Yes」で答えるオプションです。
esu@raspberrypi:~ $ i2cdetect 1
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1.
I will probe address range 0x08-0x77.
Continue? [Y/n] y
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
esu@raspberrypi:~ $
アドレスがうまく表示されない場合
有効化されていない
I2C通信を有効化していない場合、以下のメッセージが表示されます。前述の手順でI2C通信を有効化してください。
esu@raspberrypi:~ $ esu@raspberrypi:~ $ i2cdetect -y 1
Error: Could not open file `/dev/i2c-1' or `/dev/i2c/1': No such file or directory
esu@raspberrypi:~ $
配線抜け・間違い
電源線・通信線が抜けている、SDA/SDLが逆などの場合、以下のようにアドレスが表示されません。配線をもう一度よく確認してみてください。
esu@raspberrypi:~ $ 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: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
まとめ
RaspberryPiでI2C通信を有効化する方法と、I2Cの確認に便利な「i2c-tools」の使い方について解説しました。
デバイスの接続確認は、自分の作ったプログラムからでも確認できますが、プログラムのバグなのか、配線の間違いなのかの切り分けがしずらくなります。
その点、i2c-toolを使えば配線に集中できるので、i2c-toolsを使う方法を、おすすめします。
I2C通信で温度センサを使ってみよう
このブログでは、I2C通信で温度センサ(TMP102)を使う方法についても解説しています。I2C通信の設定ができたら、以下の記事から温度センサにもチャレンジしてみましょう。
おすすめ書籍
MicroPythonのプログラミングガイドブックがついに登場!
「MicroPython」の専門書がついに発売になりました!
この一冊で、MicroPythonの言語仕様から、プログラミングの仕方までが、”ガッツリ”学べます!
別言語を使っている人や、これからマイコンを始める(工学系の)学生を対象としているので「初心者向け」ではありません。しかし、「自前のライブラリの作成」が目標なので、これ一冊で「ガッツリ」とMicroPythonを学びたい人におすすめの内容となっています。
全ての内容はここでは紹介しきれないので、詳細は以下からご覧ください。目次だけでも”ガッツリ”なのが確認できると思います。

質問・要望 大歓迎です
「こんな解説記事作って」「こんなことがしたいけど、〇〇で困ってる」など、コメント欄で教えてください。 質問・要望に、中の人ができる限り対応します。
使えたよ・設定できたよの一言コメントも大歓迎。気軽に足跡を残してみてください。記事を紹介したい方はブログ、SNSにバシバシ貼ってもらってOKです。