Arduino Unoを使ってATmega328Pにブートローダを書き込む

Arduino Unoとブレッドボードを使ってATmega328Pにブートローダを書き込む方法をメモしていきます。Arduino公式のチュートリアルを参考にしました。

Arduino – ArduinoToBreadboard

Arduino – ArduinoISP

ブートローダ書き込みに必要なもの

Arduino Unoとブレッドボードを使ったブートローダの書き込みに必要なものは、以下のものです。秋月電子通商の通販で問題なく揃います。Arduino Unoを別にすれば、新たに全ての電子部品を揃えたとしても必要な費用は1,000円未満といったところでしょうか。

  • Arduino Uno
  • ブレッドボード
  • ATmega328P(ブートローダを書き込んでいないもの)
  • 電解コンデンサ(10μF)
  • 水晶発振子(16MHz)
  • 積層セラミックコンデンサ(18〜22pF)× 2個(わたくしは22pFのものを使用しました)
  • カーボン抵抗器(10kΩ)
  • ジャンパワイヤ少々

当然ですが、Arduino IDEをインストールしたPC、PCとArduino Unoを接続するUSBケーブルも必要です。

Arduino Unoへのスケッチ書き込み

まずは、Arduino Unoへ「ArduinoISP」のスケッチを書き込みます。このスケッチを使うことにより、Arduino UnoをAVR ISP、つまりマイコンへのブートローダ書き込み機として使うことができます。

Arduino IDEを起動後、「ファイル > スケッチの例 > ArduinoISP」と進めば、ArduinoISPのスケッチを開くことができます。PCとArduino Unoを接続して、ArduinoISPのスケッチをArduino Unoに書き込みましょう。

Arduino UnoとATmega328Pの接続

次に、Arduino UnoとATmega328Pを接続します。いったん、PCとArduino Unoの接続は外しておいて、Arduino UnoとATmega328Pをこんな感じで配線します。

ブートローダ書き込み用の配線

リセットピンに10μFの電解コンデンサを接続している点が、Arduino公式のチュートリアルと異なります。ArduinoISPのチュートリアルに「Arduino Unoを使う時は、10μFの電解コンデンサをリセットピンとGroundの間に差し込めよ」とさりげなく書いてありますので、それに従っています。

Note for the Arduino Uno: you’ll need to add a 10 uF capacitor between reset and ground.

書き込み装置の選択

配線が終わったら、再びPCとArduino Unoを接続して、ブートローダ書き込みの準備を進めます。まずは書き込み装置の変更です。

Arduino IDEを開き、書込装置を「Arduino as ISP」に変更します。「ツール > 書込装置 > Arduino as ISP」と選択すればOKです。(書込装置のデフォルト設定は「AVRISP MKII」です)

ブートローダ書き込み

いよいよブートローダ書き込みを行います。書き込みの前に、正しいポートが選択されていること、ボードとしてArduino Unoを選択していることを確認しておきます。ポートおよびボードの選択が正しいことを確認したら、ブートローダを書き込みます。

「ツール > ブートローダを書き込む」と選択すると、ブートローダの書き込みが始まります。

Arduino IDEブートローダ書き込み

数秒ほど待って「ブートローダの書き込みが完了しました。」と表示されたら、ブートローダの書き込みは無事に完了です。

シェアしてもらえるとうれしいです。゚(´っωc`)゚。