ビット・トレード・ワン社から販売されている「ADIR01P USB赤外線リモコンアドバンス」という商品。
この商品を使う事で、手軽に学習リモコンとして機能させる事が出来る。
WindowsでのGUI操作もI/Fが用意されているが、Linux版も用意されている。
https://bit-trade-one.co.jp/assemblydeskfiles/hobby/
USB赤外線リモコンアドバンス・UNIX系環境用コマンドライン操作ツール&GUI操作ツール Ver1.0.1
今回、NECの照明(シーリングライト)の赤外線リモコン RE0208 のON/OFFボタンのみをPICで作成しようした際、
どのようなデータを送信すれば、照明がOFF/ON出来るのかを知る必要があった。
フォーマットにはNEC,家製協,SONYフォーマットが有名のようだが、今回はNECフォーマットとして調査した。
$ bto_advanced_USBIR_cmd -g | tee data.txt # 生データ所得
取得したbyte配列の要素数:152=38ビット分の生データ : Freq=38000Hz 0x01,0x58,0x00,0xab,0x00,0x18,0x00,0x15,0x00,0x18,0x00,0x40,0x00,0x18,0x00,0x15,0x00,0x18,0x00,0x15,0x00,0x18,0x00,0x15,0x00,0x18,0x00,0x15,0x00,0x18,0x00,0x15,0x00,0x18,0x00,0x40,0x00,0x18,0x00,0x40,0x00,0x18,0x00,0x15,0x00,0x18,0x00,0x40,0x00,0x18,0x00,0x40,0x00,0x18,0x00,0x15,0x00,0x18,0x00,0x40,0x00,0x18,0x00,0x40,0x00,0x18,0x00,0x15,0x00,0x18,0x00,0x40,0x00,0x18,0x00,0x40,0x00,0x18,0x00,0x15,0x00,0x18,0x00,0x40,0x00,0x18,0x00,0x15,0x00,0x18,0x00,0x40,0x00,0x18,0x00,0x15,0x00,0x18,0x00,0x15,0x00,0x18,0x00,0x15,0x00,0x18,0x00,0x15,0x00,0x18,0x00,0x40,0x00,0x18,0x00,0x15,0x00,0x18,0x00,0x40,0x00,0x18,0x00,0x15,0x00,0x18,0x00,0x40,0x00,0x18,0x00,0x40,0x00,0x18,0x06,0x17,0x01,0x58,0x00,0x56,0x00,0x18,0x0e,0x53,0x01,0x57,0x00,0x57,0x00,0x18,0x1e,0x0d
画面に表示されるが、38kHzで赤外線LEDをON/OFFしている。
0x01,0x58,0x00,0xab,0x00,0x18,0x00,0x15,0x00,0x18,0x00,0x40 ・・・・ と 16進コードが続く。
38kHzの1周期は、1秒÷38kHz = 1 ÷ 38000 ≒ 26.3μ秒 を念頭に置いておく。
0x01,0x58
0x00,0xab
0x00,0x18
0x00,0x15
0x00,0x18
0x00,0x40
(以下、省略)
・ 0x01,0x58 → 0x0158 → 344 (10進数) X 26.3μ秒 = 9047.2 μ秒 ≒ 9 m秒
・ 0x00,0xab → 0x00ab → 171 (10進数) X 26.3μ秒 = 4497.3 μ秒 ≒ 4.5 m秒
この値を見てピンとくるかと思うが、リーダーコード
以降の64個の生データ部分が、リモコンコード(カスタムコード+データコード+データコードの反転)。
下記のように、 0か1かを確認していく。
[A] 0x00,0x18 → 0x0018 → 24 (10進数)
[B] 0x00,0x15 → 0x0015 → 21 (10進数)
AとBは、ほぼ近似値です。 このパターンは“0”
[A] 0x00,0x18 → 0x0018 → 24 (10進数)
[B] 0x00,0x40 → 0x0040 → 64 (10進数)
BはAの約3倍の数値です。 このパターンは“1”
残り6回、計8回分(8bit)を並べると
[1] 01000001
以下、同様に行うと、
[2] 10110110
[3] 11010100
[4] 00101011
上記32bit分が終わり、33bit目、生データでは67,68番目の生データ
[A] 0x00 + 0x18 = 24(10進数) X 26.3μ秒 = 631.2 μ秒 ≒ 0.6ms
[B] 0x06 + 0x17 = 1559(10進数) X 26.3μ秒 = 41001.7 μ秒 ≒ 41ms
がおそらく、ストップコード。
その後、リピートコードがありますが、今回は割愛。
赤外線データを送る際に、リモコンコードは下位ビットから送るらしいので、
[1] 01000001 は、右から左に読み上げると 10000010 これを16進数に変換すると、82
同様に
[2] 10110110 → 01101101 → 6D
[3] 11010100 → 00101011 → 2B
[4] 00101011 → 11010100 → D4
という事で、NEC照明リモコン(RE0208) CH2 選択時のON/OFFボタンは、82 6D 2B D4 となる。