Raspberry PiでI2Cの設定と使い方

I2Cの簡単な仕組み、Raspberry Pi(ラズパイ)で有効化と実際にI2Cデバイスを検出する手順の解説しています。I2C対応のセンサーやディスプレイ、ADコンバーターなどを利用することで、Raspberry Piの可能性がさらに広がります。Raspberry Pi OS (Raspbian)インストール後は無効になっているので、こちらを参考に有効化して下さい。

Raspberry Pi OS Version 2021-10-30対応

更新日 : 2021年11月23日

I2Cとは

I2Cとは、Raspberry PiとセンサーなどのICとの間で通信するための規格のことです。

以下は、温度センサーと気圧センサーをI2Cで接続した例です。Raspberry Piからは測定の指示を出し、センサーが温度と気圧データを送信する、といった具合です。それぞれのセンサーは独自の「アドレス」を持っているため、1組のI2C信号線に複数のデバイスを接続して、個別に制御することが可能です。

I2Cを使ったセンサーとの通信例

実際の接続ですが、Raspberry PiのGPIO端子にI2C用のピンが用意されており(以下の図の3番ピンSDAと5番ピンSCLを使用)、そこにセンサーなどを接続する形になります。

GPIOピン配置
出典 : Raspberry Pi GPIO

わずか2本の信号線で複数のデバイスと通信できる点がメリットで、高速な通信が必要ないセンサーなどのICでは広く使われています。

しかし、Raspberry Pi OS (Raspbian)をインストール後はI2Cが無効になっているので、I2Cを有効にする必要があります。

I2C接続の温湿度/気圧センサーBME280と、明るさセンサーTSL2572を搭載する拡張基板「RPZ-IR-Sensor」

I2Cの有効化

Raspberry Pi OS (Raspbian)において、I2Cインターフェースは、インストール後は無効になっているので、有効化しておく必要があります。

スタートメニューから、「設定 -> Raspberry Piの設定」をクリックします。

設定ツールが起動するので、上部タブから「インターフェイス」を選択し、I2Cの項目を「有効」にチェックします。

「OK]をクリックして完了です。

これでI2Cを使う準備が整いました。設定ツールが用意されているので、非常に簡単ですね!

I2Cで接続されているデバイスの確認

接続がうまくできているかの確認や、アドレスの確認に便利な方法を紹介します。普通にI2Cを使う場合はこの手順は必要ありません。

ターミナルを開いて、以下の$に続くコマンドを実行します。

$ i2cdetect -y 1

すると、全てのアドレスについてI2Cで接続されたデバイスをスキャンして、結果を表示します。以下の例ではアドレス0x39、0x76、0x77に接続された3つのデバイスを検出しました。なお、アドレスはデバイスによって異なります。

i2cdetectで検出

この方法で、I2Cの接続がうまくできているかと、デバイスのアドレスが分かります。

ただし、一部のデバイスはRaspberry Piからの入力のみで、応答を返さないものもあり、そういった場合はこの方法では検出できません。

まとめ

I2Cの簡単な仕組み、Raspberry Piで有効化と実際にI2Cデバイスを検出する手順の解説は以上です。I2C対応のセンサーやディスプレイ、ADコンバーターなど様々なデバイスを利用することで、Raspberry Piの可能性がさらに広がります。

温度、湿度、気圧、明るさ、二酸化炭素センサーなどをI2Cで制御するIndoor Corgi製の拡張基板もあるので、ぜひご利用下さい。

次のステップとして、VNCを利用してPCからRaspberry Piにリモート接続する手順を解説しています。

TSL2572センサーとRaspberry Piで明るさ(照度)を測定する

Indoor Corgiのセンサー制御ソフトウェア「cgsensor」を利用して、TSL2572センサーで明るさを測定する方法を解説します。コマンドラインツールを使って1行もコードを書かずに測定ができるほか、Pythonパッケージを使えばご自身のプログラムから簡単にセンサーを制御できます。

SCD41 CO2センサーとRaspberry Piで二酸化炭素濃度を測定する

Indoor Corgiのセンサー制御ソフトウェア「cgsensor」を利用して、SCD41 CO2センサーで二酸化炭素濃度を測定したり、センサーの校正や設定を変更する方法を解説します。コマンドラインツールを使って1行もコードを書かずに測定や記録ができるほか、Pythonパッケージを使えばご自身のプログラムから簡単にセンサーを制御できます。

定期撮影Raspberry Piカメラをモバイルバッテリーで長期運用 (RPZ-PowerMGR)

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