図2は、USBシリアル変換モジュールとArduino Nano、2つの基板が1つのブレッドボードに装填(そうてん)した状態です。
左側が、秋月電子通商で購入可能なFT232RL USBシリアル変換モジュールです。2007年の発売ですから18年以上にわたるロングセラーを誇っており、ICとしてFTDIのFT232RLが搭載されています。右側はArduino Nanoの互換機です。USBシリアル変換チップにCH340系が搭載されています。それぞれのモジュールはお互いにGNDを共通にしています。
緑のジャンパー線が基板のシルク(基板上に白色で印刷された文字のこと)でいうところのRXD同士をつないでいます。また白いジャンパー線はお互いのTXD同士をつないでいます。Arduino Nanoの基板内におけるシルクの表記ではTXDとRXDが入れ替わっています。
ですので、FT232RLのTXDはCH340のRXDに実質つながっています。また同様にFT232RLのRXDはCH340のTXDにつながっています。先に示した図1も確認してみてください。
これらのシリアルモジュールは全二重で通信ができる仕様になっていますから、送信側は相手の受信側に、またこちらの受信側は相手の送信側につながります。
ここで大切なのはArduino NanoのリセットピンをGNDに落としているところです。図2では少し見にくいのですが、赤丸で囲んだ部分になります。
図3は、図2のブレッドボードに実装した回路を用いて通信を行う様子を模式的に描いたものです。
図3左側のPC1は、FT232RLのUSBシリアル変換モジュールとUSBインタフェース経由でつながっています。OSはWindowsです。この通信実験で用いるアプリはTera Termというターミナルエミュレーションソフトです。
ターミナルエミュレーションといえば、1980年代のコンピュータの名機であるDECのPDP-11やVAX-11では専用端末のVT-100が使われていました(図4)。これはホストマシンとはRS-232Cでつながっており、ビデオディスプレイとキーボードが備わっていました。
利用者はこの端末からコンピュータを操作するのですが、その後より安価なPCが普及するのに伴って、PC上でその機能を代替させるソフトウェアが大ヒットしました。それがターミナルエミュレーターと呼ばれるもので、Tera Termの設定画面ではVT-100という選択肢をいまだに見かけます。
ターミナルエミュレーターで通信する場合、相手側も使っているであろう何らかのターミナルエミュレーターとの間で通信設定を合わせておく必要があります。今回の実験では両者ともTera Term起動時のデフォルトの設定で使っています。
さて、図3右側のPC2とつながっているArduino Nanoですが、ATMEGA328P-PUのリセットピン(RST)をGNDに落としています。これでCPUはリセット状態のままになります。人や動物で例えるなら仮死状態ですね。この時、ATMEGA328P-PUのTXDとRXDまたその他のGPIOはハイインピーダンス状態、いわゆる高抵抗状態になります。
こうすることで、これらのピンは回路から切り離された状態になります。TXDとRXDはATMEGA328P-PUの影響を受けることなくCH340を単独で通信用途に使えるので、PC1とPC2の間をUSBで接続できるというわけです。
読者の皆さんがUSBシリアル変換モジュールの購入を検討しているとき、お手元にArduino Nanoがあるならばこの方法を試してみてはいかがでしょうか。
忘年会に最適!? 使い捨てライターで離れた場所にあるLEDを点灯するガジェット
ロシア製ガイガーミューラー管の実力はいかに
加湿器トランスデューサの水中通信実験で「ロバチャン」が進化する【後編】
加湿器トランスデューサの水中通信実験で「ロバチャン」が進化する【前編】Copyright © ITmedia, Inc. All Rights Reserved.
組み込み開発の記事ランキング
コーナーリンク