Linuxでリモコンを使う(3)

続きものなのでこんなタイトルにしていますが、今回はLinuxとはあんまり関係ないです。

PC-OP-RS1で受信したリモコン信号をちょっと観察してみる話です。
実際に手持ちのリモコンの信号を見てみたい方はこのコードを落としてコンパイルしてみてください。

うちのSONYのテレビの電源ボタン信号の例です。

最初に

% lemon_corn -r tv_pwr

でリモコン信号を学習させておきます。

まず、受信した240byteのデータをそのまま16進で見てみます。

% lemon_corn -l tv_pwr
tv_pwr:
ffffffc1ff077ff0ffc00ffc3ff0033ff0ffc00ffce00ffe0000000000000000000000000000000000000000000000000000000000000080ffff7fe0ff811ff87fe007ff1ffcc11ffc3ff0033ff0033f00000000000000000000000000000000000000000000000000000000000000c0ffff3ff8ffe00ffe1ff881ff077ee007fe1ff8811ffcc11f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

16進を頭の中で2進にすぐに変換できる人は、なんだか変化点が多くて思ったより複雑だなと感じるかもしれません。でもこれ、LSB firstなのでだまされないようにご注意。波形的な表示をしてみますと、こんなかんじです。ONが'-'でOFFが'.'です。

% lemon_corn -p tv_pwr
tv_pwr:
-------------------------.....-------------.....-------.....------------......------......------------......------......------......------------......------......------.....-------.....-------...............................................................................................................................................................................................................................................................------------------------......------------......------......------------......------.....-------------.....-------.....-------.....------------......------......------......------......------................................................................................................................................................................................................................................................................------------------------.....-------------.....-------.....------------......------......------------......------......------......------------......------......------.....-------.....-------...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

ちょっと見づらいですね。すみません。

リモコン信号のフォーマットはだいたい NEC,SONY,AEHA(家電製品協会) のフォーマットのどれかを使っているものが多いようですが、今回のサンプルはSONY製品なのでもちろんSONYフォーマットです。ちなみにこれら以外の独自フォーマットを使っている製品もあるようです。

lemon_corn はこの3フォーマットの信号であればパターンを認識して、情報を表示することができます。

% lemon_corn -f tv_pwr
tv_pwr:
format = SONY, data = 15 0001

SONYフォーマットのproduct 0x0001, command 0x15 という信号と認識されました。いろいろなリモコンの信号を見てみるとなかなか面白いです。
あと調べてみると製品付属のリモコンでは発信できないコマンドなんかもあったりするようです。
例えば、通常テレビなどの電源ボタンは1つでonとoffがトグルしますが、「電源on」「電源off」のそれぞれ独立コマンドなんかも実はあったりして、現在の状態がonでもoffでも確実にoffにする、というような動作も可能になってきます。

そのうちソフトの方は改良して、学習しなくても任意のパターンを発信できるようにしたいと思っています。