M.C.P.C. (Mamesibori Creation Plus Communication)

印刷屋から五反田のWeb屋に転職したCLのブログです。

「びんぼうでいいの」に生AVRマイコンを載せたままArduino化(ICSP)

aitendoで売っている500円Arduino互換機基板「びんぼうでいいの」、プラス250円でそれ用の汎用部品パック、さらにそのまま秋葉原に歩いて行って秋月電子で生のATmega328(まだプログラムを焼いていないAVRマイコン部品)を買い合わせると1000円ちょい(秋月は税込みだけどaitendoが税抜なのだ)でArduino Uno互換機(ただし魂が入っていない)ができます。


びんぼうでいいの - aitendo


部品パック for びんぼうでいいの - aitendo


AVRマイコン ATMEGA328P−PU: マイコン関連 秋月電子通商 電子部品 ネット通販

ところで、生のATmega328を買った場合、どうにかしてArduinoとして動くようなプログラムを書き込む必要があって、それをする方法として、すでに動いているArduinoマシンにOptifixというスケッチを書き込んで、Arduino複製機にしてしまうというやり方がメジャーです。

「びんぼうでいいの」を販売するaitendoでも、Optifixを使ってATmegaに書き込みする方法を提示しているのですけれども、なにやら書き込むためにブレッドボードで書き込み回路(実は16MHzのクロック供給回路)を用意するなど大掛かりなことになっています。

f:id:C_L:20141230004321g:plain

16MHzの水晶振動子のところを16MHzのコンデンサ内臓セラロックにすれば35円程度という話なのですが、もう一回秋月電子に行くのは大変です。


セラミック発振子(セラロック)コンデンサ内蔵タイプ 16MHz: パーツ一般 秋月電子通商 電子部品 ネット通販

というか、目の前にArduino互換基板「びんぼうでいいの」があるなら、それで書き込みできたらいいじゃないか、ということであります。

ICSP端子を使おう

AVRマイコンを使った製品を、製品に組み込んだ後からでも書き込みできるように、ICSP端子というものが用意されていたりします。

Icsp-pinouts.png
"Icsp-pinouts" by Jwzumwalt - Own work. Licensed under CC BY-SA 3.0 via Wikimedia Commons.

そこで、手元のブツを見たれば、

  • 書き込み用プログラムを書き込もうと思っていた手持ちのArduino DuemilanoveにはAVRスタイルの6ピンのICSP端子
  • 「びんぼうでいいの」にもAVRスタイルの6ピンのCSPとシルク印刷されたランドパターン

がありました。

※現行Arduinoでは標準品となるArduino UnoR3では、USB側にICSP2なる6ピンヘッダが出ていますが、UnoはUSBの通信とATmega328の書き込みを担当するサブAVRマイコンATmega16U2がUSB近くに配置されていて、それの再書き込み用ICSP端子(普通は使わない)です。

f:id:C_L:20141230003002j:plain

ICSP端子は、書き込まれる用途に使われるのですが、Optifixスケッチ(プログラム)では、書き込む側でも、ICSP端子のうち第5ピンのRSTを除く5つのピンが共通して使われていました。

そこで、「びんぼうでいいの」の空きパターンに、ピンヘッダ(別売り)をはんだ付けして端子を建てて、利用できるようにした後、1~4ピン、6ピンは同じピン番号同士を接続、書き込み先の基板のICSP端子5ピンは、書き込み元のArduinoのD10端子につなぎます

f:id:C_L:20150128024818p:plain

f:id:C_L:20141230000756j:plain

あとは、aitendoの商品ページに書いてある通り、転送元のArduinoに(ヘッダ記述を修正済みの)Optifixを書き込むと、転送元のArduinoに書き込み終了後「いきなり」ICSPで接続した書き込み先の基板上のAVRマイコンArduinoブートローダ―プログラムを書き込みます。

というわけで、ICSP端子を使えば、AVRマイコンArduino化にわざわざ部品を集める必要はないよ、ていうことでした。

追記

新製品出てた! 水晶振動子がはんだ付けされていないから自由に速度選べるだそうで。

びんぼうでいいの - aitendo

追記2

勘のいい人は気づいたかもしれませんが、びんぼうでいいの部品パックには、USBASP用の10ピンのボックスヘッダが付いてきますので、ここに対応する位置を合わせて接続すれば、ICSPのところにピンヘッダを建設する必要はありません。結局ピン対応図を見比べて配線するのであれば、そっちで書き込むほうが余計なコストがかからずいいのかもしれません。

追記3

勘のいい人は気づいたかもしれませんが、書き込み側ArduinoのスケッチをOptifixではなくてArduino ISPにすると(Arduino IDE環境に含まれている)、別のブートローダーを書き込めます。なので、「びんぼうでいいの」で開発が終わったATmega328をブレッドボードや基板などに移して使うために内蔵RC発振8MHz化したい(水晶振動子が要らない)、という場合にも「びんぼうでいいの」に載せたままATmega 328(Int.8MHz)のブートローダーを焼き、更に動作確認済みのスケッチも転送できます。