Arduino UNO のブートローダ書き込み

Arduino UNO のブートローダ

通常の Arduino 入門書などでは、Arduino UNO を買ってきて LED を点滅させるところから始めますが、その前に気になるところを抑えておきます。
今回は、Arduino のブートローダの書込みについて調べられた限りをまとめました。(不足情報は適宜追加します。)

Arduino UNO のブートローダの仕組みと設定用ビットの詳細については、前回の記事を参照してください。

ブートローダの書き込み

Arduino の通常のブートローダの書き込み方法についての解説は、たくさんの例があります。
ここでは、以下の方法について説明しています。
(順番にマニアックな方法になっていますね。)
1 Arduino UNO をプログラマにして、Arduino UNO に書き込む
2 Arduino UNO をプログラマにして、Arduino Nano に書き込む
3 Arduino UNO をプログラマにして、Atmega328 に書き込む
4 Arduino UNO をプログラマにして、Atmega328 を内蔵クロック用に書き換える
5 Arduino Nano をプログラマにして、Arduino UNO(Nano、Atmega328)に書き込む

Arduino UNO R4 については、MCU が変更になったので、今までどおりにブートローダが書き込めません。
UNO R4 のブートローダについては、以下のリンクを見てください。

1 Arduino UNOをプログラマにして、Arduino UNOに書き込み

接続

自作の Arduino UNO 互換機へ初めてブートローダを書き込むとき、動作不良で再書き込みを行う場合です。
まず、正常動作するUNOとブートローダを書き込む UNO を分かるように識別します。
マスキング・テープなどに書いておくと良いでしょう。

必要な部品
オス-オスのケーブル 6本
USBケーブル USB-B 1本

配線は図のとおりです。色は適当で大丈夫です。ブレッドボード用の配線などを使います。
間違えないように配線の色を決めておきます。
色はブレッドボード用のジャンパワイヤにある色から選びました。
(2024/2/8 訂正、合わせて表と図も入れ替え)

プログラマ側書き込み対象配線色機能名
5 V5 V赤色VCC
GNDGND黒色GND
Pin 10RESET緑色Reset
Pin 11Pin 11黄色MOSI
Pin 12Pin 12茶色MISO
Pin 13Pin 13オレンジSCK

配線が終了したら、正常動作する Arduino UNO(プログラマ)側を USB ケーブルでパソコンと接続します。

Arduino IDEの準備

Arduino IDE プログラムを立ち上げます。(最新のプログラムは、ArduinoのHP の「Downloads」ページにあります。)
(Arduino IDE の使い方をまとめました。詳しくは以下のリンクを見てください。)

「ファイル」「スケッチ例」「11 .ArduinoISP」「ArduinoISP」を押します。
(画面例は、Arduino IDE 2.1 です。旧バージョンでは多少見た目が異なります。)

別ウインドで「ArduinoISP」のスケッチが立ち上がります。
(最初のウインドは、そのままで大丈夫です。)

プログラマへの書込み

このスケッチをプログラマ側の Arduino に書き込みます。
USB ケーブルの接続を確認して「編集」の下にある、丸に「→」を押すと検証・コンパイル後に書込みが完了します。
これで、Arduino でプログラムを書き込む準備が出来ました。

書込み対象の設定

「ツール」「ボード」「Arduino AVR Boards」「Arduino Uno」を選びます。
「書込み装置」は、「Arduino as ISP」を選びます。

ブートローダの書込み

全ての準備ができたら、「ツール」の「ブートローダを書き込む」を押すとブートローダが書き込まれて最下部に書込み完了のメッセージが出ます。

2 Arduino UNOをプログラマにして、Arduino Nanoに書き込み

接続

1項目目と同じですが、対象が Arduino Nano になります。
今回は、プログラマ側と書き込まれる側の大きさが異なるので、識別は容易ですね。

必要な部品
ブレッドボード 1個
オス-オスのケーブル 6本
USBケーブル USB-B 1本

配線は UNO2台の場合と変わりません。
Nano 側の最外部のピンはただの穴なので間違わないようにしましょう。(経験談)
(修正:Arduino Nano 公式ではピン番号を付けていないので、表の記載を基板表記に修正しました。)

プログラマ側Arduino Nano配線色機能名
5 V5 V赤色VCC
GNDGND黒色GND
Pin 10RST緑色Reset
Pin 11D11黄色MOSI
Pin 12D12 茶色MISO
Pin 13D13 オレンジSCK

配線が終了したら、プログラマ側の Arduino UNO を USB ケーブルでパソコンと接続します

プログラマの準備と書込み対象の設定

Arduino IDE を使ったプログラマへの書込みと、書込み対象の設定は1項目目と同じです。
ここで、「ツール」「ボード」「Arduino AVR Boards」「Arduino Nano」を選べば通常の Nano になります。

Arduino NanoのUNO化

ここで「Arduino Uno」を選ぶことも出来ます。
対象を「ツール」「ボード」「Arduino AVR Boards」「Arduino Uno」に選択してブートローダを書き込めば、極小の UNO の誕生です。

ピンの位置の再確認は必要ですし入出力ピン数が少ないです。もちろんサイズが異なるので UNO 用の専用拡張ボード(シールド)が使用できませんが、機能的には通常の UNO と同じに使えます。

3 Arduino UNOをプログラマにして、Atmega328に書き込み

接続

Arduino UNO で試作が終了して、小さなケースに組込む場合などに Atmega328 チップ単体で動作させる必要があります。
この場合(16MHz 5V動作)は、チップの他に外付けの水晶発振器などが必要です。

必要な部品
ブレッドボード 1個
水晶発振器(セラミック発振子でも可)16MHz 1個
コンデンサ 22 pF 2個
抵抗 10kΩ 1個
オス-オスのケーブル 16本
USBケーブル USB-B 1本

プログラマ側Atmega328配線色機能名
5 VPin 7赤色VCC
GNDPin 8黒色GND
Pin 10Pin 1緑色Reset
Pin 11Pin 17黄色MOSI
Pin 12Pin 18茶色MISO
Pin 13Pin 19オレンジSCK

プログラマの準備と書込み対象の設定

Atmega328 チップ単体に対しても、Arduino IDE を使ったプログラマへの書込みと、書込み対象の設定は1項目目と同じです。参照してください。

Atmega328へのスケッチの書き込み

ブートローダを書き込んだ Arduino は、USB ケーブルで接続すると普通にスケッチを書き込むことが出来ますが、Atmega328 単体ではそのままでは接続できません。

Arduino の基板上には、USB 端 子から入った信号をシリアルに変換する専用の IC が搭載されています。
Atmega328 単体でパソコンと接続して Arduino IDE でスケッチを書き込むには、下図のように USB – シリアル変換器を介して接続する必要があります。

必要な部品
ブレッドボード 1個
USB-シリアル変換器 1個
水晶発振器(セラミック発振子でも可)16MHz 1個
コンデンサ 22 pF 2個
コンデンサ 0.1 uF 1個
抵抗 10kΩ 1個
オス-オスのケーブル 15本
USBケーブル USB-B 1本

USB-シリアル変換器Atmega328328の名称
+5 VPin 7VCC
GNDPin 8GND
TXDPin 2RXD
RXIPin 3TXD
DTR0.1 uFを通して Pin 1RESET

4 Arduino UNOをプログラマにし、Atmega328を内蔵クロック用に書き換え

正確な周波数が必要なく、動作周波数が 8MHz 限定になりますが、外付け部品なしで内部クロック動作にすることが出来ます。
この場合、下のグラフのとおり乾電池2個直列(約 3 V)で動作可能です。

新品のチップなら問題なく内蔵クロック用のブートローダが書き込めますが、すでに外付けクロック用のブートローダが書き込まれている場合はエラーになって書き込めない場合があります。

接続

新品のチップの場合は、前項目の接続から水晶発振器とコンデンサを外した形になります。
すでにブートローダが書き込まれた Atmega328 チップへ書き込む場合は、前項の接続のように水晶発振器とコンデンサが必要です。

必要な部品
ブレッドボード
抵抗 10kΩ 1個
オス-オスのケーブル 12本
USBケーブル USB-B 1本

プログラマ側Atmega328配線色機能名
5 VPin 7赤色VCC
GNDPin 8黒色GND
Pin 10Pin 1緑色Reset
Pin 11Pin 17黄色MOSI
Pin 12Pin 18茶色MISO
Pin 13Pin 19オレンジSCK

プログラマの準備と書込み対象の設定

Arduino の HP の「From Arduino to a Microcontroller on a Breadboard」にある「breadboard-1-6-x.zip」をダウンロードして「hardware」フォルダの下に解凍した「breadboard」の内容をコピーします。

プログラマを書き込んだ Arduino に USB ケーブルを接続した後に「ツール」「ボード」「breadboard avr」「Atmega328 on breadboard(8 MHz internal clock)」を選んで「ブートローダを書き込む」を押すとブートローダが書き込まれます。

これでエラーが出る場合の対応法は、まだ写真などが準備できていないので後ほど追記します。

5 Arduino Nanoをプログラマにして、Arduino に書き込み

Arduino Nano に UNO のブートローダを書き込むと、極小の UNO が出来上がります。
これにプログラマのスケッチを書き込めば、ブレッドボード上で Arduino Nano から Arduino Nano やAtmega328 へブートローダの書き込みが出来ます。
接続は下図のとおりです。(すべての部品をブレッドボード上に配置可能です。)
書込みの各種設定などは上の項目を参照してください。

プログラマ側書き込み対象配線色機能名
5 V5 V赤色VCC
GNDGND黒色GND
D 10RST緑色Reset
D 11D 11黄色MOSI
D 12D 12茶色MISO
D 13D 13オレンジSCK

コメント