ArduinoISPでProMiniへスケッチを書き込む


Pro Miniへプログラムを書き込む方法としては、このようなFTDI USBシリアル変換アダプターを使って
PCからUSB経由でスケッチを書き込む方法が沢山紹介されていますが、
ArduinoISPを使えば、変換アダプターを使わなくてもPro Miniへスケッチを書き込むことができます。
こ ちらのページなどで紹介されていますが、日本語のページが見当たらなかったので紹介します。

母艦としてはUNOを使用し、結線はこ ちらの通りです。
Uno---------------------Pro Mini
5V----------------------VCC GND---------------------GND Digital Pin 11(MOSI)----pin 11 (MOSI) Digital Pin 12(MISO)----pin 12 (MISO) Digital Pin 13(SCK)-----pin 13 (SCK) Digital Pin 10----------RST


1.こちらのページからIDE 1.6.Xに対応したhardware.zipを頂いて所定の場所に展開する。(公開ありがとうございます)
AVR マイコンを Arduino-IDE 1.6.x で使用する方法

リンクが少し分かりずらいですが
「これらを、ドキュメント\Arduino\hardware の中に構築することによって」の部分をクリックすると
IDE1.6.Xで使えるhardware.zipの公開ページに飛びます。

2.展開した「hardware\atmega\avr\boards.txt」に以下を追加する。

###########################################
avr168e.name=Pro mini / ATmega168 (5V 16MHz)
avr168e.upload.maximum_size=16384
avr168e.upload.tool=arduino:avrdude
avr168e.bootloader.tool=avrdude
avr168e.bootloader.low_fuses=0xe2
avr168e.bootloader.high_fuses=0xdd
avr168e.bootloader.extended_fuses=0x07
avr168e.bootloader.path=dummy
avr168e.bootloader.file=dummy.hex
avr168e.bootloader.unlock_bits=0x3F
avr168e.bootloader.lock_bits=0x3F
avr168e.build.mcu=atmega168p
avr168e.build.f_cpu=16000000L
avr168e.build.core=arduino:arduino
avr168e.build.variant=atmega_int

###########################################
avr328e.name= Pro mini / ATmega328 (5V 16MHz)
avr328e.upload.maximum_size=32768
avr328e.upload.tool=arduino:avrdude
avr328e.bootloader.tool=avrdude
avr328e.bootloader.low_fuses=0xff
avr328e.bootloader.high_fuses=0xde
avr328e.bootloader.extended_fuses=0x05
avr328e.bootloader.path=dummy
avr328e.bootloader.file=dummy.hex
avr328e.bootloader.unlock_bits=0x3F
avr328e.bootloader.lock_bits=0x3F
avr328e.build.mcu=atmega328p
avr328e.build.f_cpu=16000000L
avr328e.build.core=arduino:arduino
avr328e.build.variant=standard

3.Arduino IDEを起動
ツール→ボードに「atmega」のサブフォルダーが表示され、
その中に「Pro mini / ATmega168  (5V 16MHz)」と「Pro mini / ATmega328  (5V 16MHz)」が表示されれば成功です。

4.UNOをUSB経由でPCと接続
5.正しいCOMポートとボード(UNO)を選択
6.ArduinoISPスケッチを開く(ファイル→スケッチの例→ArduinoISP)
7.スケッチをアップロードする。
8.書き込み装置として「Arduino as ISP」を選ぶ(ツール→書き込み装置)
9.ツール→ボード→atmegaのサブフォルダーから
「Pro mini / ATmega168  (5V 16MHz)」あるいは「Pro mini / ATmega328  (5V 16MHz)」を選ぶ
10.Pro Mini用のスケッチを開く。
例えば以下のようなスケッチ。
このスケッチはPro Miniの#10から#13の物理ピンを使いますので、母艦のUNOと接続したまま、
書き込みが正しく行われたかどうかを確認することができます。
CPUが168Pの場合はD6 D7、328Pの場合はD8 D9のLEDが点滅します。

/*
 * Sample Program for ProMini
 */
#if defined(__AVR_ATmega168P__)
  #define out1Pin 6
  #define out2Pin 7
#elif defined(__AVR_ATmega328P__)
  #define out1Pin 8
  #define out2Pin 9
#endif

void setup() {
  pinMode(out1Pin,OUTPUT);
  pinMode(out2Pin,OUTPUT);
  digitalWrite(out1Pin,LOW);
  digitalWrite(out2Pin,LOW);
}

void loop() {
  digitalWrite(out1Pin,HIGH);
  digitalWrite(out2Pin,LOW);
  delay(1000);
  digitalWrite(out1Pin,LOW);
  digitalWrite(out2Pin,HIGH);
  delay(1000);
}

11.スケッチを書き込む。

Pro Miniの用途としては、UNOとかNAMOを使ってデバッグを行い、
デバッグが終わった完成スケッチをPro Miniに書き込むことが多いと思います。
そのためだけにFTDI USBシリアル変換アダプターを買うのは無駄(けち→俺)かなと思って試してみました。

続く....