2015年4月8日水曜日

Arduino 互換機を自作する(3):ブートローダーを書き込む

もくじ
  1. Arduino 互換機を自作する(1):導入
  2. Arduino 互換機を自作する(2):部品を選ぶ
  3. Arduino 互換機を自作する(3):ブートローダーを書き込む
  4. Arduino 互換機を自作する(4):仮組み~完成


前回選んだ部品で Arduino 互換機を作っていきます。
早速組み立てたいところではありますが、実は多くの場合はそのままでは動きません。

Arduino IDE からスケッチを書き込むには、あらかじめ ATmega328p に
ブートローダーというプログラムが書き込まれている必要があります。
今回はブートローダーの書き込み方を説明します。

スイッチサイエンスさんのATmega328pは
内部クロックで動作させるための
ブートローダーを書き込んであります。

これを使用する場合はブートローダーを
自分で書き込む必要はありません。

一方、Amazonなどで素のATmega328pを買ってきた場合や、
スイッチサイエンスさんで買ったものを
外部クロックで動作させる場合は
ブートローダーを書き込む必要があります。
(本当はブートローダー無しでスケッチを
書き込む方法もあるのですが、
その話はまたいずれ。)

ブートローダーを書き込むには、書き込み用のデバイスが必要です。
なんと、Arduino で書き込み機を自作することができます。

書き込み機用のArduinoを自作しようとしてもそのための書き込み機が
ありませんので、最初だけはブートローダー書き込み済みの
Arduino を調達する必要があります。

一台も Arduino を持っていない状態で Arduino を自作する方は
あまりいないと思いますので、今回は Arduino UNO を使います。

Arduino UNO を使って Arduino を1台分自作してしまえば、
その1台をブートローダー書き込み機にして2台目を作ることが可能ですので、
それ以降は Arduino UNO は他の用途に回していただいて構いません。

内部クロック用ブートローダーを書き込む


  1. Arduino 公式サイトのMinimal Circuit のページから
    Breadboard1-5-x.zipをダウンロードします。
    Arduino IDE1.0.x をお使いの場合は Breadboard1-0-x.zip のようです。

  2. マイドキュメントのArduinoフォルダに「hardware」というフォルダを作成します。

  3. ダウンロードした ZIP ファイルを展開してできた breadboard フォルダを
    hardware フォルダに放り込みます。

  4. Arduino UNO と PC を USB ケーブルで接続して Arduino IDEを起動

  5. サンプルスケッチから ArduinoISP を選んで Arduino UNO に書き込みます。
    ArduinoISPmenu.jpg

  6. 一旦 USB ケーブルを抜いた後、Arduino UNO とブレッドボードを使って下記のように回路を組みます。
    SimpleBreadboardAVR.png

  7. 再度 USB ケーブルを接続し、メニューから図のように選択
    ATmega328pInternalMenu.jpg

  8. 「書き込み装置」でArduinoISPを選択してブートローダーを書き込みます。


外部クロック用ブートローダーを書き込む


外部クロックの方が部品点数は多いですが手順は簡単です。
  1. サンプルスケッチから ArduinoISP を選んで Arduino UNO に書き込みます。
    ArduinoISPmenu.jpg

  2. 一旦 USB ケーブルを抜いた後、Arduino UNO とブレッドボードを使って下記のように回路を組みます。
    コンデンサは22pFのもの、抵抗は10kΩのものです。
    以前はArduino UNOのRESETとGNDの間に10μFの電解コンデンサを入れることになっていたようですが、
    なぜか現在はその記述が削除されています。
    無しでも問題なくブートローダーが書き込まれていますので必要ないようです。
    BreadboardAVR.png

  3. 再度 USB ケーブルを接続し、メニューから図のように選択
    Arduino Duemilanove か Arduino Nano あたりを選んでおけば良いようです。
    ATmega328pExternalMenu.jpg

  4. 「書き込み装置」でArduinoISPを選択してブートローダーを書き込みます。


以上で ATmega328p へのブートローダー書き込みは完了です。
公式サイトには Arduino UNO を経由したスケッチの書き込み方法も書かれていますが、
無視して構いません。

次回以降で FTDI モジュールを使ったシリアル接続回路も組み込んでいきますので、
Arduino UNO 無しでもスケッチを書き込めるようにします。

0 件のコメント:

コメントを投稿