ブレッドボードとジャンパ線で実験用の回路をこさえるのはお手軽で良いです。ただ時折、思わぬところで足をすくわれます。今回はラズパイ3のI2C信号を5V化した先に5V電源のIO Expanderを取り付けようとしてハマりましたです。「ちょろい」などと不埒なことを考えて手を抜いたバチがあたりました。
※「やっつけな日常」投稿順 indexはこちら
今回作ろうとした実験回路は冒頭のアイキャッチ画像のものであります。回路図だけみると「それなり」に見えるかもしれませんが、実は既にある3つの小ボードをジャンパ線で「空中配線」すれば出来上がり、という不埒な目論見です。ブレッドボードすら使いませぬ。接続するボードは以下の3枚です。
-
- Raspberry Pi 3 model B+
- SparkFun Level Translator Breakout – PCA9306
- お手製のMCP23017搭載、実験ボード
Raspberry Pi 3 model B+ はちょっと手が届きずらい奥の方に鎮座しているので、そのI2Cバス(3.3V IO電圧です)を引き出し、PCA9306ボードに突っ込んで5V IO化してやろう、と。そして5V化した信号をケーブルで「ちょっと引っ張って」手元のMCP23017 I2C IO Expander(電源に5V与える)に接続すれば、合計16本の5VレベルのIO信号が取り出せるという目論見。
しかしPCA9306ボードの接続はこんな感じ。ジャンパ線で空中に浮かんでます。
手元のIO Expanderbオードの方はまだましでしょうか。こんな感じ。
接続したけれども動かない
結局接続するのは、GND、3.3V電源、5V電源(ラズパイ側とIO Expander側で異なる)、SCL、SDA(どちらも3.3V側、5V側あり)です。大した本数ではありません。接続し、GPIOとして動作させてみました。テスタで電圧測ります。
OKだね。5Vの信号来てます。
などと思ったのが大間違いでしたね。2本あるうちの1本の信号線が動いていたので、OKと思ったのですが、もう一本を見るのをサボりました。後から考えるとこれがまずかったです。
ラズパイ上で i2cdetect コマンドを実行しても、いっこうにMCP23017が見つかりません。なぜ?MCP23017はSCANに反応する筈なのに。
結局、どこが悪いのか信号線を端から確かめていく羽目に陥りました。結局「ラズパイのピンヘッダに差し込んだピンソケットの1本が浮いていた」ことが分かりました。配線が接続されていなければ動かないデス。
最近「差し込めば」動く感じでついついチェックを飛ばしました。反省。
動作確認
配線を接続(といって少し力をいれて奥まで押し込んだだけですが)後、I2C波形を観察したもんが以下に。縦方向1目盛りは2Vです。黄色SCL、青色SDAです。5VのI2Cになってますな。
i2cdetect -l の結果が以下に。
そして i2cdetect -y 1 の結果が以下に。ちゃんとMCP23017がアドレス0x20に見つかってます(A0=A1=A2=0と回路で設定。)
接続するところで、予想外にトラぶったので、ソフトを書く気力がありません。ソフトを書くのはまた今度にいたしとうございます。根性無だな、自分。