Raspberry PiでI2Cの設定と使い方

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

更新日 : 2020年7月13日

I2Cとは

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

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

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

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

GPIOピン配置
出典 : Raspberry Pi GPIO

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

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

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

I2Cの有効化

Raspberry Pi OS (Raspbian)において、I2Cインターフェースは、インストール後は無効になっているので、有効化しておく必要があります。こちらの手順はRaspberry Pi OS Buster 2020-05-28バージョンで確認しています。

スタートメニューから、「設定 -> 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にリモート接続する手順を解説しています。

VNCでRaspberry Piにリモートデスクトップ接続 (Windows/Mac/Linux対応)

VNCを使って、PC (パソコン) からRaspberry Piにリモート接続する手順、およびディスプレイなしでRaspberry Piを起動できるようにする方法について解説しています。PCからリモートでRaspberry Piを操作することができれば、運用の幅が広がって便利になります。

RPZ-IR-Sensor (Raspberry Pi用 温度/湿度/気圧/明るさ/赤外線 ホームIoT拡張ボード)

動作を自由にプログラミング可能な、Raspberry Pi/Zero用ホームIoT拡張ボードです。BME280温湿度気圧センサーとTSL2572明るさセンサー、赤外線送受信機能を搭載。IoT赤外線リモコンとして、温度が上がったらエアコンをオンにする、暗くなったら照明を点灯する、スマホ経由でテレビの操作をする、気温の記録、といった使い方が可能です。

LIRCでRaspberry Piの赤外線制御 (家電、エアコン、照明、テレビなどを制御するホームIoT)

 LIRCを使って赤外線の送受信を行うRPiTPH Monitor及びRPZ-IR-Sensor用の応用例です。 GPIOを直接制御することでも赤外線送受信は可能ですが、 他のタスクが入るとタイミングがずれてうまくいかないケースがあります。LIRCを使うことで安定した通信が可能になります。 CPUリソースが限られているRaspberry Pi ZeroではLIRCを使うことを推奨しております。