ゲームとプログラミングと電子工作と......

2000年生まれのジジイによるゲームとゲームに関するプログラミングや電子工作がメインのブログです。過去記事などはこちら→https://melolololon.hatenablog.com/

RaspberryPi Zero2WでI2C通信を行えるようにする

Zero2WではデフォルトでI2C通信が行えないようになっていたので、使えるようにしていきます。

 

 

I2Cの設定をONにする

I2C通信というものにラズパイを対応させます。

 

まず、真っ黒で文字しかない画面をご覧ください。

 

ここにキーボードで以下の文字列を入力します。

【sudo raspi-config】

 

そして、エンターを押すと以下のような画面が表示されます。

こちらはラズパイのオプション画面となります。

 

操作は以下の通りです。

・矢印キー上下 項目の選択

・矢印キー左右 YesNoなどの選択肢の選択

・Enterキー   決定

 

まずは下キーを入力し、3番のInterface Optionsまで移動し、Enterを押しましょう。

 

 

次に、以下のように項目が変わると思います。

よく見ると、I2C通信という項目がありますね。

同じく下キーを入力し、5番のI2Cを選択しましょう。

 

すると、enabled(有効)にしていいか聞かれるので、Yesが選ばれている状態でEnterを入力します。

 

そうすると、有効にしたとメッセージが出るので、Enterを押して閉じます。

 

Enterを押すと、オプション画面の最初に表示された項目一覧が表示されます。

最後に、左右キーでFinishを選択し、Enterを押せば設定は終了となり、黒い画面へと戻ります。

 

 

I2C通信のツールをインストールする

I2C通信を行うためのツール(ラズパイやLinuxではパッケージと呼ばれる)を導入します。

 

黒い画面で、以下のコマンドを入力します。

【sudo apt install python3-smbus i2c-tools】

ザックリ説明すると、管理者権限でaptというツールを使い、2つのパッケージをインストールするというコマンドです。

 

そして、インストールするパッケージについてですが、python3-smbusはPythonでI2C通信を行えるようにするパッケージです。

i2c-toolsは、I2C通信に対応している機器が接続されているかどうかを確認するためのパッケージです。

 

コマンドを入力したら、Enterを押してください。

途中、Y/Nという表示があったらYと入力してEnterを押下、

Yes/Noという表示があったらYesと入力してEnterを押下してください。

 

インストール中は文字がどんどん描画されていき、インストールが終わると描画が終了します。

インストールが終了したら、以下のコマンドを入力し、Enterを押してください。

【i2cdetect -y 1】

 

そうすると、以下のような画面になります。

こうなれば成功です。ならなければミスがあるのでやり直してください。

 

画像に--が沢山並んでいますが、I2C通信の機器を接続し、ラズパイに認識されると、沢山ある--のどれかが数値に代わります。

この数値はI2Cアドレスと呼ばれるものであり、プログラムで扱う際に使用しますので、機器を1個接続するごとに先ほどのコマンド(i2cdetect -y 1)を入力し、どの機器がどのアドレスか確認するようにしましょう。

 

 

おまけ I2Cアドレスの競合対策

余談ですが、I2C通信を行える機器にはアドレスが被っている機器が存在し、同じアドレスの機器は同時に使用できません。

そのため、以下の対処法が必要となります。

・アドレスを変更する(難易度高)

・I2Cマルチプレクサを使用

・アドレスが被っていない機器を選ぶ

 

以下は秋月の通販で購入できるI2Cマルチプレクサー。

SDAとSCLを繋ぎ、SDnとSCn(nは0~7の番号)をI2C機器のSDAとSCLに繋ぐと同じアドレスの機器を接続できるらしいです。(HDMIでいうHDMIセレクターのようなものらしい)

今度試してみます。akizukidenshi.com

akizukidenshi.com