Mira&Luna's nursery lab

旅乙女と発明娘の子供部屋

手作りGPSロガー 8回目 「ATmegaにブートローダを書き込む」

Mira f:id:miraluna:20180105114819j:plain:w30          🎀目次へ🎀
自作GPSロガーの作り方。第8回目。

今回はGPSロガーから少し寄り道をして、Arduinoマイクロコンピュータ、ATmegaにブートローダの書き込みをする方法を紹介します。

そうすることでプログラムを書き込めるマイコンを量産できるから、Arduinoから独立して動かすことができるの。

f:id:miraluna:20180105150256j:plain:w300

こちらは三葉(みつは) [ATmega328P-PU]。

GPSロガーのブレインとして実装します。でもそうなるとArduinoマイコンはお留守になってしまうので、実装用にもいくつかマイコンがほしいところ。

みつはは色葉(いろは)[ATmega168]や八葉(やつは)[ATmega88]の上位モデル。お姉さんね。

上位モデルなのでその分メモリが大きかったりするんだけど、プログラム内容によっては必要以上の性能だったりすることもある。そんな時、代わりに妹の色葉や八葉に仕事を任せられると、お財布にも優しいわよね。

そこで今回は ATmega328/168/88 の三姉妹をArduinoマイコンと同じように動かせるようにしたいと思います。


〇プログラムを書き込むには

ブートローダを書き込む方法
AVRマイコンは、そのままArduinoに載せても同じようにプログラムを書き込むことはできません。Arduinoマイコンには、「ブートローダ」というものが書き込まれていて、それが必要なのです。
ブートローダを書き込めば、AVRマイコンArduinoと同じように動かすことができます。
これが一つ目の方法。

・そのままAVRに書き込む方法
ブートローダを書き込むと少し容量を使っちゃうので、ブートローダを入れずにプログラムを書く人もいます。
AVRマイコンにそのままプログラムを書き込むためには、Arduinoかその互換となるものを配線して、Arduino(または互換器)を書き込み装置として使います。

ブートローダを書き込むと、姉妹たちが魂をもって自立するような感じがして好きなので、私はブートローダを書き込むの。
なので私のやり方を紹介するわね。



ブートローダ書き込み手順

Arduino IDE (Arduinoのソフトウェア) は日に日に進化しているから、私のやり方は古くさいかもしれないけど。
私のバージョンは1.8.1。

IDEのボードに 328/168/88 を加える

Arduino IDEを開くとツールというのがあって、書き込みを行うときにはその中のボードで Arduino/Genuino Uno というのを選んでた。これはArduino Uno の場合。AVRに書き込むためには、ここに328/168/88の選択肢が必要になるの。
Arduinoの公式ページには Arduino To Breadboard という魅惑的なページがあって、ブレッドボード上のマイクロコンピュータに書き込みを行う方法(ブートローダの場合もプログラムの場合も両方)が書かれてる。↓

https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard

そのページの真ん中あたりに Minimal Circuit という記事があって、そこにダウンロード用のファイルがある。
これをダウンロードして、Arduinoのプログラムファイルの中にある「hardware」というフォルダの中にコピーをすれば……。

f:id:miraluna:20180110101931p:plain:w500

ATmega328/168/88 がそれぞれ加わりました!


Arduinoに載っているみつはにArduino ISP のスケッチを書き込む

Arduino IDE の「ファイル」→「スケッチ例」→「11.Arduino ISP」と進み、
そのスケッチを開きます。そしてマイコンボードに書き込みます。

f:id:miraluna:20180109182230p:plain:w500


配線する
f:id:miraluna:20180109170259p:plain:w300

※私はこのままでうまくいきますが、ArduinoのRESETとGNDの間に10μFのコンデンサを入れたほうが良いという人もいます。私はATtiny13に書き込むときだけ入れます。バージョンによって違うのかな? (Ver.1.0.〇 のものは配線が違います。Arduino To Breadboard 参照)

ひんぱんにこの配線を組むという人は配線回路をシールドにしてしまうと便利ですよ。
私もシールドを作りました。→ 「ブートローダ書込みシールドの作成



ブレッドボードのマイコンブートローダを書き込む

 「ツール」の「ボード」から、ブートローダを書き込むマイコンの品種を選びます。
 ATmega328とか、ATmega168とか、ATmega88とか。

f:id:miraluna:20180110101931p:plain:w500

「Clock」から水晶振動器の仕様を選びます。
[16MHz/X'tal] は精度は高いけど、外付けの水晶が必要。
[8MHz/INT OSC] はマイコンの中にある8MHzの水晶を使うので、外付けする必要がなくなります。
8MHzで十分なので、私はこっちを選ぶことが多い。

f:id:miraluna:20180109182227p:plain:w500

「書込装置」を「AVRISP mkⅡ」から「Arduino as ISP」に変える。
※「Arduino ISP」ではないので注意。

f:id:miraluna:20180109182204p:plain:w500

そしてついに。
ブートローダを書き込む」をクリック。
これで新しいマイコンブートローダが書き込まれ、晴れて姉妹の仲間入りよ。

f:id:miraluna:20180109182201p:plain:w500


注意:)私は同じ方法でブートローダの書き込みに失敗して、プログラムを書けなくなってしまったマイコンがいくつかあります。その子たちは、私がヒューズの変更やリセットをできるようになるまで修行中の身になってもらってます。


これでArduino同様のマイクロコンピュータの完成!
内蔵発振器にしたから、単独でも水晶を付ける必要もない。
Arduinoに載せ替えるだけでどんどんプログラムを書き換えられる。
マイクロコンピュータをどんどん増やせる。

その中の一つにGPSロガーのプログラムを書き入れて……
ついに実装ね。


続く。


7回目」へ        「9回目 最終回」へ

       ★目次へ