Raspberry PiクックブックにあるArduino連携の説明は勉強になる

「Raspberry Piクックブック」という書籍があるのですが、この本にあるArduino連携の説明は勉強になります。

他にも、ハードウェアの制御、ディスプレイの章が非常に参考になりました。他の書籍とはちょっと違った内容なのが嬉しいですね。部品が日本では入手しにくいものも多いのですが、翻訳の注意書きでしっかりフォローされているので、大丈夫そうです。

I2CでArduino Unoと接続するには
I2CでRaspberry Piと5V動作させているArduino Unoとの接続はどうすればいいか調べていたのですが、ずばり回答が掲載されていました。I2Cでは、SDA、SCLにプルアップ抵抗をつけて電源と接続させて使います。通信は、この電源電圧で動作するということなので、Raspberry PiとArduino Unoの場合は直接つなげても大丈夫だということです。Raspberry PiはI2Cが内部プルアップ抵抗で3.3Vの電源につながっているため、3.3Vで動作します。また、3.3VをArduino側はHIGHと判定するので動作するようです。

内部プルアップ抵抗の問題
念のため「Arduino Playground – I2CBi-directionalLevelShifter」も読んでみました。同じようなことが書いてあって、大丈夫そうです。ただ、ArduinoでWire.begin()を呼び出すとArduinoの内部プルアップ抵抗が有効になってI2Cバスが3.3Vよりも少し電圧が高くなるとも書いてあります。4.7kΩの抵抗でプルアップしてあれば大丈夫だということのようですが、Raspberry Piの内部プルアップ抵抗は1.8kΩだったはずなので、値がちがうところが気になります(ちなみに、Arduinoの内部プルアップ抵抗は、チップによって20kΩから50kΩとなるらしいので、4.7kΩで大丈夫なら、1.8kΩでも大丈夫な気がしますが、正確なところはよくわかりません)。

I2Cバス用双方向電圧レベル変換モジュール
一応、直接つなげても大丈夫そうですが、本当に大丈夫かというと心配な気もしてきます。目に見えないところは、壊れてから気がつくということになりやすいので、目に見える回路で対応をしてしまった方が安心と言えば安心かもしれません。ということで、心配な場合は、間に下記のようなI2Cバス用双方向電圧レベル変換モジュールを入れた方が良さそうです。

UARTを使うときも電圧レベル変換は必要
ちなみに、UARTを使うときも電圧レベル変換は必要で、「Raspberry Piクックブック」では抵抗を使って分圧をする方法が紹介されています。もちろん、これについても電圧レベル変換モジュールを使う方法があり、それも紹介されています。このあたり、回路故障に直結しそうなところなので、どうしても神経質になるところですね。分圧をする方法がシンプルで良さそうなのですが、紹介されている資料は少ないように思います。安定性や通信速度などで問題がでたりするのかもしれません。電子回路は奥が深いですからね。

でも、こうやって色々調べてみるのと、面白いですねぇ。

Raspberry Pi, Arduinoに興味のある方はこちらもどうぞ。

同じタグの記事: Arduino
同じタグの記事: Raspberry Pi
同じカテゴリの記事: Book
関連書籍: Arduino