シリアル通信部分の衝突問題とその解決案

2012-04-24   treby   IDm Snatcher  , , , このエントリーをはてなブックマークに追加

A500(USBホスト機能付きAndroid) – ながてぃ~の。(Arduino) – RC-S620/S(シリアル通信)の三者間連携を実現させるために、いずれ解決しなければならない問題が一つ判明。よくよく考えれば道理なのだが、ながてぃ~の。(Arduino)にはシリアル通信用のポートが一対しか用意されていないのだ。これの意味するところは、A500 – ながてぃ~の。の通信と、ながてぃ~の。 – RC-S620/Sの通信では同じ機能が必要とされており、双方を同時に行おうとすると混線してしまうということである。

機能を正直に実現しようとするとシリアル通信部分が混線してしまう。

実は、開発者ブログの記事にもこんな注意文がある。

Arduino の TX、RX は、USB 経由でプログラムを Arduino に書き込むときの信号線にもなっています。プログラムを書き込むときに Arduino と RC-S620/S がつながっていると信号が混線するので、Arduino の TX、RX には何も接続していない状態でプログラムを書き込まなければなりません。また、RC-S620/S と接続しているときは、Arduino IDE のシリアルモニターも使用できませんので、ご注意ください。

これを字面通りは把握していたが、まさかArduino に書き込むときだけのみならず、プログラム実行中の通信線にも使われているとは。はてさて、どうしたものか。

どうやら、標準ライブラリにSoftwareSerialというものがあるらしい。これを使うと上に書いた問題を解決できるかもしれない。