USBシリアル変換アダプターの利用ではまりました。
Arduinoを自作ロボットへの組込みボードとして活用する方針で、いろいろ勉強中です。
当然、制御用プログラム=スケッチを書き込まねばならないのですが、Arduinoの種類によってやり方が変わってきます。
Arduinoにもいろいろあるのです。
コストの観点と組み込みスペースの観点から、できるだけ小型のものを選びたいところです。
ネットで探した結果、
- Arduino Pro Mini
- DigiSpark
の2モデルがよさそう。
当研究所の購入品はどちらも「クローン」だと思いますが、スペックはオリジナルと同じ(はず)です。
前者のPro MiniにはUSBポートがありません。低コスト化、省スペース化のために省略されているのですね。
この辺は、メーカーさんの粋な配慮?といえます。
よって、スケッチを書き込むためには、何らかの形でUSB-->シリアル変換の仕掛けを準備してやる必要があります。
Arduinoを使ってArduinoに書き込むということができるらしいのですが、何かのときにUSB通信ができたほうがよさそうな気がしたので、外付けのUSB-シリアル変換モジュールを購入してみました。
ふたつ揃った姿がこちらです。

左がArduino Pro Miniクローン、右がUSBシリアル変換アダプターです。
それぞれ850円+送料、300円+送料にて購入。
今から考えると、USB変換アダプターのチョイスがあまりよくなかったようです。
結果から発表しますと、なかなか書き込みがうまくいかず、悩みました。
よく調べずに適当に始めたのがいけませんでした。
以下、はまったポイントと解決策を記録しておきます。
■Arduinoへの接続方法:
ここで、完璧なポカをしでかしました。
正しくは、
・TXD-->RXI
・VIO-->VCC
・RXD-->TXD
・GND-->GND
(・DTR-->GRN)
という形で、USBシリアルアダプターからArduino Pro Miniにつないでやる必要があります。
(「DTR-->GRN」接続については、後述)
これをよく考えもせず、
・RXD-->RXI
・TXD-->TXD
とつないでいました。「R」と「T」はクロスしなければいけないことを知らずに。
これでは通信できません。
「送信」と「送信」をぶつけあっているようなことになっていたわけですね。
ああ、美しきかな無知。
で、「( )」でくくった「DTR-->GRN」の接続なんですが、今回のUSBシリアル変換アダプターには「DTR」というピンがありません。
ないものはつなぎようがないって話で。
調べてみると、「DTR」とは「Data Terminal Ready」の略らしい。
素人なりに解釈したところでは、Arduinoに対してリセット信号を送るために使われているようです。
リセット信号を受け取ると、Arduinoはスケッチ書き込みを待ち受けるモードになる。
逆に言うと、それがないとArduinoはスケッチ実行モードのままなので、書き込みを受け入れない=エラーになるというわけです。
それがリセットボタンの役割なのね。
なんでボタンがついているのか、知らずにいました。
ああ、勇ましきかな無知。
■対策その1:
・Arduino Pro MiniとUSBシリアル変換アダプターを、正しく接続する。
・Arduino IDE(PCソフト)にて、スケッチ書き込みを指示する。
・コンパイルが終了し、Arduinoへの書き込み動作が始まるタイミングで、Arduinoのリセット・ボタンを押す。
・めでたく書き込みができるはず。
■対策その2:
・USBシリアル変換アダプターの肝はIC=PL2303HX。
・メーカー資料を読むと、#2ピンが「DTR」に当てられている。
・ならば、#2ピンからジャンパーを飛ばして、Arduinoの「GRN」ピンにつないであげればよいのでは?
・リセット・ボタンを押さなくても、スケッチ書き込みができるはず。
はてさて、目論見通りに成功するのか?
実験してみましょう!
■結果:
というわけで、対策その1を試したところ、あっけなくスケッチの書き込みに成功しました。
ジャンクRCにつないでみての「実車試験」でも、無事に自動操作成功!
Arduino Pro Mini実用化のめどを得ました。
やったね。コンパクトになるわ。
一方、リセットボタン押し下げだけでうまくいってしまったので、対策その2は実施する必要がなくなってしまいました。USBアダプターが塩ビ?でくるまれているので、ジャンパー線を飛ばすのも大変そうなんですよね。
ということで、対策その2は当面?保留です。
別に困らないので。
理論的にはいけると思いますが……。(負け惜しみ)
ええ、総括:はまりましたが、解決しました。
これもまた大いなる進歩なのであります。