Sim's blog

電子工作はじめてみました

rxtxSerial魔改造

2009-01-30 01:36:19 | その他
1/30 追記 Tsuneoさんが、インタラプト版のファームウェアを開発されましたので、ここに書いてある方法は使わないでください。詳しくはスイッチサイエンスさんもGainer miniのコメントをご覧ください。PIC書き込み環境がない方のために記事は残しておきます。


Gainer miniクローンがUSBハブ経由だとprocessingやgspで動作しないことに関しては、「スイッチサイエンスさんもGainer mini」のコメントでTsuneoさんが見事に解析されています。いくつか解決方法を示されています。

ここではtera termだと動くけど、processingだと駄目という場合の対策を試してみます。本来ですと、Gainer mini側のファームを改造する方が筋が良いのですが、ファーム改造まで待てないという方のための一時的な対策です。

processingやgspでは、RS232Cと通信するためにrxtxSerial.dllを呼び出します。改造は、SetCommStateというAPIの戻り値をチェックしないようにすることです。色々と改造の方法はあると思いますが、どうせつなぎなので、手っ取り早く直接dllファイルをバイナリエディタで書き換えてしまいます。

改造前のrxtxSerial.dll
入手先 Gainer miniのダウンロードページのProce55ingLib_forGAINERmini_v001.zip
日付 2008/04/01 9:56
サイズ 77759バイト
ファイル先頭から3a1c番地の内容 0F
ファイル先頭から3a1d番地の内容 85
(この後はAA 00 00 00 83 C4 F4と続きます)

この0F 85というのはjne rel32なので、nop + jmp rel32に書き換えます。具体的には90 E9です。つまり

ファイル先頭から3a1c番地の内容 0F → 90
ファイル先頭から3a1d番地の内容 85 → E9

と2バイトだけ書き換えます。

バイナリエディタはStiringというのを使いました(vectorのダウンロードページ)。
魔改造なので、何が起きても無保証です。改造前のdllファイルはバックアップしておきましょう。

どうやって見つけたかというと、dumpbin.exeを使って逆アセンブルして、SetCommStateを呼び出しているところを探して、直後のjne命令前後をバイナリエディタでサーチしました。

この改造で、今まで動かなかったUSBハブ経由でも、一応は動くようになりました。とりあえずのつなぎだということを忘れずに。

マルツに3.3V水晶発振器

2009-01-28 00:45:01 | 電子工作
なにげにマルツの新商品の水晶発振器が3.3V動作のものだったりします(キーワード「NOH」で検索すると出てきます)。形状は正方形の缶タイプです。ブレッドボードやユニバーサル基板でも使えます。周波数は以下の12種類です。

4MHz、8MHz、
10MHz、12MHz、16MHz、20MHz、
30MHz、40MHz、50MHz、60MHz、
3.58MHz、14.31818MHz

30MHz以上が420円で、それ以外は315円です。FPGAやCPLDで遊ぶ人にはうれしいアイテムです。

ピン配置は、どうなんでしょう?データシートも見つかりません。
秋月で売っているのは以下のような配置です。同じだとうれしいんですが、どうなんでしょう。
 マーク
 尖ってる
     ↓
NC  1+----+14 Vcc
     |    |
GND 7+----+8  out
  (上から見た図)

なんで、4本しかないのにピン番号が飛んでるんだろうと思ったら、これって74シリーズのピン配置を模擬したものになってるんですね。今まで気づいていませんでした。

エレキジャックNo.10

2009-01-26 00:16:52 | 電子工作
1/24発売だったので買ってきました。第1特集は「太陽電池を使った電子工作」、第2特集は「音で( ̄ー ̄)ニヤリとさせる四つの方法」です。
付録基板は「ソーラー充電バッテリ・チェッカ」、「しゃべるプリンの逆襲」、「無限にゴミが入る!?!ゴミ箱」の3つです。基板自体は今までの茶色でなくカーキ色っぽい色になっています。また、基板の切れ目がなくなっています。

しゃべる豚さんはET2008で実物を見ました。あの豚の人形は全部木彫りで作られたそうです。すごいー

「エコロジ電源を手にしよう」という記事はどうして第1特集じゃないの?と思いました。MPPT方式を使って効率よく充電しています。MPPTといえば、なんでも作っちゃう、かも。さんです。MPPT基板の配布もされています。

「HCS08マイコンにLCDモジュールをつなぐ」という記事は丁寧で感心しました。18ページもあります。3V系マイコンと5V系LCDをつなぐやり方として、PWMを使って負電源を作る方法と、DC-DCコンバータを使って5Vを作る方法の2種類が紹介されています。(関連 のりたんさんの記事1記事2)。

次回は初心に帰るのでしょうか、「光る電子工作がしたい!」という特集です。

「あの楽器」って?

2009-01-25 22:49:14 | その他
最近ニコニコ動画のニコニコ技術部で「あの楽器」という単語をよく見かけます。なんだろうと思って調べてみました。とかいいつつオススメを辿っているうちに行き着いただけなんですが^^。

初音ミクのイノセンスという動画で登場した楽器のことみたいです。初めて聞いたんですが、とてもいい曲です。

去年の12/24に、【初音ミク】 ニコニコ技術部へのお願い・これ作って! 【謎の楽器】という動画が投稿されてニコニコ技術部の人達が関心をもったようです。


JavaやiPhoneアプリのようなソフトで作ったり、実際に削って形を作っている人の動画が投稿されています。

2/1には、「あの楽器」ミーティング in 東京という「あの楽器」実体化プロジェクトに興味のある人のためのミーティングも開催されます。残念ながら参加申し込みは既に〆切です(ニコ技wikiの記事)。

「あの楽器」を見ていて思ったことです。
つっつくと三角や丸が広がっていきますが、それ以外にもなでる(?)と横線が上から下に流れるみたいな所もあります。操作によってエフェクトが変わるみたいです。
場所のマークがないので見ないで弾くのはたいへんそうです。意外と左手でも操作しているかもしれません。ギターって左手でコード(?)とか決めて右手で弾くんじゃなかったでしたっけ?なんかギターに似た感じがしました。それだと微妙な位置決めで音を出すとかじゃないので演奏が楽になるんじゃないかと思いました。
丸が出てるとき線も出てますが、左手で線を出して右手で線上のどこかを弾いているようにも見えます。

楽器といえばMTMやGanguプロジェクトでGainerを使ったエアギターのおもちゃがありました。
そういえば、赤外線をさえぎると音が出るおもちゃが以前ありました(タカラのエアギターPRO)。

ニコ技発の新しい楽器ができるといいですね。

週刊アスキー(2/3)

2009-01-22 23:01:36 | その他
1/20発売の週刊アスキー(2/3)に
「【特集】席に着く前に電源オン! 動きに合わせてPC画面を変える!電子工作でパソコンを遊ぶ」
という特集が載っています。Gainer miniも登場しています。記事を読んでそのまま作れるというようなものではなく、例えばこんなこともできる、といった紹介です。数ページにわたっています。
目次

Gainer miniクローン弐号機

2009-01-21 00:29:18 | その他のマイコン
動作検証用にブレッドボードで組んでみました。

赤くなくてすみません。

部品表
PIC18F2550       1 秋月 500円
20MHz水晶発振器  1 秋月 150円
USB-007A         1 ドスパラ 330円
0.1uF積セラ      2
10kΩ抵抗        1
LED              1
LED用抵抗        1 510Ω(LEDによって変える)

一声1000円くらいでしょうか。秋月のPIC18F2550モジュールの1000円って安すぎです。水晶発振器でなく水晶発振子にすれば、ちょっと安くなります。ただしブレッドボードだとちゃんと発振するか不安です。USBケーブルも、いらないのをちぎって作ればもっと安くなりますね。

USB-007Aは、PC用のパーツでUSB Aコネクタとパラのピンの接続ケーブルです(メーカーページ)。

ブレッドボードに直接挿せるので便利です。川崎のドスパラで見かけて買いました。

弐号機の動作状況ですが、秋月モジュールと同じです。processingからはPC直結のみ可、tera termからはPC直結、USBハブ経由、USB増設カード経由のいずれも可です。

スイッチサイエンスさんもGainer mini

2009-01-20 23:11:27 | その他のマイコン
スイッチサイエンスさんもGainer miniの取扱いをはじめました。1月中は3980円と安く販売されるそうです。


Gainer miniクローンの方は、おぐらむさんに色々教えてもらいながらぼちぼち進めています。
なぜかUSBパケットキャプチャをすると、今まで動作しなかったUSBハブ経由でも動作します。たぶんタイミングにセンシティブな動作にパケットキャプチャのディレイがはいったせいで動作するようになった雰囲気です。場所はrxtxSerial.dllの中身じゃないかと思います。
使ってみたUSBパケットのキャプチャソフトはUSB Sniffer for Windows(ファイル名はSnoopyPro.exe)というものです。

なんか全然Gainerっぽいことしてない気がします。

千石の店頭販売HC08

2009-01-18 11:34:11 | その他のマイコン
千石の店頭販売AVRの続きです。

千石電商のオンラインショップではHC08が3つしか掲載されていませんが、店頭ではもっとたくさん販売しています。店頭(秋葉原店)でメモしたものをご参考まで紹介します。型番とか値段とか間違ってるかもしれないので、あくまで参考程度ということでお願いします。店頭ではRAMサイズ等スペックも書いてあって親切です。

MC9S08QG4CE      230
MC9S08QG8CPBE    270

MC68HC908QY2CP   240
MC68HC908QY1CP   200

MC68HC908QT1ACPE 180
MC68HC908QT2ACPE 210
MC68HC908QT4ACPE 250

MC68HC908QB8CPE  370
MC68HC908QB4CPE  330

MC68HC908QY4ACPE 260

MC9S08SH8CPJ     290

MC9RS08KA1CPC     90
MC9RS08KA2CPC    100
MC9RS08KA8CPC    180

MC9S08QE8CPG     320
(棚の順番)

いっぱいあります。

フリースケールの8ビットマイコンはHC08, HCS08, RS08の3種類あります(丸文のページ)。MC68HC908から始まるのがHC08、MC9S08から始まるのがHCS08、MC9RS08から始まるのがRS08のようです。続く2文字のアルファベットがおおまかな分類(ファミリー)示しています。QGとかQTとかです。
千石さん、ぜひとも通販してください。

PICは更新されているので、雰囲気的にホームページの整備がまだ進んでいない感じです。

Gainer miniのファームウェアアップデート

2009-01-18 10:38:49 | その他のマイコン
アールティロボットショップさんのGainer miniのファームウェア(Gainer mini内の制御プログラム)がバージョンアップしています。内容はMac OSX 10.5 Leopard対応とのことです。ダウンロードページに新ファームも公開されています。
最新版への無償書き換えもしてくれるそうです(お知らせ)。2月末までです。書き換え環境を持っていない方もいるでしょうから実に親切です。

アールティさんで公開しているprocessing用のライブラリはprocessing1.0でも使えています。


うちの状況ですが、(1)本体直結、(2)USBハブ経由、(3)USB増設PCカード経由という3つの接続経路で、teratermだと(1)~(3)の全てが動作しますが、processingからは(1)だけが動作しています。ファームウェアをアップデートしても状況は変わりませんでした。
ソースを追っかけてみるとClient.javaの177行目のopenでPortInUseExceptionが発生しているようです。トレースはやりかたが分からないのでエラーメッセージから判断しました。この部分はGainerから呼び出しているrxtxSerialというRS-232C用のライブラリの内部にあります。rxtxのページはこちらです。

gainer.ccからダウンロードできるprocessing用ライブラリはprocessing1.0だとエラーが出ます(gainer.ccのダウンロードページ)。ソースを再コンパイルしてgainer.jarを作ってやるとprocessing1.0でも動作するようになります。再コンパイルに必要になるのはprocessing1.0をインストールしたフォルダにあるcore.jarとrxdxSerialのRXTXcomm.jarの2つです。クラスパスに設定してやる必要があります。確か以前masatoさんがGainer関連で色々していたような気がするので後で調べてみます。

うちの状況(tera termはok、processingはNG)だと、rxdxSerialがいけないような気がします。

3軸加速度センサーにつないでみる

2009-01-15 22:21:54 | その他のマイコン
Gainer miniクローンの続きになります。

Gainer miniクローンは通信が怪しげです。もうちょっとテストした方がいいかなと思いました。Gainerへの出力だけでなく、入力も試したいということで、エレキジャックのもあさんの連載から、3軸加速度センサーをつなぐ例題を試してみました(Ginger/Pepper/Sugarでフィジカル・コンピューティング(9))。

1つ目の例題は、フォントの登録が必要でした。
2つ目の例題は、ボールがどこかに行ってしまいます。ソースを解析してみると、38行目と39行目のanalogInput[]の添え字の0と1が逆になっていました。直すと動き始めました。

3軸加速度センサーを使ってボールをコントロールできます。
ブレッドボードを立てた状態(USBケーブルが上)を初期状態にしないとy方向の移動が手前方向にしか移動しなくなります。寝かせた状態だとy方向の読み取り値の初期値が最大値なので減る方向にしか移動できなくなるせいです。

ゲームみたいで実に楽しいです。
hamayanさんのhiiリモコンを思い出してしまいました。

Gainer miniクローン

2009-01-14 00:46:26 | その他のマイコン
PIC18F2550でLEDチカチカの続きです。

アールティロボットショップさんのGainer miniは回路図やファームウェアは公開しています。CPUはPIC18F2550を使っています。このPICはUSB機能を搭載しているので部品数が少なくなるという利点があります。以前、秋月で売っているPIC18F2550モジュールでも動かないだろうかと妄想したところ、おぐらむさんが検証してくださいました。難航しているとのことで、お手伝いしなきゃと思い、前回のLEDチカチカはPICに書き込んだりツールを使う練習でした。と思ったら、もう解決されていました。

去年のうちにもあさんも検証されています(記事)。

やったことは、最新のファームウェアを書き込んでUSBドライバをインストールしたくらいです。
とりあえず、USBコントローラ(?)との相性があるっぽいです。USBハブ経由と、USB増設PCカード経由では動作しませんでした。本体のUSBポート直結のときは動作しました。Gainer miniが動いているUSBコントローラは「Intel(R) 82801DB/DBM USB Universal Host Controller - 24C4」というものみたいです。
動作確認は、(1)TeraTerm、(2)シリアルプロキシーgsp.exe、(3)Processingの3つで行いました。

ポートの対応表です。
AIN0  RA0    AOUT0  RB7
AIN1  RA1    AOUT1  RB6
AIN2  RA2    AOUT2  RB5
AIN3  RA3    AOUT3  RB4
DIN0  RA5    DOUT0  RA4
DIN0  RB2    DOUT1  RC0
DIN0  RB3    DOUT2  RC1
DIN0  RB1    DOUT3  RC2

とりあえず動いてるっぽいけど、なんか不安な感じです。

ジャンクの赤外線受信器

2009-01-13 23:19:34 | 電子工作
新春のジャンク袋の続きになります。

千石で買ったジャンク袋には赤外線受信器がいっぱいはいっていました。2種類あって、足のまっすぐな方は裏に66F3(上)とSA27(下)の2つの文字列が読めます。足の曲がった方は7X24(上)、S(中)、A03E(下)の3つの文字列が読めます。メーカーマークっぽいものは見当たりません。データシートを探してみましたがよく分かりませんでした。

どうせいっぱいあって壊しても平気なので、実際に試してみることにしました。秋月や他で売っている赤外線受信器のデータシートを見ると、見つけたものは全てピン配置が一緒です。左からOUT, GND, Vccです。定格は2.7~5.5Vのものと4.5~5.5Vのものがあります。以前5Vのものでも3Vで動いていたので、とりあえず3.3Vをかけてみることにします。

赤外線受信器には通常のテレビリモコン等で使う38kHz以外の周波数のものもあるみたいです。とりあえずはオシロをつないでテレビリモコンを受信できるか試してみます。受信できなかったら、足の配置が違うか、電圧が違うかのどちらかのはずです。

実験の様子です。


予想はぴったりで、テレビリモコンを受信してくれました。


足のまっすぐな方も曲がった方もピン配置は一緒でした。
3メートルくらいはなれても平気でした。
5Vでも動作しました。特に熱くなったりはしていないようです。

なんか得した感があります。一応、独自調査の結果ですので真似して火事になっても知りません^^

トラ技2009年2月号

2009-01-13 02:08:34 | 電子工作
特集は「はじめてのアナログ回路の考え方」
教科書の基礎知識と技術の間を埋める、というあたりがツボです。

「PIC16F84エミュレータの製作」トラ技12月号のFPGAによるPIC12F508のエミュレーションの続きです。ソースもダウンロードできます。ET2008の講演で紹介されていました。

「PIC12F509でデルタシグマ変換」という記事ではA/DがなくコンパレータしかないマイコンでA/D変換をする方法が載っています。AVRだとtiny2313です。これはおもしろそうです。

来月号は「FPGAスタートアップ!」という特集です。
Interfaceは5月号が基板付きだそうです。

新春のジャンク袋

2009-01-13 02:07:55 | 電子工作
千石電商で恒例の新春ジャンク袋を売っていました(400円)。表を作ってみました。
抵抗                4   
電解10V470uF        34  
電解10V220uF        1   
フィルムコン        1   104
チップコン          4   223 4束(10*3+1巻き(100?))
チップコン          4   4束
赤LED               33  先とがり
赤LED               4   先丸5φ
2色LED              2   赤黄 センターアノード
チップLED           3   
青色LED             7   先透明
SI-8120JD           26  DC-DC step down
LM2940CT            1   LDO たぶん5V
DX15XB20            20  rectifier
赤外線受信1         33  足まっすぐ
赤外線受信2         55  足曲がり
NJM4558DD           1   OPアンプ
FCZコイル           1   
FCZコイル部品       3   ケース2 ボビン1
8pin ICソケット     1   
15pinコネクタ       6   はんだづけ用
44pinコネクタ       1   3列
RCAジャック         2   
熱収縮チューブ      9   
コネクタ(謎)        1   
コンセント+電線    1   
2列電線             1   
電線                1   先にピン
コネクタ関連        17  
その他              1   

赤外線の受信器がいっぱいです。

チェックするのは、ピン配置、38kHzかどうかの2つ。

2Fにまだいっぱい残っていました。