FTDI USBシリアル変換アダプターと自作Arduino


はじめに

USBシリアル変換器が必要になったのでFTDIのチップを使った変換アダプターを作成しました. 具体的には,ESP-WROOM-02 (ESP8266)のコードをArduino IDEで開発したり,ドローン用のフライトコントローラーであるMultiWiiのファームウェアを書き換えるのに必要になりました. 安価な完成品が多く出回っていますが,中には模造チップが使われていてデバイスドライバのインストールでトラブルが発生するものもあるようなので,とりあえず自作しました.

これまでAVRを使った工作をする場合は,チップを買ってきてアセンブラかavr-gccで開発していたためArduinoには全く興味は無かったのですが,ESP8266やMultiWiiを使った際にArduino IDEに触れてみて思ったよりも便利だったので,ブレッドボード上でArduinoを組んで動かしてみました.

製作

FT232RLを使いましたが,必要な外付け部品はほとんどないのでSSOP-28の変換基板上で必要な配線を済ませました. 書き込み回路側の電源が3.3Vと5Vのどちらにも対応できるようにトグルスイッチをつけました.

(追記) FT232RL内蔵の3.3Vレギュレータは50mAまでしか出力できずESP32などへの電源供給には力不足なので,300mAまで出力可能なLDOレギュレータのNJM12888F33を追加しました。また回路図中のCTS信号は使うことがないので省略して,代わりにESP32の書き込みで使用するRTS信号を取り出しました.

回路図
基板表
基板裏
完成写真

Arduinoをブレッドボードで作る

Arduinoへのプログラムの書き込みには,USBシリアル変換器のGND,TXD,RXDの他にDTRを使います.このDTRは,10kΩでプルアップされたAVRのリセット端子に0.1μFのコンデンサを直列に介して接続することで,書き込み時にAVRに適切なリセット信号を与えているようです.そのため,最低限それらの配線を行えばArduinoとしてプログラムを書き込むことができます.

買ってきたばかりのAVRのチップにはブートローダーが書き込まれていないため,そのままではシリアル接続を使ってプログラムを書き込むことができません. また必要に応じてヒューズビットも適切に設定する必要があります. 以下のコマンドラインはhidspxを使った場合の例です:

hidspx -l00111111
hidspx C:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\atmega\ATmegaBOOT_168_atmega328_pro_8MHz.hex
hidspx -l00001111
hidspx -fL11100010
hidspx -fH11011010
hidspx -fX00000110

以下の写真は,ATMega328Pをブレッドボード上でArduinoとして動かしたものです.

ブレッドボード上で動かすArduino

[戻る]
2017-06-11 ページ作成
(2016-09 製作)
T. Nakagawa