2008年9月18日木曜日

リモコンアプリ

iアプリ完成。
iアプリのカメラリモコンといったら、SILKYPIX リモコンQRが有名だけど、最近、起動するのに携帯電話の時間を過去にずらさないと使えなくなっちゃったからね。

本当は公開したいところだけど、恒久的に使用できるホームページスペース持ってないので、むりっぽ。

とりあえず、リモートコントローラーFを忘れても、撮影できるのがうれしいかな。
便利便利。

2008年9月17日水曜日

iアプリ作成2

調子にのって、リモコンのテストの続き。
今度は、レリーズ中のパルスもしっかり発信するようにしてみる。


オシロスコープを見ているとレリーズ中のパルスは、大体250msに1回の頻度で発生しているみたい。
第1フレームは450msで開始プロトコルを発生させて、
第2フレームは250msで一番最初に4msの1パルスを発生させればいいだけなんだね。
てなわけで、ごにょごにょと。
 
import com.nttdocomo.device.*;
import com.nttdocomo.ui.*;

public class RemoteTest2 extends IApplication {

int freq = 38; // KHz
int base = 1000; // usec

IrRemoteControl irc;

public void start() {
irc = IrRemoteControl.getIrRemoteControl();

Dialog dia = new Dialog(Dialog.BUTTON_OK, "IRリモコンテスト");
try {
dia.setText("送信します\n");
dia.show();

irc.setCarrier(5000/freq, 5000/freq ); //一般的なキャリア
//0:High=1ms,Low=1ms
irc.setCode0(IrRemoteControl.PATTERN_HL, base*1, base*1);
//1:High=3ms,Low=3ms
irc.setCode1(IrRemoteControl.PATTERN_HL, base*3, base*3);

//開始フレーム
IrRemoteControlFrame frame1 = new IrRemoteControlFrame();
frame1.setFrameData(new byte[]{(byte)0x80}, 8);
frame1.setStartHighDuration(base*10); //スタートは10ms
frame1.setStartLowDuration(0); //1とあわせて13ms+3ms
frame1.setStopHighDuration(0); //ストップパルスは使わない
frame1.setFrameDuration(450 * 10); //フレーム長(0.1ms)
frame1.setRepeatCount(1);

//レリーズ用パルスフレーム
IrRemoteControlFrame frame2 = new IrRemoteControlFrame();
frame2.setFrameData(new byte[]{(byte)0x0}, 0);
frame2.setStartHighDuration(base*4); //4msパルス
frame2.setStartLowDuration(0);
frame2.setStopHighDuration(0);
frame2.setFrameDuration(250 * 10);
frame2.setRepeatCount(IrRemoteControlFrame.COUNT_INFINITE);

IrRemoteControlFrame[] ircf =
new IrRemoteControlFrame[] {frame1,frame2};
irc.send(ircf.length, ircf, 30); //送信

Thread.sleep(3000); //3秒間

irc.stop();

dia.setText("送信しました\n");
dia.show();

} catch (Exception e) {
dia.setText("エラー"+ e.getMessage());
dia.show();
}
this.terminate();
return;
}
}

こんな感じかな?

とりあえず、出力してみると、


いい感じにリモートコントロールFと同じになりました。

iアプリ作成

とりあえず、テスト的にiアプリを組んでみる。

Vistaだからなのか、JDK1.6だからなのか、自宅の環境だと、どうもDojo-5.1が不安定すぎるような気がする。

そうこうして、1時間ばかりで、

とりあえず、それっぽく作ってみた。
フレームのスタート部が13msにしなければならないけど、どうやっても10ms以上にできないし、データ部のパルスが1つ削れない状態なんだけどね。
 
import java.io.*;
import java.util.*;

import com.nttdocomo.device.*;
import com.nttdocomo.ui.*;

public class RemoteTest extends IApplication {

int freq = 38; // KHz
int base = 1000; // usec
boolean status = false;

IrRemoteControl irc;

public void start() {
irc = IrRemoteControl.getIrRemoteControl();
byte[] datas = createData("11111100");

Dialog dia = new Dialog(Dialog.BUTTON_OK, "IRリモコンテスト");
try {
dia.setText("送信します\n");
dia.show();

send(datas);
Thread.sleep(10000);

dia.setText("送信しました\n");
dia.show();

} catch (Exception e) {
dia.setText("エラー"+ e.getMessage());
dia.show();
}

this.terminate();
return;
}

public byte[] createData(String source) {
int len = source.length() % 8;
if(len>0) {
source += "00000000".substring(0,8-len);
}
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
for(int i=0; i < source.length() ; i+=8 ) {
int buf = Integer.parseInt( source.substring(i,i+8), 2 );
out.write(buf);
}
out.close();
return out.toByteArray();
} catch(Exception e) {
return new byte[0];
}
}

public void send(byte[] data) {
irc.setCarrier(10000 / freq / 2, 10000 / freq / 2);
irc.setCode0(IrRemoteControl.PATTERN_HL, base * 1, base * 4);
irc.setCode1(IrRemoteControl.PATTERN_HL, base * 1, base * 1);

IrRemoteControlFrame frame1 = new IrRemoteControlFrame();
frame1.setFrameData(data, data.length * 8);
frame1.setStartHighDuration(base*10);
frame1.setStartLowDuration(base*3);
frame1.setStopHighDuration(0);
frame1.setFrameDuration(470 * 10);
frame1.setRepeatCount(1);

IrRemoteControlFrame[] ircf = new IrRemoteControlFrame[] {frame1};
irc.send(1, ircf);
status = true;
return;
}
}

かなりいい加減なんだけど、ためしにK20Dに向けてみたら、シャッター落ちるでやんの。

こっちも、かなりいい加減な作りなのね。

2008年9月15日月曜日

回路で遊ぶ

「家にいても、ちょっと寂しいので、どこかに散歩に行きたいね。」
ということで、久しぶりに秋葉原まで行って見ることに。
前々から、秋葉原で欲しいものがあったしね。

で、ヨドバシカメラの駐車場に車を止めて、
妻は、ヨドバシカメラにiPod nanoをいじりに。
自分は、千石電商まで、回路部品の買出しに。結構距離あって、半泣き状態で。

さらに、久々というか、10年ぶりの部品探しに手間取って、小一時間かけて、なんとか部品を集めることに。
あ~ぁ、つかれた、つかれた。

で、帰宅後1時間ぐらいかけて、組んだのが、

PIC-3704という赤外線受信モジュールと10uF,0.01uFのコンデンサ、1.5KΩの抵抗だけのいたってシンプルな回路。
こんなの、今時なら小学生の夏休みの工作っていうレベル。
一応、回路図はこんな感じで。

そういえば、半田ごても10年ぶりに握ったなぁ。

で、なんに使うかというと、

こんな感じで、パソコンのUSB(電源用)とオーディオ口につなげて、リモコンの発信状況を調べるのに使います。


ハンディ・オシロスコープという、フリーソフトを使ってみるとこんな感じで、リモコンのプロトコルが視野的に確認できるんです。
ちなみに、調べているのは、PENTAXのリモートコントロールFというリモコンね。


とりあえず、解析結果はこんなところで。
押しっぱなしにしていると、レリーズ状態の確認パケットが飛んでいるようだけど、それはまた追々に。

後はiアプリを組んでくだけだぁ。

2008年8月31日日曜日

諏訪

ちょっと、そこいらのお風呂まで。

と、いうわけで、今日は諏訪大社付近の銭湯まで、足を伸ばしてみました。
まぁ、帰省したら、親に誘われるがままに、半ば強制的に、長野方面までドライブにでかけることになったんだけどね。

そこいらかしこの、いたるところで温泉が湧きでているような街なので、街中の銭湯といっても、ガラッガラの独占状態。
親に、「空いていて良いだろう、中々ゆっくりできるだろう」とお勧めされてきたけど、さすがに、高速でも往復4時間かかる風呂には通えません。

写真はノスタルジックなんか出そうかと商店街を白黒で撮って、Photoshopで周辺光量を落としてみたんだけど、なかなか35mmのフイルムのような雰囲気はだせないんだよねぇ。

2008年8月17日日曜日

地鎮祭



実家に帰ったら、家が跡形も無く無くなっていました。
立替のために、漸く潰したんだそうです。
生家の消滅っていうのはそれなりに感慨深いものがありますが、これで両親の生活が楽になるなら、そちらの方が優先ですよね。
なんせボロかったからなぁ。
カーテンは勝手になびくし(隙間風)、夜な夜な誰も歩いていない廊下から軋む音がするし(木材の収縮)、朝起きると人形の位置が変わっていたりと(ネズミ)、そんなポルターガイスト、てんこ盛りな家でしたからね。

てなわけで、今日は地鎮祭とやらに参加してきました。
祭りといっても、単に頭下げて、突っ立ってるだけでしたけど。
お払いの最中に地慣らしの雨がパラパラと降ったのは、善事の前兆なのかなぁ。


自分はまだまだ東京暮らしを満喫する予定ですが。
あと30年ぐらい。

2008年8月12日火曜日

ストロボ買いました

久々の更新が、またもや購入ネタで申し訳ない限りなのですが、ストロボを購入しました。
ペンタックス純正のAF540FGZです。中野のフジヤカメラで36,800円でした。
なんていうか、ほとんど衝動買いみたいな感じなのですが。

いやね、最近、飼い猫がベットの下が気に入ってしまい、一日のうちで飯とトイレの時以外引き篭もってしまっているんです。文字通り四六時中ね。
ベットの下のような暗いところなんて、手振れ補正あろうが、ISO6400で撮影できようが、まったく太刀打ちできません。
補助光などの明かりがないと、まったくもって撮れんのです。

というわけで、夫婦してベットの下に照明ほしいねぇなんて話をしていたのですが、どうせなら、K20Dでリモート撮影できる、ストロボを買っちゃえぇぇ。な拡大解釈となってしまいました。

で 、さっそくK20Dに取り付けるとこんな感じ。
割と大きめ。

で、K100Dに取り付けると、
どっちが本体?な感じ。

主な使用方法は、ワイヤレスリモートでのバウンス撮影なので、ストロボ自体がデカかろうが、オモかろうが、ほとんど問題は無いのだけれども、カメラにマウントして使うには、もうすこし小さいほうが勝手がよさそうかなぁ。

さて、このAF540FGZ、K20Dからリモートで発光制御ができるんです。
つまり、ストロボは部屋の真ん中にスタンドにつけた状態で置いおいて、発光口を天井に向けておいておけば、いつでもどこでもバウンス撮影がOKってことになるんです。
使ってみたら、えらい便利で、ちょっと驚きました。
こんなことができるのはK20Dだけで、K100Dだと、ワイヤレスリモートコントロールではできないので、ちょっと残念なのですが。(一応、ワイヤレスでスレーブ発光はできるけど)
もっとも、天井が木目調とか白とか統一されてない我が家では、ホワイトバランスにちょっと難点のあるK100Dでは、バウンス撮影なんて愚の骨頂なんですけどね。

で、

意味もなく、桃なんか撮ってみる。

しばらくは、ストロボの使い方の試行錯誤になりそうです。