I2C通信とは
シリアル通信の一種で、Raspberri Piが一つの信号線上に定期的なパルス信号を流し、それと同期する形でデータをやり取りする通信方式です。
下請けとなった子会社は、それぞれ固有のアドレスを持っており、そのアドレスを通じてどこの子会社への指示なのか、どこの子会社からの情報なのかを判断しているのです。
詳しくはこちらのページを参照して下さい。
I2C通信を使うには、まずラズパイ本体の設定で、I2CをONにしなければなりません。
設定>Raspberry Pi の設定>インターフェイスのところに、I2C:というオプションスイッチがあるので、そこをONにします。
I2Cの接続
I2C通信で使うピンは、3番ピン(SDA)と5番ピン(SCL)です。私はどのピンが何だっけ?とすぐなるので、そんな時はこちらを参照しています。
使われているI2Cアドレスの番号を見たい時は、コンソールから次のコマンドで見る事ができます。
i2cdetect -y 1
コマンドを実行すると次のようになります。
まだ何もつながれていないので、全て- -です。
アドレスは16進数で、08から77まであります。
でもこれをラズパイ側から、あなた何番ねと指定してあげることは出来ないのです。番号を教えるためには通信しなければ教えられない。でも番号が無いと通信できない・・・。つまり、アドレスは機器ごとに最初から決まっているのです。
PCA9685の接続
では、子会社筆頭のPCA9685をつないでみたいと思います。
PCA9685のマニュアルはこちら
つなぐために必要なのは、PCA9685への電源供給のためのvcc(3v-5v),GNDと通信ラインとしてSDA,SCLの4本です。SDAはSDAと、SCLはSCLとつなぎます。
念の為にRaspberry Piの電源を一旦切って接続し、電源を入れます。
電源を入れると、おっしゃ〜働くぞ〜と言わんばかりにLEDが点灯しました。
先ほどのコマンドで、I2Cのアドレス使用状況を確認。
PCA9685はアドレス40と70を使うようです。
いや〜自分の足跡を辿るのも楽しいもんですね。そしてこの記事が誰かの役に立ったら、もっと楽しいと思います。良い週末でした。
次回は、PWM制御でサーボモーターを動かしてみようかと思います。
コメント