脳汁portal

アメリカ在住(だった)新米エンジニアがその日学んだIT知識を書き綴るブログ

Raspberry PiとArduinoをGPIOでシリアル接続する場合は電圧に注意(3.3V/5V)

Raspberry PiArduinoをシリアル接続する際は単純につなぐとそれぞれ電圧が違うので壊れてしまう可能性がある(主にラズパイの方が)

入出力電圧

Raspberry PI

  • 入力電圧
    • 0~0.8V : LOW(OFF)として判断
    • 0.8~1.3V : 不定(不安定でどっちになるかわからない)
    • 1.3~3.3V: HIGH(ON)として判断
  • 出力電圧
    • ON : 3.3V出力
    • Off : GND(出力)

Arduino

  • 入力電圧
    • 0~2.5V : LOW(OFF)として判断
    • 2.5~5.0V: HIGH(ON)として判断
  • 出力電圧
    • ON : 5.0V出力
    • Off : 0V

接続時の問題

RaspberryPi(TX) => Arduino(RX)
ラズベリーパイの出力電圧は3.3Vですが、Arduinoは入力電圧として2.5~5.0Vに対応しているのでそのまま送ってしまって問題ありません

Arduino(TX) => RaspberryPi(RX)
問題なのはこちらです
ラズベリーパイの入力電圧は上記の通り0V~3.3Vですが、arduinoの出力電圧は5Vでこの範囲を超えてしまっています
このまま何もせず接続すると過電圧で最悪ラズパイが壊れてしまいます

解決方法

電圧を下げる

具体的に電圧を下げる方法はいくつもありますが、抵抗分割するのがブレッドボード上などでは一番てっとり早いです
f:id:portaltan:20171226134538p:plainf:id:portaltan:20171226134752p:plain
分圧回路 - Wikipedia