リモコン信号を見てみた。
オシロスコープを新調したので、赤外線リモコンの信号を見てみた。実際は38kHzの点滅信号らしいのだけど、こういった専用の受光モジュールが市販されていて、これを使うと検波は不要。Single shotに設定したら、きれいに信号を取得できた。
この素子は負論理なので、5V出ているところが消灯で、0Vのところが点灯を意味する。記入した時間は実測値なので規格値とは誤差があるようだ。このあたりで解説されている内容によると、先頭にある9000μ秒と4500μ秒のセットがリーダ信号と呼ばれる開始の合図、その後からはデータで500μ秒の点灯と1700μ秒の消灯のセットで1を、500μ秒点灯、消灯のセットで0を表わすらしい。
この信号をリモコンから受けるのであれば、100μ秒くらいの精度のタイマで時間を測り、50msも信号が変化しなければ終了と判定してしまえば良さそう。逆に機器に伝える場合、このタイミングで38kHzの点滅が必要なので、PWMを持ったマイコンを使うのが簡単そう。
Java Communications API
Java Communications APIが10年以上ぶりくらいに必要になったので探す。なんかRXTXというのを使えという記事が見つかるものの、飛び先がリンク切ればかりで、twitterでぼやいたところ、さくらばさんから場所を教えていただきました。もっともこのRXTXというのは、パッケージ名がgnu.orgになっていてJava Communications APIとは別物のよう。まぁUSBモデムデバイスが制御できれば良いので、これを使うことにする。
Linux amd64というマイナー環境なので、ソースからコンパイルすることにする。zipで置いてあるやつは、UTS_RELEASEという識別子が無いよ〜というエラーでコンパイルできないので、CVSから最新版を取る。
で、これだと/dev/ttyACMnデバイスが見つからないのでソースを修正する。src/gnu/io/RXTXCommDriver.javaを開き、
if(osName.equals("Linux"))
{
String[] Temp = {
"ttyS", // linux Serial Ports
"ttySA", // for the IPAQs
"ttyUSB", // for USB frobs
"ttyACM",// linux CDC ACM devices <<= ここを追加。
"rfcomm", // bluetooth serial device
"ttyircomm", // linux IrCommdevices (IrDA serial emu)
};
CandidatePortPrefixes=Temp;
}
あとは、定石通りconfigure/make/make installでok。あ、export JAVA_HOME=の指定が必要。
ここにあるデバイス列挙のサンプルを動かしてみると、列挙された。
shanai@desktop:/tmp$ java Test
WARNING: RXTX Version mismatch
Jar version = RXTX-2.2
native lib Version = RXTX-2.2pre2
/dev/ttyACM0 - Serial
/dev/ttyS0 - Serial
月食
丁度玄関先から見えたので月食を観察。うちの機材は望遠側は300mmまでしかないので、画角的にはこんな感じ。

撮影条件は、1/60s f10 ISO320あたり。以降はトリミング。
22:02頃
22:25頃
22:33頃
22:53頃
23:00頃
23:03頃ほぼ隠れてきて、暗い部分はノイズが厳しいのでシャッタ速度を1s近辺まで落とす。
23:32頃
23:34頃相当暗い。ss 3.2s f10 ISO1600。薄い雲が流れていて、シャッター速度があまり遅いと結構不鮮明。折り返し地点も過ぎたんで退散。寒かった。





