« [iPhone][Jailbreak]シリアルポート実験用のDock Connectorできた | Main | [AVR]ハローキティのAVRライター新発売!! »

2008.11.17

[AVR][Gainer]小型Gainer互換機pepperを作って遊んでみた

AVR ATtiny45/85を使ったGainer互換機、pepperを作って遊んでみた。

morecat lab.さんでは、このほかATmega88Pを使ったginger、ATmega644Pを使ったsugarなどのGainer互換機を作られているが、その小ささに惚れ、Pepper-MIDIというインターフェースを接続すると学研の付録シンセ、SX-150をMIDI化できるということもあって、pepperを選択した。

とりあえず部品のレイアウトは公式のプリント基板と同じにして、ジャンパを飛ばしまくってつじつまを合わせてみた。

Pepper1

▲所定のサイズの基板で作らないと価値半減なので、ユニバーサル基板からの切り出しをがんばった。

Pepper2

▲手のひらでコロコロともてあそべるサイズ。

Pepper3

▲USBに直結可能。通常この手のものに必要な、12MHzのクリスタルさえ省略した作りになっている。

Pepper4

▲CdSを接続してみた。pepperが小さいので、USBケーブルの先に、センサなどを直結できる感覚。

Pepper5

▲学研の付録シンセ、SX-150を接続するインターフェース、Pepper-MIDI。

Pepper6_2

▲Pepper-MIDIを介してSX-150を接続。

Processingからのアクセス(Mac OS X)

pepperはGainerとして機能するので、pepperをProcessingで使うには、Gainer用のライブラリをProcessingにインストールすればいい。 Gainerの公式ページには、Mac OS Xでは「/Applications/Processing/libraries/serial/macosx_setup.command」を実行しろ、という説明があるが、これは古い手順で、そのようなファイルは無い。

現在は、「/Applications/Processing/Contents/Resources/Java/Libraries/serial/library/RXTXcomm.jar」を、「/Applications/Processing/Contents/Resources/Java/Libraries/gainer/library/RXTXcomm.jar」へコピー、というのが正しい手順となる。

pepperのピン配列は以下の通り。

+5V ai0 ao1 ao0 ai1 GND

アナログ入力二つがアナログ出力二つを囲むような形になっている。 また、Processingからpepperの各ポートへのアクセスは、以下のようなコードでできる。

//出力
//2番目の引数は0〜255の整数
//ao0
gainer.analogOutput(0, 0);
//ao1
gainer.analogOutput(1, 255);

//入力
int res0, res1;
gainer.peekAnalogInput();
//ai0
res0 = gainer.analogInput[0];
//ai1
res1 = gainer.analogInput[1];

※「gainer.peekAnalogInput()」を実行しないと、値が取得できないので注意。

デフォルトのCONFIGURATION_1にはデジタルI/Oが無いので、四つあるポートはすべてアナログ系の関数でアクセスする。

|

« [iPhone][Jailbreak]シリアルポート実験用のDock Connectorできた | Main | [AVR]ハローキティのAVRライター新発売!! »

Comments

素敵なレポートとデモありがとうございます。
無事動いている姿を見て、感動しています。
ところで、pepper-MIDIの制御プログラムは何をお使いでしょうか?もしかして、Gainerのプログラムをそのまま使っていますか?ファームを書き換えるとMIDI経由で制御できるので、MIDIシーケンサからコントロールすると面白いですよ。

Posted by: もあ | 2008.11.17 at 10:27 PM

もあさんコメントありがとうございます。

親指大のGainer互換デバイスって、とてもユニークですね。
思わずいろいろな角度から眺めてしまいます。
素敵なものを作っていただいて、こちらこそありがとうございます。
エレキジャックの連載中の記載によると、メカロボショップでpepperの組み立てキットも発売されるようですね。
それを知っていれば、そっちを選んだかもしれません(笑)。

pepper-MIDIの件はもちろん承知していますが、今GarageBandという外部MIDI機器を操作できないソフトウェアしか入っていないもので、まだ試していません。

Gainer互換のFirmwareの方を入れたまま試してみたら、結構面白かったのでそれを掲載した次第です。

ちなみに、回路図のPIN名称が間違っていませんか?
本来……

1: PB5
2: PB3
3: PB4

という並びのところ、

1: PB5
2: PB4
3: PB3

と記載されています。エレキジャックの連載にある写真のプリントパターンを凝視し、どちらが本当か確認した次第です。

http://web.mac.com/kuwatay/morecat_lab./Download_files/pepper-schematic.png

ちょっとトラブルっぽいことに遭遇しているので、報告致します。

デフォルトのCONFIGURATION_1時のanalogOutput0の挙動が少しし変で、analogOutput0を0にしても、接続したLEDが消灯せず、少し光り続けるのです。(以下写真参照: 写真右端がanalogOutput0、その左隣がanalogOutput1。analogOutput1の方は消灯状態)

http://moyashi.air-nifty.com/pepper-trouble1.jpg
http://moyashi.air-nifty.com/pepper-trouble2.jpg

↓写真の状態を撮影したときに実行したコード

import processing.gainer.*;

Gainer gainer;
void setup(){
gainer = new Gainer(this);
size(250, 300);
}

void draw(){
gainer.analogOutput(0, 0);
gainer.analogOutput(1, 0);
}

Processingは0156 BETA を使っています。

テスターで短絡などが無いこと、また回路図通り配線されていること、analogOutput0とanalogOutput1とが、電気的に等しいこと(VCCとの間1.4kΩ、GNDとの間1.2kΩ)を確認しています。
また、USBに接続直後はanalogOutput0、analogOutput1、共に薄くLEDが光った状態で、Processingやgainer-rubyでインスタンスを生成後に、analogOutput0のみ写真の状態になることから、ソフトウェア的な問題ではないかと思っています。一度この状態になってから、再度Processingやrubyでgainerのインスタンスを生成してpepperの初期化処理をさせると、一度LEDが消灯して、初期化処理後にまたこの状態になります。

心当たりはございますでしょうか?

gainer.jar、RXTXcomm.jarは、以下のものと差し替えています。

http://gainer.svn.sourceforge.net/viewvc/gainer/trunk/gainer/libraries/processing/libraries/gainer/library/

ginger / pepper向けのGainer.javaへのパッチが出ていますが、scmリポジトリにも10月4日のタイムスタンプのソースを見つけられなかったので適用していません。10月1日のものに手動でパッチを当てたのですが、結局コンパイルの方法が分からなかったので未遂です。

http://gainer.cc/forum/index.php?topic=293.0

gainer-rubyでも同様の症状が出るので、ライブラリの方ではないのかなと思っていますが。

Posted by: moyashi | 2008.11.18 at 04:30 AM

コメントありがとうございます。
・Garage BandでMIDIをコントロールするには、midiOというソフトをインストールしてください。実はわたしもGarageBandしか持っていません。
(参考 http://www.garagers.net/tips.php?story=15)
・回路図の誤りの指摘ありがとうございます。回路図と基板パタンの作成にEagleを使っているのですが、そのライブラリが誤っているようですね。次の機会に修正します。
・アナログポートの件はこちらで確認してみます。rubyのライブラリでも同じ症状だとすると、pepperのファームウエアのバグの可能性が高いのではないかと思います。
・ライブラリですが、ginger用にパッチを当てたバージョンを、当面メインラインと別にリリースする予定です。私の使ってものをそのままリリースしても良いのですが、Windowsでのテストがまだですので、少々お待ち下さい。

Posted by: もあ | 2008.11.18 at 06:52 AM

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/13760/43138474

Listed below are links to weblogs that reference [AVR][Gainer]小型Gainer互換機pepperを作って遊んでみた:

» 小型Gainer互換機pepperを作って遊んでみた [MAKE: Japan]
moyashiさんが動画でpepperの使い方をざっくり見せてくれています。自... [Read More]

Tracked on 2008.11.20 at 10:25 AM

» MAKE: Japanにもpepperが紹介されています。 [Sim's blog]
Make: Japanの「小型Gainer互換機pepperを作って遊んでみた」という記事でpepperを使っているmoyashiさんが紹介されています(ひとりぶろぐ「小型Gainer互換機pepperを作って遊んでみた」。 ビデオではCDSを使った光センサーの実験と、SX-150につないで音を出しているところが見れます。 使いこなしてるって感じですね。エレキジャックの連載も更新されたので私もお勉強しなきゃ^^ ... [Read More]

Tracked on 2008.11.20 at 11:49 PM

» ひとりごと/2008年12月11日〜 [なんかいろいろ (PukiWiki/TrackBack 0.3)]
ひとりごと コメント: http://moyashi.air-nifty.com/hitori/2008/11/avrgainergainer.html -- 2008-12-14 (日) 03:59:44 New! http://www1.bbiq.jp/kougaku/link_videocap.html -- 2008-12-14 (日)... [Read More]

Tracked on 2008.12.14 at 03:59 AM

« [iPhone][Jailbreak]シリアルポート実験用のDock Connectorできた | Main | [AVR]ハローキティのAVRライター新発売!! »