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

【Raspberry Pi】はじめてのI2C設定
【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ライブラリをインストールしよう。次のコマンドでインストールする。

shell
$ sudo apt-get update
$ sudo apt-get install i2c-tools

インストールが終わったら$ sudo raspi-config で設定画面を開き、I2C通信を有効にする。

  1. 設定画面の 5.Interfacing Option へ進む
  2. P5 I2C へ進み Yes を選択する

Raspberry PiでI2C通信を有効にする
Raspberry PiでI2C通信を有効にする

以上でI2C通信が使えるようになった。

PythonでI2Cを使えるようにする

PythonプログラムでもI2C通信を使いたい場合、python-smbusライブラリをインストールしておこう。このライブラリはPython2とPython3で別れているので、次のようにどちらでも使えるようにインストールしておくと便利。

shell
$ 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)がすでに割り当てられているからだ。

ラズパイGPIO役割図
ラズパイGPIO役割図

I2CデバイスをRaspberry Piに繋いだところで、$ sudo i2cdetect -y 1を実行するとI2Cデバイスのアドレスが表示される。ここでは68のアドレスが割り当てられたが、接続するI2Cモジュールによってアドレスは異なる。もしアドレスが表示されない場合は、Raspberry Piを再起動してみよう。

shell
$ 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: -- -- -- -- -- -- -- --      

I2C通信のADコンバータMCP3425を使った記事も参考に

関連記事

最後までご覧いただきありがとうございます!

▼ 記事に関するご質問やお仕事のご相談は以下よりお願いいたします。
お問い合わせフォーム

人気のArduino互換機
Arduinoで人気の周辺パーツ
あると便利な道具
Arduinoのオススメ参考書

▼ Arduino初心者向きの内容です。ほかのArduino書籍と比べて図や説明がとてもていねいで読みやすいです。Arduinoで一通りのセンサーが扱えるようになります。

▼ 外国人が書いた本を翻訳したものです。この手の書籍は、目からうろこな発見をすることが多いです。

▼ Arduinoの入門書を既に読んでいる方で、次のステップを目指したい人向きの本です。C言語のプログラミングの内容が中心です。ESP32だけでなく、ふつうのArduinoにも役立つ内容でした。

関連記事