2013年5月1日水曜日

UNOを使ってArduinoをブートローダーを書込

Arduinoを自作したいと思ったことはありませんか。
自分だけのオリジナルArduinoを自作したい思ったときの第一歩は、Arduinoのブートローダーの書込です。

自作のArduinoを作るためには、次のハードルをクリアする必要があります。

1.AVRマイコンチップへのブートローダーの書き込み
2.Arduino化した、AVRマイコンチップを動かすための回路基盤の作成
3.ArduinoUNOと同様にするには、USBシリアル変換回路の作成

3.のUSBシリアル変換回路は、必ずしも必要ではなく、スケッチを書き込んだAVRマイコンチップを基盤に乗せるのあれば不要です。



今回取り上げるのは、1.のAVRマイコンチップへのブートローダーの書き込みです。

電子部品を売っているお店で、ArduinoUNOに使われているの同じAVRマイコンチップATmega328P-PUを購入してきても、Arduinoとしては使用できません。
なぜなら、ブートローダーといわれるソフトが入っていないからです。
ふだん、プログラムを書いているスケッチとは別物です。

ArduinoUNOは、AVRマイコンチップにArduinoのブートローダーが書き込まれていて、その上で動くスケッチがあって初めて、Arduinoになるんです。

ブートローダーの役割が分かったところで、どうやって、ブートローダーを書き込むかです。
手段は様々あるようですが、できれば、いろいろ購入せずに手持ちの部材で済ませたいです。

いちばん、お手軽なのは、手持ちのArduinoUNOを使う方法だと思います。

必要な材料は、以下のとおり。
・ArduinoUNO本体
・AVRマイコンチップ ATmega328P-PU (ArduinoUNOに使われているチップです)
・ブレッドボードとジャンプケーブル
・ブートローダーを書き込み用のファイル
・ArduinoIDEがインストールされているPC

実際に、WindowsPCでブートローダーを書き込んで実験してみたので、ブートローダーを書き込んでみたいという方は参考にしてください。

1.必要な材料をそろえましょう。
 AVRマイコンチップのATmega328には、いくつかの型番があります。
 購入の際には表面の記載を必ず見て、ATmega328P-PUであることを確認しましょう。
 それ以外は、普段Arduinoを使ってスケッチを作っている方なら持っていると思います。
 足りなかったら購入しましょう。

2.ブートローダーを書き込むためのファイルをダウンロードします。
  http://arduino.cc/forum/index.php/topic,28733.0.html
 必要なファイルは、上のページにある、optifix.zip です。

3.ダウンロードしたZIPファイルを解凍して、ArduinoIDEがインストールされているフォルダへコピーします。
 
 私の環境での例です。
 


 








コピーしたフォルダは、optifixフォルダです。

4.optiLoader.h ファイルだけ、内容を変更します。
  解凍した、optifixフォルダ内には、2つのファイルがあります。
  optifix.pde と、 optiLoader.h です。
 optiLoader.hをメモ帳で開きます。
 1行目の#include <WProgram.h> を #include <Arduino.h>へ変更し保存します。

 5.ブートローダーを書き込むための配線をブレッドボードに組み上げます。
  http://arduino.cc/en/Tutorial/ArduinoISP から引用

  注意点は、
  AVRマイコンチップの向きを間違えないこと。
  この図だと、緑のケーブルでつないでいる左下が1番ピンです。
  チップの表面に丸ポチの目印があります。
  赤のケーブルと黒のケーブルは電源とGNDなので、配線間違いでチップが破損します。

   もうひとつの注意点は、
  Arduino側の5Vピンに接続しているケーブルを、5V側で外しておくことです。
  こうすることで、ArduinoをUSBでPCへ接続した際に、AVRチップへの通電が
  されない状態にしておくことができます。チップへの通電タイミングが重要です。
  




 














6.念には念をいれて配線をチェックし、5V側の赤いケーブルが外れていることを確認します。
 次に、ArduinoUNOとPCをUSBケーブルで接続します。
 ArduinoIDEを起動します。

7.シリアルモニターを開きます。
 右下の通信速度を 19200bpsへ変更します。この変更をしないと、文字化けします。

8.optifixフォルダ内のoptifix.pdeを開きます。

9.開いたoptifix.pdeをArduinoへ転送します。普段と同じ操作です。

10.シリアルモニターを開きます。19200bpsになっていれば、次のように表示されているはずです。
Bad value:0 は、AVRチップの通電がまだなので、ターゲットになるAVRチップが無いという意味なので心配要りません。

  OptiFix Bootstrap programmer.
  2011 by Bill Westfield (WestfW)

  Starting Program Mode [OK]

  Reading signature: Bad value: 0
    (no target attached?)

  Type 'G' or hit RESET for next chip


11..いよいよAVRチップへ通電します。5Vピンを接続します。

10.書き込みの操作します。シリアルモニターの指示通り、G を入力してArduinoへ送ります。
  この G は、実際に大文字で入力です。


11.書き込みが開始されます。成功したときの画面ショットです。


 
















12.私の環境では、30秒もかからず、あっという間に完了します。

13.書き込まれた結果を確認するために、ArduinoをUSBとともに、いったん外します。

14.AVRマイコンチップの通電も、ArduinoUNOの通電も無い状態を確認します。

15.書き込んだAVRマイコンチップと、ArduinoUNOに乗っているAVRマイコンチップを取替えっこします。
  ピンが曲がりやすいので、慎重に慎重に行いましょう。結構、硬くがっちり刺さっています。
   ArduinoUNOに、AVRマイコンチップを刺すときは、チップの向きに注意しましょう。
 反対向きに刺すと、最悪、すべてが水の泡です。

16.取替えっこができたら、PCとArduinoUNO(チップは自作)を接続し、LED点滅のスケッチを転送してみましょう。[ファイル]-[スケッチの例]-[BASICS]-[BLINK]にあります。

17.ArduinoUNO上の13番LEDがチカチカしたら、大成功です。


今回、ArduinoUNOを壊してしまったらどうしようと、びくびくしながら作業しましたが、無事にできました。(@_-)v












0 件のコメント:

コメントを投稿