I2C/SPIの仕組み、Raspberry Pi(ラズパイ)で有効化する方法を解説しています。I2C/SPI対応のセンサーやディスプレイ、ADコンバーターなどを利用することで、Raspberry Piの可能性がさらに広がります。Raspberry Pi OSインストール後は無効になっているので、こちらを参考に有効化して下さい。
更新日 : 2025年10月4日I2C/SPIとは
I2C、SPIはいずれも、Raspberry Piと各種IC(センサーなど)との間で通信するための規格の一種です。
以下は、センサーをI2CもしくはSPIで接続した場合の動作イメージです。Raspberry Piからは測定などの動作指示を出し、センサーが測定データを送信する、といった具合です。複数のICを接続することも可能です。

Raspberry Pi OSをインストール後はI2C/SPIともに無効になっています。I2C対応のICを使用するにはI2Cを有効に、SPI対応のICを使用するにはSPIを有効にする必要があります。

I2C/SPIの有効化
有効化する手順を説明します。OSバージョンによって画面が異なるので、それぞれ解説しています。2025年10月以降にOSを新規インストールした方は最新版OS Trixie、それ以前の場合は旧版OS Bookwormを参照してください。
最新版OS Trixie
スタートメニューから、「設定 -> Control Centre」をクリックします。

設定ツールが起動するので、左タブから「インターフェイス」を選択し、I2CとSPIから有効にしたいもののスイッチをクリックしてONにします。

「Close]をクリックして完了です。
これでI2C/SPIを使う準備が整いました。設定ツールが用意されているので、非常に簡単ですね!
旧版OS Bookworm
スタートメニューから、「設定 -> Raspberry Piの設定」をクリックします。

設定ツールが起動するので、上部タブから「インターフェイス」を選択し、I2CとSPIから有効にしたいもののスイッチをクリックしてONにします。

「OK]をクリックして完了です。
これでI2C/SPIを使う準備が整いました。設定ツールが用意されているので、非常に簡単ですね!
物理的な接続(I2C)
I2Cでは、SDA(GPIO2)とSCL(GPIO3)の2つの信号線がセンサーと物理的に接続され、通信を行います。

具体的には40ピンヘッダーの3番と4番のピンが使用されます。ピン番号とGPIOの対応については以下の図を参照してください。

出典 : Raspberry Pi GPIO
それぞれのICは独自の「アドレス」を持っていて、Raspberry Piはアドレスを指定することで特定のICと通信しています。そのため、同じ信号線に複数のICを接続しても、個別に制御することが可能です。逆に、偶然アドレスが重なった2つのICを接続したり、同一のICを2つ接続することはできません。なお、ICによってはアドレスの衝突を避けるためにアドレスを切り替えられるものもあります。
I2Cはわずか2本の信号線で通信できる点がメリットで、センサーなどのICでは広く使われています。
物理的な接続(SPI)
SPIでは、SCLK(GPIO11)、MOSI(GPIO10)、MISO(GPIO9)の3つの信号線がセンサーと物理的に接続され、通信を行います。また、I2Cのようなアドレスは無く、通信先ICを指定するためのCE信号がICにつき1つ必要です。以下の図は2つのICを制御するため、CE0(GPIO8)、CE1(GPIO9)を使っています。

具体的なピン番号とGPIOの対応については上記I2Cの図を参照してください。
SPIではCE信号を使って通信相手を選択します。複数のICを接続する場合はCE信号が重ならないようにする必要があります。また、制御プログラムについても、使用したCE信号に合わせる必要があります。
I2Cで接続されているデバイスの確認
最後に、I2C接続がうまくできているかの確認や、アドレスの確認に便利な方法を紹介します。普通にI2Cを使う場合はこの手順は必要ありません。
ターミナルを開いて、以下の$に続くコマンドを実行します。
$ i2cdetect -y 1すると、全てのアドレスについてI2Cで接続されたデバイスをスキャンして、結果を表示します。以下の例ではアドレス0x39、0x76、0x77に接続された3つのデバイスを検出しました。なお、アドレスはデバイスによって異なります。

この方法で、I2Cの接続がうまくできているかと、デバイスのアドレスが分かります。
ただし、一部のデバイスは応答を返さないものもあり、そういった場合はこの方法では検出できません。
まとめ
I2C/SPIの仕組み、Raspberry Pi(ラズパイ)で有効化する方法の解説は以上です。I2C/SPI対応のセンサーやディスプレイ、ADコンバーターなど様々なデバイスを利用することで、Raspberry Piの可能性がさらに広がります。
温度、湿度、気圧、明るさ、二酸化炭素センサーなどをI2Cで制御するIndoor Corgi製の拡張基板もあるので、ぜひご利用下さい。
次のステップとして、VNCを利用してPCからRaspberry Piにリモート接続する手順を解説しています。

定期撮影ラズパイカメラをモバイルバッテリーで長期運用 (RPZ-PowerMGR)
Raspberry Pi(ラズパイ)と純正カメラを使用して、定期的に撮影するタイムラプス機能を実装する方法を解説します。RPZ-PowerMGR拡張基板を使うことで、指定時刻に起動し、撮影後は自動的にシャットダウン&電源OFFします。待機時の消費電力をカットすることで、モバイルバッテリーで長期運用が可能になります。

静音モードでステッピングモーターの動作音を抑える (Raspberry Pi + RPZ-Stepper)
ステップ角単位で回転するという仕組み上、ステッピングモーターは振動や音が大きくなりやすい特徴があります。RPZ-Stepperは静音モードを搭載しており、振動と音を低減できます。モーターや回転数にもよりますが、動いているのかほとんどわからないレベルまで振動や音を減らすことも可能です。静かな環境で動作させるアプリケーションを実現できます。

Raspberry Pi用ユニバーサル基板「RPi-UniBread」
簡単に目的の回路を作成できるように工夫された、Raspberry Pi用ユニバーサル基板です。ブレッドボード型の配線パターンを用意したことで裏面で部品を配線する手間を削減できます。DIPパッケージやブレイクアウトボードも利用しやすいように考慮しています。ラズパイに装着して動作する拡張基板を自作することができます。