しなぷすのハード製作記

Arduino用ブートローダ/スケッチライタの製作(1)

ツイート
シェア
このエントリーをはてなブックマークに追加
フォロー
目次へ  前のページへ (1) (2) (3) (4) (5) (6) (7) (8) (9) 次のページへ
2015年06月24日 書き込み電圧に関する注意書きを追加。
2015年10月20日 対応マイコンにATmega88/88V/168Pを追加した。
2015年11月17日 Avrdudeと組み合わせることで汎用のAVRライタになる事の説明を追加。
2015年12月03日 「はじめに」の章を一部書き直した。
ブートローダ/スケッチライタの外観
ブートローダ/スケッチライタの外観

このページで紹介しているブートローダ/スケッチライタは、キットとして販売しています。

Arduino用ブートローダ/スケッチライタキット 商品名 Arduino用ブートローダ/スケッチライタキット
税抜き小売価格 2200円
販売店 スイッチサイエンス 妙楽堂
サポートページ

目次

1. はじめに … 1ページ
2. 今回製作したArduino用ブートローダ/スケッチライタの概要 … 1ページ
3. 回路図・アートワーク・部品表 … 1ページ
4. 回路構成の簡単な説明 … 1ページ
5. 組み立て方 … 2ページ
5-1. 組み立て上の注意点 … 2ページ
5-2. U1のATmega328Pにブートローダを書き込む(キットの場合は不要) … 3ページ
5-2-1. ブレッドボードを使って、ブートローダを書きこむ方法 … 3ページ
5-2-2. ブートローダライタシールドを使って、ブートローダを書きこむ方法 … 3ページ
5-3. U1のATmega328PにArduinoISPのファームウェアを書き込む(キットの場合は不要) … 4ページ
6. 使い方 … 5ページ
6-1. 準備作業(USBシリアル変換器のドライバのインストール) … 5ページ
6-2. ATmega168/328PにArduinoのブートローダを書きこむ方法 … 5ページ
6-3. ブートローダ書き込み済みのATmage168/328Pにスケッチを書き込む方法 … 6ページ
6-4. スケッチを書き込んだATmega168/328Pを動かしてみる … 6ページ
6-5. ブートローダなしでATmega168/328Pにスケッチを書き込む方法 … 7ページ
6-6. ATmega88/88V/168PにArduinoのブートローダを書き込む方法 … 7ページ
6-7. ブートローダ書き込み済みのATmega88/88V/168Pにスケッチを書きこむ方法 … 7ページ
6-8. USBシリアル変換器の出力電圧に関する注意点 … 7ページ
6-8-1. 原則 … 7ページ
6-8-2. ブートローダ書き込みの場合やブートローダを使わずにスケッチを書き込む場合 … 7ページ
6-8-3. ブートローダを利用してスケッチを書き込む場合 … 7ページ
6-8-4. 実用的なUSBシリアル変換器の出力電圧の決め方 … 7ページ
6-9. ATTiny44/84/45/85を使った開発の方法 … 8ページ
6-9-1. ATtiny44/84/45/85とは? … 8ページ
6-9-2. ATtiny44/84/45/85の入手方法 … 8ページ
6-9-3. ATtiny44/84/45/85のスケッチをArduino IDEで開発する方法 … 8ページ
6-9-3-1. ATtinyサポートファイルの入手法・インストール法(Arduino IDE 1.0.Xの場合) … 8ページ
6-9-3-2. ATtinyサポートファイルの入手法・インストール法(Arduino IDE 1.6.Xの場合) … 8ページ
6-9-3-3. ATtinyサポートファイルの使い方 … 8ページ
6-9-4. ATtiny44/84/45/85にスケッチを書き込む方法 … 9ページ
6-9-5. スケッチを書き込んだATtiny44/84/45/85を動かしてみる … 9ページ
6-9-6. ATtiny85を使った作例 … 9ページ

1.はじめに

Arduinoの互換機を作ろうとすると、ATmega328PなどのAVRマイコンに、自分でブートローダを書き込む必要があります。

Arduino Uno用ブートローダライタシールドの製作(1)で紹介したとおり、以前、Arduino Unoにシールドとして装着して使うタイプのライタ(書き込み装置)を作りました。このシールドを使うと、Arduino Unoが他のプロジェクトに流用できるメリットがある反面、使う前に、Arduino UnoにArduinoISPのファームウェアのスケッチを書き込む必要があり、面倒でした。ブートローダの書込み専用に使うArduino Unoを1台用意すれば、いちいちファームウェアを書き込む必要はないのですが、3千円近くするArduino Unoを、ブートローダの書込み専用にするのはもったいない気がしました。

そこで今回、Arduino互換機を内蔵したライタ基板を製作することにしました。単にArduinoとブートローダライタを一枚の基板に融合しただけではなく、この後説明するように、いくつかの付加機能も追加しました。

2.今回製作したArduino用ブートローダ/スケッチライタの概要

今回製作したArduino用ブートローダ/スケッチライタの概要を説明します。

・Arduino互換機を内蔵したArduinoISP AVRライタ

ArduinoISPを利用したAVRマイコンのフラッシュメモリライタです。Arduino互換機を内蔵しているため、Arduino Uno用ブートローダライタシールドの製作(1)で紹介したシールドや、市販のAVR ISPシールドと違い、Arduinoの助けを借りずに単独で動作します。

・ATmega88/88V/168/168P/328PおよびATtiny44/84/45/85に対応

Arduino Uno/Duemilanove/Proなどに使われているATmega168/328P(28ピン)といったマイコンだけでなく、より安価なATmega88/88V/168P(28ピン)といった省メモリのマイコンや、よりピン数の少ないATtiny44/84(14ピン)やATtiny45/85(8ピン)といったマイコンに対応しています。

省メモリのマイコンは、コスト要求の厳しいプロジェクトに、ピン数の少ないマイコンは、小型化の要求されるプロジェクトに威力を発揮します。

写真1、左からATtiny85、ATtiny84、ATmega328P
↑ 画像をクリックすると拡大
写真1、左からATtiny85、ATtiny84、ATmega328P
・ATmega88/88V/168/168P/328Pではブートローダの書込みとスケッチの書込みの両方に対応

ATmega88/88V/168/168P/328Pでは、(1)ブートローダの書込み、(2)ブートローダを利用したスケッチの書込み、(3)スケッチ単独の書込みに対応しています。

・ATtiny44/84/45/85ではスケッチの書込みに対応

ATtiny44/84/45/85では、スケッチの書き込みに対応しています。

・スケッチの書き込み用に8MHzと16MHzの2つの水晶発振子を搭載

ブートローダを利用してスケッチを書き込む際に必要になる水晶振動子を、8MHzと16MHzの2種類搭載しました。(ATmega88/88V/168/168P/328Pで利用可) 水晶振動子を切り替えることで、クロック周波数が8MHzのArduinoと16MHzのArduinoの両方のスケッチの書き込みができます。

写真2、2つの水晶振動子
写真2、2つの水晶振動子
・USBシリアル変換器は外付け

ブートローダを書き込むような人はUSBシリアル変換器を持っている場合が多いと想定し、コストダウンのためにUSBシリアル変換器を内蔵しませんでした。別途FTDI BASICなどを用意していただく必要があります。

・ZIFソケットを搭載

ZIFソケットを搭載しているので、マイコンのリードを傷めることなく、書き込みができます。

写真3、ZIFソケット
写真3、ZIFソケット
・ICSP端子を搭載

ICSP端子を搭載しているので、既に基板に実装されたマイコンにも書き込みができます。書き込み時は、ターゲット基板の電源を使うことも、ライタ側のICSP端子から電源を供給することもできます。

写真4、ICSP端子
写真4、ICSP端子
・書き込み電圧は5Vと3.3Vに両対応

外付けのUSBシリアル変換器を交換することにより、書込み電圧を5Vと3.3Vのいずれにも設定できます。(ただし、16MHzの水晶発振子を使って書き込む場合は、5Vで書き込んでください。これは、AVRマイコンの特性上、3.3Vの電源電圧では、16MHzの動作が保証されないためです)

・Avrdudeと組み合わせて汎用AVRライタとして使用可能

AVRマイコン用フラッシュメモリ書き込みソフトのAvrdudeと組み合わせることで、汎用のAVRライタとして使用できます。Atmel Studio上からプログラムなどを書き込む操作も可能です

・書き込み状態のモニタ用のLEDと圧電ブザーを搭載

書き込みの様子をモニタするために、LEDと圧電ブザーを搭載しています。光と音で書き込みの進み具合をモニタできます。ジャンパピンの設定により、音を止めることもできます。

・過電流保護用のポリスイッチを搭載

過電流保護用のポリスイッチを搭載しました。作業中に電源をショートするようなことがあっても、ポリスイッチが過電流を遮断し、USBポートを保護します。

写真5、ポリスイッチ
写真5、ポリスイッチ

3.回路図・アートワーク・部品表

今回作った基板の回路図を次に示します。

図1、ブートローダ/スケッチライタの回路図
↑ 画像をクリックするとPDFファイルで表示
図1、ブートローダ/スケッチライタの回路図

また、アートワークを次に示します。

図2、ブートローダ/スケッチライタのアートワーク図
↑ 画像をクリックすると拡大
図2、ブートローダ/スケッチライタのアートワーク図

Eagle6.5.0用の回路図とアートワークのファイルは、次のリンクからダウンロードできます。

ブートローダ/スケッチライタ基板Rev.BのEagle6.5.0用ファイル bootloader_sketch_B.zip (35kB)

部品表を、表1に示します。

表1、ブートローダ/スケッチライタの部品表
数量 部品番号 部品の種類 パッケージ 仕様、型番 備考 参考単価(円)
2 R3, R4 カーボン抵抗 ランド400mil間隔 240Ω±5%,1/4W   4
8 R1, R7, R12, R14, R15, R16, R17, R19 カーボン抵抗 ランド300mil間隔 1kΩ±5%,1/8W   4
3 R2, R5, R18 カーボン抵抗 ランド300mil間隔 10kΩ±5%,1/8W   4
5 R6, R8, R10, R11, R13 カーボン抵抗 ランド300mil間隔 1MΩ±5%,1/8W   4
1 R9 カーボン抵抗 ランド300mil間隔 実装せず   -
4 C1, C2, C5, C6 セラミックコンデンサ ランド100mil間隔 22pF,50V   10
8 C3, C7, C8, C9, C10, C11, C12, C13 セラミックコンデンサ ランド100mil間隔 0.1μF,50V   21
1 C4 アルミ電解コンデンサ ランド100mil間隔 10μF,16V   21
1 U1 マイコン DIP28,300mil ATMEGA328P-PU 基板に直付けせずにソケットを使う 250
1 U2 汎用ロジック DIP14,300mil 74HC132N   68
1 D1 小信号ダイオード ランド300mil間隔 1N4148   10
7 LED1, LED2, LED3, LED4, LED5, LED6, LED7 LED ランド100mil間隔 Φ3mm   21
2 X1, X3 水晶振動子   8MHz   178
1 X2 水晶振動子   16MHz   178
1 BZ1 他励式圧電ブザー   PKM13EPYH4000-A0   30
1 CN3 ZIFソケット 28P,300mil 228-3341 日本では入手困難  
1 F1 ポリスイッチ ランド200mil間隔 RXEF025   30
2 SW1, SW2 スライドスイッチ   JS202011CQN IS-2235で代用可 25
1 CN8 直ヘッダ   2X3ピン,2.54mmピッチ 2X25ピンヘッダを切断して使用  
3 CN5, CN6, CN7 直ヘッダ   2X6ピン,2.54mmピッチ 2X25ピンヘッダを切断して使用  
3 CN2, CN4, CN9 直ヘッダ   1X2ピン,2.54mmピッチ 1X40ピンヘッダを切断して使用  
1 CN1 L字型ヘッダ   1X6ピン,2.54mmピッチ   10
1   ICソケット   DIP28,300mil U1の所に使う 45

今回は専用基板を起こしましたが、ユニバーサル基板でも十分作れます。次に示す写真は、ユニバーサル基板で作った試作機と、専用基板で作った完成品を比較したものです。左側に写っている試作機は、圧電ブザーやICSP端子がなかったり、モニタ用のLEDが少なかったりしますが、基本的には完成基板と同様の回路です。

写真6、ユニバーサル基板による試作機との比較
↑ 画像をクリックすると拡大
写真6、ユニバーサル基板による試作機との比較

4.回路構成の簡単な説明

U1のATmega328Pとその周辺回路がArduinoの互換機になっています。8MHzの水晶振動子を接続しており、Arduino Pro 328 3.3V/8MHzのブートローダを書きこみます。Arduino Unoの互換機にしなかったのは、書込み電圧を3.3Vまで下げられるようにとの配慮です。ATmega328Pの電源電圧を3.3Vまで下げると、16MHzのクロックでは、データシート上ではスペックを超えてしまいます。(実力的には16MHzでも動くようですが) そのため、クロック周波数を8MHzに下げました。

CN3がターゲットのDIPマイコンを挿入するZIFソケットです。ZIFソケットを使うことによって、マイコンの抜き差しの際に、リードを傷める心配がなくなります。今回は基板を小さくするために、300mil幅のDIP IC専用の、幅の狭いZIFソケットを採用しました。このソケットは国内では入手困難なため、中国から輸入しました。ユニバーサル基板などで自作する場合は、マルツで300mil幅と600mil幅のDIP IC兼用の、28ピンのZIFソケットが安価に入手できますから、それを利用すると良いでしょう。

CN8がICSP端子のヘッダです。基板に実装されたマイコンにブートローダやスケッチを書きこむ場合は、このヘッダからターゲット基板上のICSP端子のヘッダまで、6芯のケーブルで接続します。

CN9は、ICSP端子からターゲット基板に電源供給するかどうかを決める、ジャンパピン用のヘッダです。CN9がオープンの場合は、書き込み時に、ターゲット基板側で電源を確保する必要があります。CN9をショートすると、ライタ側からターゲット基板に電源を供給できます。

CN1は、USBシリアル変換器を接続するコネクタです。この端子を通じて、パソコンと情報のやり取りをします。またCN1からは、電源の供給も受けます。5V出力のUSBシリアル変換器をCN1に接続すると、ターゲットのマイコンに5Vで書込みします。また3.3V出力のUSBシリアル変換器をCN1に接続すると、3.3Vで書き込みます。

SW1は、ZIFソケットにマイコンを挿入して書き込む場合に、CN1とZIFソケットを直結するか(THROUGH側)、U1のArduinoISPファームウェアを書き込んだArduino互換マイコンを経由するか(ArduinoISP側)を選択します。ATmega88/88V/168/168P/328Pに書き込む場合、ブートローダを書きこむ場合や、ブートローダを使わずにスケッチを直接書きこむ場合は、ArduinoISP側に切り替えます。ブートローダ書込み済みのマイコンにスケッチを書きこむ場合は、THROUGH側に切り替えます。ATtiny44/84/45/85に書き込む場合は、SW1を常にArduinoISP側に切り替えておきます。

U2のNANDゲートは、SW1によりArduinoISPを使うかどうかを選択できるようにした事に伴って必要になったゲートです。

CN5~CN7の3つの2X6ピンヘッダは、ターゲットマイコンの種類を選択します。ATmega88/88V/168/168P/328Pに書き込む場合は、CN5にジャンパピンを6つ接続し、CN6とCN7にはジャンパピンを接続しません。ATtiny44/84に書き込む場合は、CN6にジャンパピンを6つ接続し、CN5とCN7にはジャンパピンを接続しません。ATtiny46/85に書き込む場合は、CN7にジャンパピンを6つ接続し、CN5とCN6にはジャンパピンを接続しません。このように、マイコンの種類ごとのピンアサインの違いを、ジャンパピンにより設定できるようにしてあります。

CN2のヘッダは、ショートすると、U1のArduinoISPのファームウェアを、オンボードで書き換えることができます。通常の使用時にはCN2はオープンにしておきます。

次のページでは、組み立て時の注意点について説明します。

ツイート
シェア
このエントリーをはてなブックマークに追加
フォロー
目次へ  前のページへ (1) (2) (3) (4) (5) (6) (7) (8) (9) 次のページへ

このページで使われている用語の解説

関連ページ

関連製品

Arduino用ブートローダ/スケッチライタキット 商品名 Arduino用ブートローダ/スケッチライタキット
税抜き小売価格 2200円
販売店 スイッチサイエンス 妙楽堂
サポートページ
Arduino Uno用ブートローダスケッチライタシールドキット 商品名 Arduino Uno用ブートローダスケッチライタシールドキット
税抜き小売価格 1200円
販売店 スイッチサイエンス
サポートページ
このサイトの記事が本になりました。
書名:Arduino 電子工作
ISBN:978-4-7775-1941-5
工学社の書籍の内容の紹介ページ
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。
サイトマッププライバシーポリシーお問い合わせ用語集
しなぷすのハード製作記