【Raspberry Pi】はじめてのI2C設定

はじめに
この記事では、Raspberry PiでI2C通信を使うための設定のやり方を解説していく。
I2Cとは?
I2Cとは「Inter-Integrated Circuit」の略で、フィリップス社が開発した組み込みシステムなどで使われるデータ規格である。ラズパイ周辺のセンサモジュールなどは、このI2CかSPIでデータのやりとりするものが多い。
I2Cに使う信号線の数は2本で、シリアルクロック(SCL)とシリアルデータ(SDA)で通信を実現する。一方で、SPIに使う信号線の数は4本となる。それぞれシリアルクロック(SCLK)、チップ・セレクト(CS)、マスタ出力/スレーブ入力(MOSI)、マスタ入力/スレーブ出力(MISO)でSPI通信を実現していく。
初心者の方なら、SPI通信よりもI2C通信から始める方が簡単だと思う。
Raspberry PiでI2C通信を使えるように設定
Raspberry
PiでI2C通信を使えるように、i2c-tools
ライブラリをインストールしよう。次のコマンドでインストールする。
$ sudo apt-get update
$ sudo apt-get install i2c-tools
インストールが終わったら$ sudo raspi-config
で設定画面を開き、I2C通信を有効にする。
- 設定画面の
5.Interfacing Option
へ進む P5 I2C
へ進みYes
を選択する

以上でI2C通信が使えるようになった。
PythonでI2Cを使えるようにする
PythonプログラムでもI2C通信を使いたい場合、python-smbus
ライブラリをインストールしておこう。このライブラリはPython2とPython3で別れているので、次のようにどちらでも使えるようにインストールしておくと便利。
$ sudo apt-get install python-smbus
$ sudo apt-get install python3-smbus
I2Cデバイスが認識されているか確認
それではI2CデバイスをRaspberry
Piと接続して、I2Cデバイスが認識されるか確認してみよう。Raspberry
PiとI2Cデバイスを配線するには注意が必要だ。なぜなら、Raspberry
PiではI2C通信に使うSCL(GPIO3)
とSDA(GPIO2)
がすでに割り当てられているからだ。

I2CデバイスをRaspberry
Piに繋いだところで、$ sudo i2cdetect -y 1
を実行するとI2Cデバイスのアドレスが表示される。ここでは68のアドレスが割り当てられたが、接続するI2Cモジュールによってアドレスは異なる。もしアドレスが表示されない場合は、Raspberry
Piを再起動してみよう。
$ 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: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
関連記事
- 【XYペンプロッター制作①】CNCシールドでステッピングモータを動かすまで
- ArduinoでLCDに文字表示
- DS18B20の使い方|Arduino・ESP32・Raspberry Pi
- ESP-IDFでESP32の開発をはじめよう!
- Raspberry PiでSPI通信できるようにする設定【ADコンバータMAX1118】