Raspberry Pi と Arduino をシリアル通信でつなぐ (のつづき)

QR234

QR234

Raspberry Pi は 3.3V 駆動。多くの Arduino は 5V駆動。

おまけに Raspberry Pi は過電圧耐性がありません。なので、入出力ピンに 3.3V以上の電圧をかけると壊れてしまうと考えることになります。正確に何点何ボルトまでが限界なのかは、データシートを読まないといけない(すいません、読んでないです)のですが、とにかく5.0Vに耐えられないのは確かです。

なお、こういう文脈で「耐えられない」といったことをやってしまっても、実際には動いてしまうことがありますが、こういう文脈での「耐えられない」とは、「何が起きてもあなたのせいよ」という意味です。ただちに火を噴くかもしないし、うんともすんとも言わなくなるだけかもしれないし、全然予期しない動作をするかもしれないし、一時的にせよ正常に動いちゃうかもしれない、ってことです。とにかく、定格を越えたことはやってはいけないのです。

というわけで、両者をつなぐには電圧を変換するコンバータが必要で、そうしない限り(すなわち直結は)ダメだよ、というのが、オリジナルの投稿でのやりとりでした。

なので、電圧を変換すればよいのですが、業務用機器(究極的には軍用機器)を作るのか、アマチュアのお楽しみでよいのかで、対応がまるで違ってきます。

ここでは、アマチュアのお楽しみで良い場合の対応を書きます。

今回の場合は、両者をつなぐ線は、GND線以外は、TxD と RxD しかなく、それぞれに流れる信号は単方向です。なので対応は実は意外に簡単です。

まず 3.3V系(RPi)から 5V系(Arduino)に向かう線は、多分何もしなくても大丈夫です。3.3V系の H レベルはほぼ 3.3V 出ると予想されます。これだけの電圧があれば、5V系でも H と認識されます。

逆方向の 5V系から 3.3V系に向かう線には一工夫必要です。速度がそれほど問題にならないので、抵抗2本で分圧してしまうのが簡単そうです。

というわけで、T君には、抵抗2本使って試してもらって、その結果を報告してもらいたいと思います。

抵抗2本?どうつなぐの?何Ω、なんて言ってるようじゃいけません。SparkFun のサイトにゆけばたくさんの回路図がロハで手に入ります。毎日少しずつでもこれらの回路図を読むととても勉強になりますよ。>> T君