FT232RLでATmega328Pにスケッチを書き込む方法

※記事内に商品プロモーションを含む場合があります

Arduinoで作った気圧計、センサーの電圧が3.3Vなので
5VのArduino UNOではそのまま接続できません。

なので、気圧計ではハードを先に作ってソフトは後で作り始めました。

しかし、そうなるとスケッチを書き込む方法が、
Arduino UNOで書き込んでUNOからATMega328Pマイコン本体を
取り外すしかありません。

そこで今回は面倒なICの取り外し無しで書き込みなどが出来る
FT232RLシリアル変換モジュールを使って書き込む方法を紹介します。

ATMega328Pマイコン側で必要なピン

Arduinoで使われているatmega328pマイコンのピン配置

マイコン側で必要なピン

  • デジタル0 RX
  • デジタル1 TX
  • RESET
  • GND

の4端子。

上の4端子とは別に電源と、水晶発振子とコンデンサが必要になります。
水晶発振子とコンデンサは内部CR発振になっている場合は不要です。

FT232RLシリアル変換モジュールで必要なピン

FT232RL USBシリアル変換モジュールキットとArduinoを接続

今回使用したのは秋月のモジュール、現在の価格で800円。

FT232RL USBシリアル変換モジュールキット
[AE-UM232R] 通販コード K-06693

PICのマイクロチップ PICkit3や
AVRのAVRISPmkIIだと3000円以上するので安価にスケッチを
書き込む事が出来ます。

FT232RLモジュール側で必要なピン

  • TXD(上の写真では緑のリード線
  • DTR(上の写真ではコンデンサと接続)
  • RXD(上の写真では赤のリード線
  • GND(上の写真では青のリード線

の4つです。

VCCIOへ電源供給する電圧の選択

このモジュールではVCCIOへ電源供給する電圧を選択できます。

FT232RLモジュールのVCCIOへ電源供給する電圧を選択するジャンパの設定

ミニUSB端子の反対側にあるジャンパピンで設定出来て
上側が5V、下側が3.3Vの様です。

3.3VはFT232RLのICで作っている様なので最大電流が50mAとの事です。

5VにVCCIOへの電源供給を設定するとシリアル信号が5Vで来るので
3.3V仕様の液晶のコントラストが変わるなどの影響を受けました。

なので、接続前に確認した方が良いと思います。

FT232RLモジュールとATMega328Pの接続

ATMega328Pには電源と、
内部発振設定になっていない場合は水晶発振子とコンデンサが必要です。

FT232RL・TXD を ATMega328P・RX(D) に接続
FT232RL・RXD を ATMega328P・TX(D) に接続
FT232RL・DTR を ATMega328P・RESET に接続

後はもちろんGNDも接続します。

FT232RL・DTR と ATMega328P・RESET の接続には
コンデンサが必要で0.1μFの積層セラミックコンデンサを経由して接続します。

0.1μFの積層セラミックコンデンサはパスコンなどで良く使うので
パック品などをまとめ買いすると良いと思います。

Arduino IDEで使うには

Arduino IDEでFT232RLモジュールを使うには割り当てられてたCOMポートを指定

Arduino IDEで使うにはFT232RLモジュールが割り当てられている
COMポートを指定すればArduino UNO と同様に
そのままスケッチのコンパイル・書き込みが出来ます。

水晶発振子や内部発振などでクロック周波数を8Mhz、電源電圧を3.3V
にした場合はマイコンボートの設定を
ATMega328・3.3V8Mhz版のArduino Pro Miniにすると良いと思います。

先日作った気圧計との接続はこんな感じです。

FT232RL経由でArduino IDEと接続した気圧計

RESETピン分のピンソケットが無いのでワニ口クリップで接続しています。

この状態でArduino IDEからスケッチの書き込み
シリアルモニタによる、シリアル出力の確認などが可能です。

あとがき

この方法を試される場合は、自己責任でお願いします。

FT232RLのモジュールとピンさえ取り外してあればスケッチを
カンタンに書き込む事が出来ます。

しかし、ブートローダーの書き込みが中々うまく行きません。
FT232RLにもBit Bangモードなどを使えば書き込めるらしいのですが
何度か失敗して面倒なのでAVRライタを買っていましました。

このAVRライタ、AVRISPmkIIは秋月で3200円でした。
用途はブートローダーの書き込み。

設定(ヒューズビット)を変える事で8Mhz内部発振に出来るので
水晶発振子とコンデンサを省略する事が出来ます。

マルツではブートローダー書き込み済が420円
秋月でまっさらなATMega328が250円

差額が170円で約20回AVRISPmkIIでブートローダーを書き込めば、
元が取れる計算です。

I2C液晶などは3.3V仕様なので、Arduino UNO用の
プロトシールド基板を使ってマイコンボードを作ろうかと思っています。