PIC関連メモ/リモコンの仕組み

Last-modified: 2009-12-14 (月) 08:21:55

データ送信の仕組み

赤外線のON/OFFを数回繰り返したパターンを検出して、01を判断している。
赤外線のON/OFFが01ではなくて、パターンで01ということ。
だから、太陽光とかで誤動作しない。

データフォーマット

データフォーマットは特に規定はない。メーカによってばらばら。
たとえば、SONYのリモコンの1chボタンであれば、
リーダー部*1に続いて、「000000010000」というデータを送っている。

信号の送り方(送信側)

すべてのリモコンが従うわけではないが、一応、標準はある。
NECフォーマットと呼ばれるもの。
http://www.necel.com/faq/ja/mi_com/f_com_remo.html

 

簡単に言えば、Tを0.56ms*2とすると、

L時間H時間合計時間意味
16T8T24Tリーダ部と判断される
TT2T0と判断される
T3T4T1と判断される

のようになっている。

 

【参考】
SONYの波形: http://www5e.biglobe.ne.jp/~avm/
表について:http://watson8.com/cmclock/ir.html
リーダー部: http://einst.hp.infoseek.co.jp/remocon/remocon.html

受信した信号の判断(受信側)

【リーダー部の判断】
上の表でLが16T(=9ms)で、Hが8T(=4.5ms)とある*3から、この時間を読み取ればよい。
具体的には、最初の立下りをエッジ検出割り込み機能やポーリング処理で検出*4し、そこから立ち上がりまでの時間をタイマのキャプチャ機能などで測定する*5

 

【カスタム部・データ部の01判断】
厳密には、on/off それぞれの期間を確認するらしいが、
データが1のときは、間隔*6が2.25ms で、データが0のときは、1.125msだから、この中間値で判断すればよい。

赤外線通信に関する用語

  1. キャリア周波数
    赤外線受信モジュールには「キャリア周波数」というものがある。 「40kHz」とか「38kHz」となっている。
    これは、その周波数に合わせた周波数で赤外線LEDを点滅させないと受信モジュールが働かないということ。
    つまりは送信側は38kHzの周波数で赤外線LEDを点滅(方形波)させる必要があるということ。
    (あまり厳密でなくてもいいそうだ)
  2. 出力パルス幅
    次に赤外線受信モジュールには「出力パルス幅」というものが記載されている。 これは、赤外線受信モジュールが出力する「HIorLOW時間」のようです。 つまりは赤外線受信モジュールが「Hi」と判断した場合は「Hiを出力パルス幅分出力」し、「Lo」と判断した場合は「Lowを出力パルス幅分出力する」ということです。

【参考】
用語: http://amahime.main.jp/sekigaisen/main.php?name=sekigaisen


*1 リーダー部は、会社ごとにリモコンが干渉しないための仕組み。だが、実際は結構かぶってる。独自に決めていいことになっているらしい。また、太陽光などとの干渉を避ける役割ももっているようだ。ちなみに、正確には送信データは、『リーダー部、カスタムコード(会社コード)、データ部、ストップビット(トレーラー)』という並びになるが、リーダー部とカスタムコードを一緒にしてリーダー部と呼ぶサイトも結構多かったので余り細かいことは気にしない。
*2 これが規定だが、実際に機器の赤外線を測定してみると、ものによって結構違う
*3 リピートのコードの場合、8Tの部分が、4Tになるらしいが、正直、いらんのでパス
*4 NECエレのプログラムによると、2msでデータを見ておき、Lを3回検出したら、リーダー部とみなし、キャプチャを開始している。リーダー部がLが9ms続くということを利用している。そのほかの部分はHにあがっているから。
*5 このとき、時間をいいかげんに計ると、誤動作率は大きくなるが、リモコンの電池が消耗しても受信する可能性が高くなる。逆にきっちり計ると、誤動作率は小さいが、リモコンの効きが悪くなる
*6 次の立ち下りエッジまでの時間間隔のこと