Arduino Uno を使って動作確認をした回路をなにかのケースに組み込んで使いたいときに
Arduino をそのまま組み込むのは大きすぎるし、高いしあまり現実的ではないので
Arduino に使われている ATmega328 を取り外して単体で使えることを確認してみた
まず購入直後の ATmega328 には Arduino として動作させるためのブートローダが書き込まれていないので
Arduino Uno を使ってブートローダの書き込みをしなければいけない
Arduino に搭載されている ATmega328 は 16MHz / 5V で動作しているが、これには外部クロックが必要
それ以外に ATmega328 の内部に搭載されている 8MHz のクロックを使う方法がある
これを使う場合、部品点数が少なくなるし、 5V もしくは 3.3V で動作させることができる
今回は速度は必要ではないしそれで十分なので簡単な 8MHz / 5V を選択
その場合ブレッドボード等は既に持っているので追加で必要なものは ATmega328 と 10μF のコンデンサだけ
参考にすべきページは
- ArduinoISP の
Instructions - ArduinoToBreadboard の
Minimal Circuit
で、前者にはおおまかな手順、後者には回路図が載っている
ただ、 Instructions の方に書いてあるが、この回路図のままだと Arduino Uno では動かないので注意
実際には回路図に加えて RESET と GND の間にコンデンサを接続する必要がある
(できれば回路図の方に注意書きを加えておいて欲しかったなぁ)
Arduino Uno と ATmega328 の接続は回路図のままでこのようにする
コンデンサはあとから無理やり付けたので適当だけれど気にしない
| Arduino Uno | ATmega328 | |
|---|---|---|
| 5V | 7 | |
| 5V | 20 | |
| GND | 8 | |
| GND | 22 | |
| 10 | 1 | |
| 11 | 17 | |
| 12 | 18 | |
| 13 | 19 |
Arduino IDE の準備
- ArduinoToBreadboard のページから
Breadboard1-0-x.zipまたはBreadboard1-5-x.zipをダウンロードする
(インストール済みの IDE が 1.0.6 だったので今回はBreadboard1-0-x.zipを使用) - zip を解凍して出てくる
breadboardディレクトリを~/Documents/Arduino/hardware/以下に配置
(場所はArduino->Preferences->Sketchbook locationで確認できる) - Arduino IDE を再起動すると
Tools->BoardにATmega328 on a breadboard (8 MHz internal clock)が追加される
Arduino Uno の準備
File->Examples->ArduinoISPを選択してスケッチを開くTools->BoardがArduino Unoになっていることを確認してからUpload
これで Arduino Uno を使ってブートローダを書き込むことができる
ブートローダの書き込みは
Tools->BoardがATmega328 on a breadboard (8 MHz internal clock)になっていることを確認Tools->ProgrammerがArduono as ISPになっていることを確認Tools->Burn Bootloaderで書き込み
これで ATmega328 を Arduino として動作させることができる
実際にスケッチを書き込んで動作させるためには、また別の回路に接続しなおす必要がある
回路図のページの Uploading sketches to an ATmega on a breadboard の図を参考にして以下のようにする
この際 Arduino Uno に元から搭載されている ATmega328 は取り外しておく
| Arduino Uno | ATmega328 | |
|---|---|---|
| RESET | 1 | |
| 5V | 7 | |
| 5V | 20 | |
| GND | 8 | |
| GND | 22 | |
| 0 | 2 | |
| 1 | 3 |
実際にサンプルの Blink を書き込んで動作を確認してみる
上記の回路に加えて ATmega328 の 19 番に LED を接続しておく
Arduino Uno のピンに対応する ATmega328 のピン番号は ATmega168/328-Arduino Pin Mapping に記載されている
File->Examples->01.Basics->Blinkを選択してスケッチを開くTools->BoardがATmega328 on a breadboard (8 MHz internal clock)になっていることを確認してからUpload
以上で動作確認は終了
ブートローダの書き込みと、スケッチの書き込みで回路を繋ぎ変えたりしなければいけないので結構面倒だった
ブートローダは Arduino Uno に載せる書き込み用のシールドを作っておくと便利だろう
スケッチの書き込みは多分シリアルがつながればいいのでUSBシリアルを載せた基板を用意しておくといいのかもしれない