Raspberry PiとArduinoをI2C経由でつなぐ
- 2017/12/13
- 01:13
Raspberry PiとArduinoをI2C経由でつなぐ
こんにちはRoboTakaoです。ようこそ「極力ローコスト ロボット製作 ブログ」にお越しくださいました。
前回まででpythonを使ってGPIOをコントロールしてみたわけですが、本当はRaspberry PiとArduinoをI2Cでつなぎたいがpythonでつないでるケースが多いので勉強しようと思ったのが狙いでした。
ようやくなんとなくpythonもわかってきたのでそろそろRaspberry PiとArduinoをI2Cでつないでみたいと思います。

ArduinoとArduino間をI2Cでつなぐことは以前やっていました。
以前の記事はこちらを参照してください。
設定
まずは事前の設定です。
Raspberry Piの設定のインターフェースでI2Cを有効にします。

次のファイルをnanoで開いてみます。
sudo nano /etc/modprobe.d/raspi-blacklist.conf
もし、blacklist i2c-bmc2708という行があったら#を入れてコメントアウトします。
私の環境ではこの行がなかったのでそのままです。

次にこのファイルをnanoで開いてみます。
sudo nano /etc/modles
i2c-dev という行を最後の行に書き加えます。
これも私の環境ではすでに入っていたので変更不要でした。

次にi2c-toolsをインストールします。
sudo apt-get install i2c-tools libi2c0dev

インストールが完了したらリブートします。

ついでにpythonで使うためにpython-smbusをインストールします。
sudo apt-get install i2c-tools python–sambas

私の環境だとすでに入っているとメッセージが出ました。
Arduino側
ここでArduino側にとりあえず動作確認のためにAruino IDEに入っているサンプルコードのslaveを入れておきます。

結線図
Raspberry PiのSDAとArduinoのSDAを接続
Raspberry PiのSCLとArduinoのSCLを接続

動作確認
この状態でRaspberry Pi側でターミナルから以下のコマンドを打ち込みます
sudo i2cdetect –y 1
するとマトリクスのようなものが現れて、もしi2cデバイスが接続されていれば、そのNoが表示されます。

今回の場合、Arduino側のアドレスは8番だったので上の図のようになります。
接続がうまくできていることが確認できました。
ためにしRaspberry PiからArduinoにデータを要求してみましょう。
sudo i2cget –y 1 0x08
0x68 という情報が帰ってきました。

実はArduino側はhelloと送っていたのですが、最初のhのユニコードの68だけ受信できたようです。
まあとりあえず接続はできていることがわかります。
今回はここまでにしておきます。次回は実際にRaspberry Pi側からArduinoをI2C経由でコントロールしてみましょう。
それでは今回はこの辺で失礼します!ありがとうございました。
スポンサードリンク