ArduinoをUSB-TTL変換アダプター代わりにする

Using Arduino as a USB-TTL conversion adapter
電子工作においてパソコンとUSBを使ったシリアル通信をするためには、専用のケーブル(USB-TTLシリアル変換ケーブル)が必要となります。まともなケーブルであれば1500円前後しますし、Amazonで200円程度で売っている激安変換ケーブルは公式のドライバーが古く、Windows 10などの最新のOSでは導入できなくはないのですが、いろいろと手間がかかってしまいます。

ところが、Arduinoがあれば、これ単体でUSBシリアルケーブルを代用することが出来ます。わざわざ単体を強調したのは、特別なスケッチを書き込む必要が一切無いからです。

一般的なArduinoにはAVRマイコンが搭載されていることは多くの方がご存じだとは思いますが、Arduino Unoを始めとしたシリアルモニターが可能なモデルには、マイコンのすぐそばに小さなIC(Arduino Uno R3であれば「ATmega16U2」)が搭載されています。

このチップにはUSBコントローラーが搭載されており、このチップを介することで、USBによるシリアル通信を実現します。つまり、このチップを単体で稼働させることができれば、ArduinoがUSB-TTLシリアルケーブルの代替品になるというわけです。

単体で稼働させるにはメインのAVRマイコン(UnoならATmega328P)を抜くだけでOKです。シリアル通信ができる機種であれば、理論上はArduino互換品でも同様の効果が得られるはずです。

とはいうものの、使うたびにチップを抜き差ししているとピンが欠けてしまうリスクもあります。そこで、より簡単な方法としてArduinoのRESETピンとGNDピンをショートさせてしまう方法があります。こうすることで、マイコンが機能しなくなり、マイコンを抜き取った状態と同じ状況を作ることが出来ます。

UARTを使った通信が利用されるケースとして、ワンチップマイコンのデバッグや、Raspberry Piでのドライバーモニターなど、もっぱら電子工作プログラミングのデバッグが挙げられます。ですが、ジャンク大好き人間にとって有名な活用方法があります。

それがこのチェーン店のリサイクルショップでなら捨て値で買える、某通信会社のデジタルフォトフレーム(私はブックオフで780円で買いました)。このフォトフレームの基盤にはUART端子があり、これを介してカスタマイズされたAndroidアプリをインストールすることで、B-CASカードのみで、フルセグのデジタル放送を視聴できるようになるのです。

それでは実験をしてみましょう。やり方はほかの方が語り尽くしているので、ググって得られた情報をもとに、基板上のTX、RX、GND端子をArduinoのRX、TX、GNDピンにそれぞれ接続します。この写真では、単線ワイヤーを半田付けしたその先に、鰐口クリップをかませています。

Arduino IDE(シリアル通信ドライバーが含まれている)をパソコンにインストールしているのを確認して、オープンソースプロジェクトの通信ソフト「Tera Term」を起動しましょう。ここでArduinoのCOMポートを接続先として指定し、転送レートを調整すれば、このようにバッチリとデータを送受信できます。

もちろん、改造は自己責任で。

2017/08/07