リモコンの仕組みを一応、ざっとみたらここへ。
ここでは、自作リモコンというより、既存のリモコンのコピーを作ることを目標とする。
手順
- 既存のリモコンの赤外線をキャプチャする
- データの並びを知る
- 同じデータを送信できる送信機を作る
説明
既存のリモコンの赤外線のキャプチャが必要なのは2つ理由がある。
- データ部の01の並びは、各社によってバラバラだから
- データの間隔が、規定では、0.56msだが、結構、いい加減でずれていることが多いから。
受信は、赤外線受光素子で行い、送信は、赤外線LEDで行う。受信は、直接PICの足にデータをつないじゃえばいいし、送信は、トランジスタを制御するなどして、赤外線LEDをON/OFFすればいい。
キャプチャ方法
リモコンの赤外線を受信するための回路&プログラムを作る必要がある。
回路はこの2つが見つかった:
http://masudayoshihiro.jp/technology/ir01.php
http://amahime.main.jp/sekigaisen/main.php?name=sekigaisen
プログラムは、この2つが見つかった:
http://amahime.main.jp/sekigaisen/main.php?name=sekigaisen
http://www.necel.com/micro/ja/designsupports/sampleprogram/78k0/index.html
プログラムの下のリンクは、NECエレのリンクで、プログラムとその説明がダウンロードできる。
2msで受信データをポーリングしておき、3回Lが続いたらリーダーとみなし、以後を全部キャプチャするという処理の流れ。
正確なキャプチャが必要なのは最初だけ
カスタムコードと時間間隔がわかれば、01のデータの並びは、もっと単純に知ることが出来る。
たとえば、http://www5e.biglobe.ne.jp/~avm/では、赤外線受光素子をパソコンの音声入力に接続して、オーディオ信号から01を判断している(長い波が1、短い波が0)。
もしかしたら、キャプチャしなくても、NECフォーマットにしたがって、この通りに01流したらいけるかもしれない。
あとは受信したデータと同じ波形を赤外線LEDに出力してあげるだけ
送信タイミングは
long IRList[] = { /* Sony-TV CHUP */
6251 , 1214 , /** 0Bit( 7465) */
1768 , 1208 , /** 1Bit( 2976) */
1748 , 1232 , /** 2Bit( 2980) */
1715 , 1301 , /** 3Bit( 3016) */
1665 , 1311 , /** 4Bit( 2976) */
3104 , 1360 , /** 5Bit( 4464) */
1618 , 1353 , /** 6Bit( 2971) */
・・・
みたいに、ちゃんと計って出力すれば間違いなく動作すると思う。
0を出力するルーチンと1を出力するルーチンを作って実行しても、たぶん、ちゃんと動くと思う。