※記事内に商品プロモーションを含む場合があります
秋月で売っている、超小型USBシリアル変換モジュール。
大きさが普通のUSB端子程と、とても小さいモジュールです。
今まで作った気圧計などはピンヘッダで外付けのUART変換モジュール
に接続していました。
しかし、このモジュールなら内臓出来るので
見た目も少し良く、コンパクトになります。
しかし、大きな問題がありますそれはDTRピンが無い事です。
DTRピンが無いとArdionoのリセットが出来ない
リセットは出来なくても良いと思っているのかもしれませんが
このままではマイコンにスケッチを書き込む事が出来ません。
この編の仕組みをまずは説明します。
リセットとArduinoブートローダーの関係
Arduinoで使われているマイコンはatmega328p。
atmega328pはAVRマイコンなのでAVRISP mkIIなどの書き込み装置が必要です。
AVRISP mkIIは私も持っています。
一方、Arduinoは特別な書き込み装置は不要。
単体で作ったとしても、UART送信・UART受信・リセット・GNDの4本と
接続すればマイコンのプログラムを書き換える事が出来ます。
何故か、それはブートローダーが書き込まれているからです。
ブートローダーの役割
ブートローダーの仕組みは電源がONになったり、
リセットが掛かったらしばらく待ちます。
その間にUARTから何もデータ受信しなかった場合は、
マイコンに書き込まれているプログラムに実行を移します。
待ち時間の間にUARTからデータ受信があった場合は、
マイコンを送られてきたデータで書き換えます。
待ち時間は1秒弱程度、待ち時間があるので起動時間は遅いです。
スケッチをマイコンに書き込む為にはブートローダーの待ち時間の間に
データが送信される様にする必要があります。
一度、手動リセットを試してみましたが至難の業でした。
ブートローダーはAVRISP mkIIで書き込んだり、いろいろ方法はある様です。
DTRの変わりに、RTSピンを使ってリセットを行う
FT234Xのデータシートを見ると、ICにDTRピンがありません。
そこで、使えそうなピンを探したらRTSピンがありました。
RTSピンならうまくリセットが行える様です。
実際うまく行きました、ただプルアップ抵抗を省いていたら
リセットされない時があったので追加したらリセットされる様になりました。
超小型USBシリアル変換モジュールからRTSピンの取り出し
FT234XにはRTSピンがあります。
超小型USBシリアル変換モジュールの説明書を見ると
RTSピンとCTSピンがショートしています。
データシートを見るとこうなっています。
8 RTS# Output Request to Send Control Output / Handshake Signal.
11 CTS# Input Clear To Send Control Input / Handshake Signal.
RTSが出力で、CTSが入力。
ショートさせる事で、フロー制御の無効化を行っている様です。
このショートしているパターンがこれ。
この赤い線です。
CTSは入力なので、出力はRTSのみのハズです。
なのでパターンのレジストを削って0.2mmのエナメル線をハンダ付けしました。
小さい上に、スルーホールが近くになるので
失敗すると使えなくなる可能性があるので、自己責任で行って下さい。
パターンは細いので、引っ張たりするとパターンが剥離してしまう可能性があります。
剥離してしまうと面倒なので導通テスト後、エポキシー接着剤などで固めてしまいましょう。
あとがき
パターンが本当に細かいので、一時は諦めモードに入っていました。
マイクロUSB端子なのでアンドロイドやキンドルの充電ケーブルがそのまま使えます。
RTSピンはAtmega329Pのリセットピンに直接接続しても動作しません。
間に0.1μFのコンデンサを入れる必要があります、プルアップ抵抗も忘れずに。
【関連】arduinoのATMEGA328P-PUを単体で動作させる方法