I2C赤外線リモコンやmruby-remoconはビットトレードワンさんのUSB赤外線リモコンの仕様を一部変更したデータ形式となっています。
1バイト目は同じデータですが、2バイト目以降のデータはビットの並びを反転してます。USB赤外線リモコンは最下位ビット(Least Significant Bit:LSB)からの送信でI2C赤外線リモコンは最上位ビット(Most Significant Bit:MSB)からの送信となります。
これまで赤外線リモコンのデータでLSBからのパータンは見た事がなく、以前から作っていた、アルマジロのお使いなどと共通としたかったからです。ちなみに普通のシリアル通信はLSBから送られます。
アルマジロのお使いではFUTABA WEBさんのリモコン・データーベース形式(MSBから送信)を使っています。
この形式からI2C赤外線リモコンのデータ形式にするには以下のように変換します。
ソニーPlayStation2の○を例にします。
データは0xBAB5B0となって20ビットのデーターです。
1バイト目はビット長を4で割った物が上位4ビットで下位4ビットは信号のタイプになります。タイプは家電協会が1でNECが2でSONYが3となります。
((20 / 4) << 4) | 3 = 0x53
となります。後は0xBA,0xB5,0xB0が続き4バイトでデータが出上がります。
mruby-remoconの受信機能でデータを取得する事もできます。
$ mirb
mirb - Embeddable Interactive Ruby Shell
> t = Remocon.new()
=> #<Remocon:0x101056fe0>
> p t.recieve
[83, 186, 181, 176]
=> [83, 186, 181, 176]
NECタイプのAppleRemoteの再生ボタンは[130, 119, 225, 32, 00]になります。この信号を調べているサイトではビットの並びが逆なページもあるようなのでNECタイプのビットは逆なのかもしれませんが、混乱するので並びは統一します。
自分のテストケース
タイプ | 対象 | 備考 |
---|---|---|
SONY | CD,PS2 | |
NEC | AppleRemote | |
家電協会 | シーリング | シーリングは認識率低いです |
貴重なデータを提供されているFUTABA WEBさんに感謝しております。