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 V | 5 V | 赤色 | VCC |
GND | GND | 黒色 | GND |
Pin 10 | RESET | 緑色 | Reset |
Pin 11 | Pin 11 | 黄色 | MOSI |
Pin 12 | Pin 12 | 茶色 | MISO |
Pin 13 | Pin 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 V | 5 V | 赤色 | VCC |
GND | GND | 黒色 | GND |
Pin 10 | RST | 緑色 | Reset |
Pin 11 | D11 | 黄色 | MOSI |
Pin 12 | D12 | 茶色 | MISO |
Pin 13 | D13 | オレンジ | 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 V | Pin 7 | 赤色 | VCC |
GND | Pin 8 | 黒色 | GND |
Pin 10 | Pin 1 | 緑色 | Reset |
Pin 11 | Pin 17 | 黄色 | MOSI |
Pin 12 | Pin 18 | 茶色 | MISO |
Pin 13 | Pin 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-シリアル変換器 | Atmega328 | 328の名称 |
+5 V | Pin 7 | VCC |
GND | Pin 8 | GND |
TXD | Pin 2 | RXD |
RXI | Pin 3 | TXD |
DTR | 0.1 uFを通して Pin 1 | RESET |
4 Arduino UNOをプログラマにし、Atmega328を内蔵クロック用に書き換え
正確な周波数が必要なく、動作周波数が 8MHz 限定になりますが、外付け部品なしで内部クロック動作にすることが出来ます。
この場合、下のグラフのとおり乾電池2個直列(約 3 V)で動作可能です。
新品のチップなら問題なく内蔵クロック用のブートローダが書き込めますが、すでに外付けクロック用のブートローダが書き込まれている場合はエラーになって書き込めない場合があります。
接続
新品のチップの場合は、前項目の接続から水晶発振器とコンデンサを外した形になります。
すでにブートローダが書き込まれた Atmega328 チップへ書き込む場合は、前項の接続のように水晶発振器とコンデンサが必要です。
必要な部品
ブレッドボード
抵抗 10kΩ 1個
オス-オスのケーブル 12本
USBケーブル USB-B 1本
プログラマ側 | Atmega328 | 配線色 | 機能名 |
5 V | Pin 7 | 赤色 | VCC |
GND | Pin 8 | 黒色 | GND |
Pin 10 | Pin 1 | 緑色 | Reset |
Pin 11 | Pin 17 | 黄色 | MOSI |
Pin 12 | Pin 18 | 茶色 | MISO |
Pin 13 | Pin 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 V | 5 V | 赤色 | VCC |
GND | GND | 黒色 | GND |
D 10 | RST | 緑色 | Reset |
D 11 | D 11 | 黄色 | MOSI |
D 12 | D 12 | 茶色 | MISO |
D 13 | D 13 | オレンジ | SCK |
コメント