製作の目的
素のATMega328PをArduinoとして使うために、Arduino Unoを使ってBootloaderを書き込めます。簡単な回路なのでブレッドボードでも出来ますが、毎回ブレッドボードで回路を組むのが面倒なので専用の基板を製作しました。また、Bootloaderを書き込んだ後、USB-Serial(TTL)モジュールを使って、Arduinoのスケッチも書き込めるようにしました。
大きく2つに分けて使用方法を示します。
- ArduinoのBootloaderを書き込む
- Arduinoのスケッチを書き込む
Arduino IDEはVer.2.3.2を使って説明しますが他のバージョンでも大きく違うことはないと思います。Arduino UnoはATMega16U2の代わりにCH340を使った互換ボードでも動作確認しています。
1.ArduinoのBootloaderを書き込む
基本的な概念はArduinoの公式ページを参照してください。
Arduino UnoにProgramer用スケッチを書き込む
まずArduino UnoをBootloaderのProgrammerとして使うためのスケッチを書き込みます。
手順
- Arduino UnoとPCをUSB接続する
Arudino Writer(この基板)とは接続しないでおきます - PCでArduino IDEを起動し、File→Examples→11.ArduinoISP→ArduinoISPを開く
- Tools→Board→Arduino AVR Boards→Arduino Uno を選択
- Tools→Port→<Arduinoを接続しているPort> を選択
- Sketch→Upload、またはメニューバーの(→)アイコンでスケッチを書き込む
- IDEの右下にDone Uploading.とポップアップされるのを確認
これでArduino UnoをBootloader書き込み器として使う準備完了です。
Arudino Unoを使ってATMega328PにBootloaderを書き込む
配線図
ハーネスの作例
手順
- Arduino Writer(この基板)のZIFソケットにATMega328Pを挿入してレバーを倒す
レバー側が1ピンです - Arduino UnoとPCのUSB接続を外す
- Arduino UnoとArduino Writer(この基板)を接続する
- Arduino UnoとPCをUSB接続する
Arduino Writer上のLEDチェックが走り、HTBT LEDがじんわりと点滅します - PCでArduino IDEを起動
- Tools→Port→<Arduinoを接続しているPort> を選択
- Tools→Programmer→Arduino as ISP を選択
- Tools→BurnBootloader を選択
- IDEの右下にDone burning bootloaderとポップアップされるのを確認
これでATMega328PにArudinoのスケッチを書き込むためのBootloaderが書き込まれました。
2.Arduinoのスケッチを書き込む
スケッチの書き込みにはUSB Serial(TTL)モジュールを使用します。FT232RLとCH340のモジュールで動作確認しています。
テスト用にATMega328PにLチカのスケッチを書き込んでみます。
配線図
配線表
※TXDとRXDは互い違いになるように配線します
※CTSは配線しないでおきます
※VCCはUSB Serialモジュールで5Vに設定
配線用ハーネス
接続のようす
手順
- Arduino UnoとPCのUSB接続を外す
- Arduino UnoとArduino Writerの配線を外す
- USB SerialモジュールとArduino Writer(この基板)を接続する
- USB SerialモジュールをPCにUSB接続する
- PCでArduino IDEを起動
- File→Examples→01.Basics→Blinkを選択
- Tools→Board→AVR Arduino Board→Arduino Unoを選択
- Tools→Port→<USB SerialモジュールのPort> を選択
Arduinoを接続していたPortと異なるで注意 - Sketch→Upload、またはメニューバーの(→)アイコンでスケッチを書き込む
- Done Uploading.とIDEの右下にポップアップされるのを確認
Arduino Writer(この基板)の緑のLEDが点滅したら成功です。
回路について
回路図
Bootloaderの書き込みはSPIを使います(D13~D10)。L_PROG、L_ERR、L_HTBTはProgramerとしてつかうArduino Unoからの出力を受けてLEDを点滅させます(D9~D7)。LEDの電流制限抵抗(R2、R3、R4)は実際に使うLEDの明るさで調整してください。私の使っているLEDは緑色だけ暗いのでR4は330Ωに変更しています。
U2のLM358はD13に接続するLEDをドライブしているだけです。D13はSPIのSCKとしても使うのでバッファリングして干渉を避けます。Arduino Unoでも同様の回路になっています。前述の理由でR5は330Ωに変更しています。
Sketchの書き込みにはSerial(D0、D1)とRESETを使います。DTRから0.1uFのコンデンサ(C5)介し、10kΩ(R1)でVCCにプルアップ必要があります。C5がハイパスフィルターとして働き、RESETピンに+5Vを超える電圧がかかります。このため、SBD(D4)でクランプして+5Vを超えないようにしています。