もうすぐ春休み はんだ付け一切不要 GAINER miniクローンを作ろうという件につき

本内容はGAINER miniが安定して動くようになったあたりから、ボチボチ書いていたものです。
既にSimさん、senshuさんが、ブートローダ版のGAINER miniクローン作成のインストラクションを公開されたため、時期を逸してしまいましたが、導入の敷居がやや低いことや途中まで書きかけていたこともあり、追記して公開することにしました。

    • -

0.はじめに(読み飛ばし可)
日本発フィジカルコンピューティングバイスGAINER、その互換機GAINER miniをはんだ付け等一切無しで(安く)作ってしまおうという試みです。もともと2008年末にGAINER環境が欲しくて(安く)手に入らないか探していたところ、Sim's blogにてGAINER miniとPIC18F2550基板の類似性をSimさんともあさんが言及されているのに気付き、試してみたのが発端です。
安定して使えるまでには右往左往しましたが、皆さまのご努力により満足できるところまでこぎつけました。
うまく動かないと騒ぎ出した張本人として、なんにもしないのも問題かと思い、せめて後続の方が楽に続くことができるように操作手順をまとめてみました。
難易度は少々高めですが、はんだ付けや細かい工作は一切ありませんので、フィジカルコンピューティングを体験したいけれど、余りお金をかけたくない方、GAINER miniを複数使いたい方にはピッタリかと思います。
また、技術知識に余裕のある方は、Simさん、senshuさんがブートローダとファームを分割することによって、導入以降のPICライタが不要となる手順を紹介されています。一足飛びにそちらに移られる方が良いでしょう。
http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?memo%2FUBW#content_1_12

# GAINER miniの記述について:本家GAINERは大文字で統一されていますが、GAINER miniはGAINERが大文字だったり小文字だったりと不定のようです。ホームページ記述ではGainer miniで統一されているようですが、ここでは(かなり書いてしまったこともあり)GAINER miniで統一します。

1.部品を集めよう
以下に購入するべき部品を書きます。
いずれも最小限しか書いていませんので、予め作りたい回路が有る方はそれも併せて購入してください。
また、価格は2009年2月3日に私が確認した時点での価格です。さらに、部品在庫もURLもいつまで生きているかわかりませんので、ご注意ください。

絶対に必要なもの(必要最小限の構成です)

USBマイコンボード 完成品(PIC18F2550)
GAINER miniクローン本体となる中核部品です。
http://akizukidenshi.com/catalog/g/gI-02161/
\1,000

USBケーブル A(オス)-B(ミニオス)
USB経由でデジタルカメラ等を接続するとき良くつかわれるタイプです。
ですので、デジカメ等の付属ケーブルがそのまま使える方は、購入する必要はありません。
また、後述するPICkit2を購入した場合、付属するケーブルがそのまま使えますので、この場合も購入する必要はありません。
持っていない場合、電気店等で購入すると予想外に高くつきますが、ダイソー、Seria等の100円ショップで売っているものでかまいません。Aオスコネクタ側をPC本体に、Bミニオスコネクタ側をマイコンボードに接続します。
\100

PICライタ(PIC18F2550に書き込める環境)
USBマイコンボードにGAINER miniのファームウェア(動作に必要なプログラム)を書き込むのに必要です。
PIC18Fに書き込めないライタ環境もあるので注意してください。
新規に購入する場合は純正のPICkit2をお勧めします。値段、機能共に申し分ありません。
http://akizukidenshi.com/catalog/g/gM-02508/
\3,500
PICkit2を使用する場合、付属のCDの内容は古いため、
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en023805
より最新のソフトウェア(DownloadsのWindows Software & Firmware)をダウンロードし、予めインストールしておいてください。
.NET Frameworkがインストールされている環境ではPICkit 2 (バージョン番号)、.NET Frameworkがインストールされていない、または良くわからない方はPICkit 2 (バージョン番号) Install with .NET Frameworkをダウンロードします。

ブレッドボードおよびジャンパリード
はんだ付け無しで電子回路を組めるようになります。GAINER miniクローンはブレッドボードに刺して使います。
セットになっているものが便利です。
ブレッドボード EIC−102J
http://akizukidenshi.com/catalog/g/gP-02314/
\600
ブレッドボード EIC−102BJ
http://akizukidenshi.com/catalog/g/gP-00285/
\700
のいずれかが盤面の広さと価格のバランスが良く、入門に適当だと思います。
もちろんもっと広いものを買ってもかまいません。配線が楽になります。

わからないことは「できるだけ」自分で調べる努力
世の中には詳しい方が沢山いらっしゃいますが、その方が原因を特定しやすいように自分なりに問題点を整理することが必要になります。
そのための努力は是非惜しまないでください。
\0

あると便利なもの(ここまでで基本機能を実装します)

LED及び電流制限抵抗
LEDは好きな色を選んでかまいません(オリジナルGAINER miniは青です)。
電流制限抵抗はLEDの特性に合った抵抗値を選ぶ必要があります。
よくわからない方は目安ですが、青・白は150オーム、赤・緑・黄などは330オームを選んでください。
電流制限抵抗とセットで販売されているLEDもあります。
また、イレギュラーですが、100円ショップで売っているLED内蔵のピカピカ棒(製品名 PIKAPIKA BOU、LIGHT STICK等)をバラすと4つ位LEDが取れますのでお得です。その場合、電流制限抵抗は無いので、別途330オーム程度の抵抗を用意してください。

タクトスイッチ(押しボタンスイッチ
タクトスイッチ 100個セット
数が多すぎるので、他のスイッチを検討してもいいかも知れません。
http://akizukidenshi.com/catalog/g/gP-01282/
\700

抵抗
10kオーム
http://akizukidenshi.com/catalog/g/gR-25103/
\100

2.USBマイコンボード(以下ボード)にファームウェア(以下ファーム)を書き込む
ボードにファームを書き込むことで、GAINER miniとして機能します。
周辺回路が必要無ければ、ファームを書き込んだボード単体でGAINER miniとして使用することができます。

公式サイトでもファームが配布されていますが、現在純正ファームウェア(GainerMini_firm090115)はUSBがOHCI環境では通信が不安定になるということが分かっています。
Tsuneoさんが問題点を修正され、最適化したファーム(GainerMini_firm090115_r02)を掲載しておきましたので、こちらをご利用ください。
http://www.geocities.co.jp/hikohiko/
また、同ファームのソースファイルは別途Tsuneoさんが
http://homepage2.nifty.com/Notus/GainerMini_firm090115_r02.zip
で配布されています。

ボード上のJP1に白いショートピンが刺さっていますが、これを抜いてください(ファーム書き込み後戻しますので無くさないように)。
ボードにファームを書き込むときは、各PICライタの手順にしたがってください。
PICkit2の場合、PICGAMES.ORGさん
http://www.picgames.org/modules/tinyd1/index.php?id=11
が簡潔にまとめられていますので、参考にしてください。
PICkit2で注意すべきはファーム中で全てのコンフィグレーションワード(設定だと思ってください)が指定されているわけでないので、その旨の警告(黄色)が出てきます。指定していない箇所はPICkit2側でデフォルト設定にしてくれますので、そのまま進めてください。

ここの難易度が一番高いです。逆に言えばクリアすればGAINER miniはできたも同然です。
書き込み終わったらボードを取り外し、ボード上のJP1の2と3の間にショートピンを戻してください。

3.PCとの通信がうまくいくか確認する
http://www.gainer-mini.jp/driver.html
にUSBドライバのインストール方法が記載されています。
もあさん執筆のGinger/Pepper/Sugarでフィジカル・コンピューティング
http://www.eleki-jack.com/FC/
の実験に取り組みたい方はここから5章まで読み飛ばしてかまいませんが、念のためにターミナルソフトで動作確認しておくとよいでしょう。
Tera termが高機能なターミナルソフトとしてお勧めです。
http://www.forest.impress.co.jp/lib/inet/servernt/netuty/utf8teraterm.html

起動すると「Tera Term: 新しい接続」画面が表示されますので、シリアルを選択し、ポートはCOM番号の後に(GAINER mini)と付いているものを選択します。

Tera Termで動作確認できた設定例を示します。
設定 > シリアルポート
ポート:(ボードが接続しているポート)
ボー・レート:9600
データ:8bit
パリティ:none
ストップ:1bit
フロー制御:none

設定 > 端末
漢字-受信:UTF-8
漢字-送信:UTF-8


設定が終わったら
設定 > 設定の保存
を選択すると、以降設定する必要が無くなります。
?*と打つとバージョン番号が表示されましたか?
!*と表示されてしまう場合は数回?*を繰り返して入力してみてください。

4.周辺回路を配線する
写真は配線例です。

ブレッドボードの中央の溝にまたがるようにボードを刺します。
まず、Vccから+のラインに、GNDから−のラインに配線します。
GNDはボードの両サイドに出ていますが、Vccは片側のみなので、Vcc側の+から反対側の+まで配線します。
その後は回路図(3ページ目)
http://www.gainer-mini.jp/download/Pattern/Gainer_mini_patterns.pdf
を良く見ながら、LED、電流制限抵抗、10kオームの抵抗、スイッチを配置していきましょう。
LEDは足の長い方がVcc側(アノード)、短い方がGND側(カソード)になるようにブレッドボードに刺します。
# 稀に足の長い方がカソードという製品があるそうですが。

秋月ブレッドボードとジャンプワイヤでの配線レシピ例
例えばA1-A15(緑)と書いてあればA1とA15を緑のジャンプワイヤを使って配線するという意味です。
使えない場合もあるので、参考程度にしてください。
J5-マイナス(橙)
J6-プラス(黄色)
H7-H17(茶色)
J20-プラス(黄色)
I20-I16(電流制限抵抗)
F16(アノード、足の長い方)-F17(カソード、足の短い方)(LED)
E20-F20(橙)
A7-マイナス(黄色)
A14-A16(赤)
A30-プラス(橙)
A18-マイナス(黄色)
C16,E16,C18,E18(タクトスイッチ)
# ボタンを押すと16と18が導通するようにしてください。
B16-B20(10kオーム抵抗)
ボードはUSBコネクタが1側に来るように、14番ピン(NC)がC1になるように刺してください。

配線ミスが無いか、よく確認しましょう。
本ボードは保護回路が付いていないため、最悪の場合はPCを巻き込んで壊れてしまう可能性があります。
※ あくまで「可能性」ですが。
配線に問題が無ければ、USBケーブルを繋いでください。
外付けのLEDがゆっくり点滅をすれば成功です。
外付けLEDがつかない場合、ただちにUSBケーブルを抜き、配線を再確認してみてください。
次にLEDの向きを確認してみてください。極性(部品の決まった向き)が逆になっていませんか?
また、ボード上のLED(黄色)がつかない場合は、ボード上のJP1の2と3の間に白いショートピンが刺さっているかどうか確認してください。

5.サンプルプログラムを動かしてみよう
http://www.gainer-mini.jp/processing_tutor.html
を参考にProcessing環境を作ってみてください。
Processing環境をお勧めする理由は、無料でFlash開発環境を構築するのは手間がかかるということに尽きます。
このチュートリアルで紹介しているFile > examples > Gaienrmini > buttonの他にFile > examples > gainer_examples >LEDも追加部品を使わずに実行できます。
実行すると、小さい四角が表示されますので、その中をマウスでクリックしてみてください。
LEDがクリックしたタイミングで点滅しましたか?

6.次に何をしたらいいの?
ここまでたどり着いたあなた、実はもう完成しています。遅れましたがおめでとうございます。

ボードと純正GAINER miniのピンの対応は
AIN0 RA0 AOUT0 RB7
AIN1 RA1 AOUT1 RB6
AIN2 RA2 AOUT2 RB5
AIN3 RA3 AOUT3 RB4
DIN0 RA5 DOUT0 RA4
DIN1 RB2 DOUT1 RC0
DIN2 RB3 DOUT2 RC1
DIN3 RB1 DOUT3 RC2
になっています(回路図読み)。

はじめはGAINER miniクローン化にご助言いただいたもあさんが執筆されている
Ginger/Pepper/Sugarでフィジカル・コンピューティング
http://www.eleki-jack.com/FC/
をなぞって実験してみるのが理解が早いと思います(この内容は本として出版予定なので、そちらをお求めになってもいいでしょう)。GAINERの互換ボードPepperについて記載されていますが、上記のピン対応を間違えなければそのまま本ボードで利用可能です。

後はGoogleYahoo!でGAINERで検索してみてください。
また、GAINER関連の書籍が出ています。
さまざまな方がGAINERを使って、さまざまな応用や芸術を実現されているのが分かるでしょう。
最初はその回路を真似してみてください。
また、はんだ付けを覚える(学校で習った方は思い出す)と、世界はさらに広がると思います。
面白い使い方を思いついたら、是非教えてください。

7.付録
3章で少々書きましたが、本ボードには保護回路がついていないため、手順を誤ると最悪の場合PCを巻き込んで壊れてしまいます。
保護回路の追加にははんだ付けが必要となりますので本編には含めませんでしたが、この回路追加は是非行うことをお勧めします。
JP1のピンヘッダを外したあと、
ポリスイッチ 250mA (500mAで遮断)
http://akizukidenshi.com/catalog/g/gP-01354/
\50
を2と3の間にはんだ付けしてください。極性はありません。
JP1のピンヘッダを外さずに、ピンソケットをピンヘッダにかぶせて、その上のポリスイッチを実装し、取り外しできるようにしてもいいですね。その場合、丸ピンのピンソケットを使うと、JP1のピンヘッダに刺さらないので注意してください。

8.参考にしたページ(順不同)
Sim's blog http://blog.goo.ne.jp/sim00
morecat lab. http://web.mac.com/kuwatay/morecat_lab./Welcome.html
千秋ゼミ http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/
GAINER forum http://gainer.cc/forum/

9.謝辞
クローン実現に当たっては、
Sim's blogのSimさん
morecat lab.のもあさん
Tsuneoさん
GAINER forumのcrow_coffeeさん並びにpicmidiさん
千秋ゼミのsenshuさん(順不同)
のアドバイス、研究成果、調査並びに情報提供、人柱行為無くしてはできませんでした。
また、
GAINER miniのソース並びに回路図を公開していただいている株式会社アールティ様
本ボードを安価で提供していらっしゃる秋月電子通商
が無ければ、クローンを作ろうとも思いたちませんでした。
この場をお借りして御礼申し上げます。ありがとうございました。