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

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

Arduino Pro Mini 328 3.3Vを8ピンAVRマイコン書き込み専用ISPにする

Arduinoをいじっているとだんだん気になるのが、マイコンのICだけでArduinoのスケッチ(プログラム)が動かせるっていうことです。Arduino Unoなどの標準的なArduino機に使われているATmega 328P-PUを引っ剥がしてブレッドボード上で動かす、ていうのもできるのですけれども、秋月電子に行くとATtiny13A、マルツに行くとATtiny85などの8ピンのマイコンが売っていて、これにプログラムさえ書き込んでしまえば乾電池だけでマイコンが動作するっていうじゃないですか。わたし、気になります

ほんで、秋月電子から1個50円でATtiny13A、千石電商から1個200円でATtiny85を仕入れてきました。

f:id:C_L:20141110235154j:plain


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


AVRマイコン ATTINY85-20PU Atmel製|マルツオンライン

今回は、これら8ピンAVRマイコンにプログラムを書き込む8ピン専用ライタを、あまり作例の見ないArduino Pro Mini 328 3.3V(互換機)で作ってみることにします。

なんでPro Mini 328“3.3V”を使うの?

Arduinoはシールドが乗っかるタイプはおおむね5VなのでArduinoは基本的に5Vの世界なのですけれども、Arduinoの外の世界の今どきのセンサー類は3.3Vのものが多いですし、Pro Mini 3.3Vならば、RAW(普通のArduinoでいうVinピン)に5Vを入れると、VCCに3.3Vが出てくれるので、3.3V出力レギュレータの役割も果たしてくれます。3.3V Arduinoシステムだと出力ピンからの信号も3.3Vになり、順電圧3.0~3.2V付近のLEDが焼け死ぬことがないので、いろいろ楽ができます。

逆に、Pro Mini 5Vの場合、RAWに7Vぐらい入れてVCCに5Vを出させるか、VCCに直接5Vを入力するかのどちらかになりますが、結局5Vの電圧の電源しか得られないのです。

なんでPro Mini 328“互換機”でArdouino as ISP

中国通販価格で、1個300円だからです。ウェブのあちこちで見る、ArduinoISPとして使う作例は、Arduino Unoを使っていたりするのですが、毎回Arduino UnoにISPスケッチを書き込んで、配線するのも大変そうです(配線は暗記できるほど簡単ですが)。

大量に持っている1個300円のArduino Pro Mini互換機で作って、しかもそれをArduino as ISPとして常設にしてしまえば、いつでも気軽に8ピンAVRマイコンをプログラムできます。

Arduinoが高い高いと嘆く声ををネットでよく耳にしますが、このような廉価なモデルを併用すれば全然高くないです。ちなみに、動作確認用に、本物のArduino Pro Mini 328 5V/3.3Vも持っておいた方がいいのは言うまでもありません。

作例

ブレッドボードにこんな感じで組んでみました。

f:id:C_L:20141111011456p:plain

f:id:C_L:20141111001036j:plain

f:id:C_L:20141111001108j:plain

使い方

あらかじめ、

ATtiny 13A用として

ATtiny13をArduino IDEで使う(暫定版): 構想100年

ATtiny 85用として

Arduino IDEでATtiny他の開発(Arduino-ISP編) | Make | kosakalab

を参考にして、hardwareディレクトリに各マイコン用のファイルを解凍しておく(スケッチ転送対象マイコンに出てくるようになる)。

Auruino IDEを起動したら、[ファイル]‐[スケッチの例]‐[ArduinoISP]を選択し、Arduino ISPのプログラムを読み込んで、Arduino IDEからマイコンボードを「Arduino Pro/Pro Mini 328(3.3V,8MHz)」 、シリアルポートを通常書き込むときのCOMポートを選び、書き込み。この時点で、このArduino Pro Mini(互換機)は、書込装置「Arduino as ISP」になりました

次に、ブレッドボードに配置して結線を確認して、9ピンとGNDを順電圧3.1VぐらいのLED等でハートビート発光になっているのを確認して(パイロットランプの役割)、7ピンとGNDをやっぱり順電圧3.1VぐらいのLEDでつないでおきます(これは書き込み時に点滅します)。今回作例は3.3VのArduinoなので、LEDに直列につなぐ抵抗は省略です。

書き込み機が完成したら、今度はArduino IDEで新規にスケッチを作り、適当なプログラム(空でもよい)を作ります。

8ピンマイコンの書き込みをするため、書込装置に「Arduino as ISP」を選びます。そう、さっき完成したPro Miniのブレッドボードのことですよ!

Ardouino IDEで、マイコンボードとして「bitDuino 13(internal 9,6MHz)」「ATtiny85(internal 8MHz clock)」などを選びます。COMポートはいつものArduino Pro Miniを書き込むポートでOKです。

ブレッドボードのICソケットにマイコンの向きを確認して置き、指でそっと押さえておきます。その状態で書き込みをします。

f:id:C_L:20141111001252j:plain

書き込み時に若干のエラーが出ますが、書き込みが終わっています。マイコンをソケットから外してください。

書き込み手順は、こんな感じなんですが、何せ8ピンなんで、動作確認するアプリケーションがめんどうですよね。

今回のまとめ

  • ArduinoでAVRマイコンにプログラムを書き込むArduino ISPという仕組みがある
  • ネットに出ている情報はArduino Unoを使った作例ばかり
  • Arduino Pro Mini 328 3.3V/8MHzでArduino ISPを常設する作例を提案
    • 3.3Vだから安全
    • 中国製のPro Mini互換機を使うと300円ぐらい
  • できた!

次回

次回は、ATtiny13A用のスケッチでLチカとかせずにいきなりルーレットマシンを作ります。

f:id:C_L:20141111004913j:plain

Arduino Pro Mini 328 3.3V 8MHz

Arduino Pro Mini 328 3.3V 8MHz

FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)

FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)