データ送信の仕組み
赤外線の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時間 | 合計時間 | 意味 |
16T | 8T | 24T | リーダ部と判断される |
T | T | 2T | 0と判断される |
T | 3T | 4T | 1と判断される |
のようになっている。
【参考】
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だから、この中間値で判断すればよい。
赤外線通信に関する用語
- キャリア周波数
赤外線受信モジュールには「キャリア周波数」というものがある。 「40kHz」とか「38kHz」となっている。
これは、その周波数に合わせた周波数で赤外線LEDを点滅させないと受信モジュールが働かないということ。
つまりは送信側は38kHzの周波数で赤外線LEDを点滅(方形波)させる必要があるということ。
(あまり厳密でなくてもいいそうだ) - 出力パルス幅
次に赤外線受信モジュールには「出力パルス幅」というものが記載されている。 これは、赤外線受信モジュールが出力する「HIorLOW時間」のようです。 つまりは赤外線受信モジュールが「Hi」と判断した場合は「Hiを出力パルス幅分出力」し、「Lo」と判断した場合は「Lowを出力パルス幅分出力する」ということです。
【参考】
用語: http://amahime.main.jp/sekigaisen/main.php?name=sekigaisen