赤外線リモコンリピータ

概要

自宅内には、多数のAV機器があります。 しかし、リモコン操作を行うときに、次のような問題が時々発生します。

途中に障害物があったり、

操作位置の角度が厳しかったり、

距離が離れすぎていたり、

そのためにリモコンが効かず、操作する人間側が、少し移動しなければなりません。

そこで、リモコンが送信する赤外線を、途中で中継(リピータ)することにより、これらの問題を緩和させることに しました。

<リモコンの到達距離の延長の考え方>

動作原理

全体は、次の3つのブロック(モジュールまたは部品)で構成されます。

リモコンから送信される赤外線信号を受信する“赤外線リモコン受信モジュール“

38kHzの搬送波「キャリア」信号を発生させる“PIC12F683(CCPモジュール)”

赤外線を出力(発光)する“赤外線発光LED“

※赤外線リモコン受信モジュールについては、前回作成した、“赤外線データ通信(USART)“を参照してくだ さい。

<処理の流れ>

リモコンからは、操作にあわせて、“赤外線(38kHzの搬送波「キャリア」)“が送信されます。

その赤外線を、“赤外線リモコン受信モジュール”で受信します。(キャリアは削除される)

PIC12F683が内蔵している、CCPモジュールをPWMモードで動作させて、“38kHzのキャリア信号”を
発生させます。

受信した信号にあわせて、“PWMをON/OFF”します。

回路図

ソースコード

//********************************************************************** /* 「赤外線リモコンリピータ」 */ //********************************************************************** #define LED GPIO.F1 //********************************************************************** void Pwm_Change_DutyEx(unsigned int duty_ratio) { CCPR1L = duty_ratio >> 2; CCP1CON.DC1B0 = duty_ratio & 0b00000001; CCP1CON.DC1B1 = (duty_ratio & 0b00000010) >> 1; } //********************************************************************** void main() { OSCCON = 0b01110000; // クロックを8Mhzに設定する。 CMCON0 = 0b00000111; // コンパレータは使用しない。 ANSEL = 0b00000000; // Ａ／Ｄ変換は使用しない。 TRISIO = 0b00001001; // Pwm_Init(38000); // 38kHz duty=50% Pwm_Change_DutyEx((PR2 * 4) / 2); Pwm_Stop(); // while (1) { //赤外線リモコン受信モジュールの出力信号の立下りをチェックする。 while (GPIO.F3 == 1) ; //３８ｋＨｚのキャリアを出力する。 Pwm_Start(); LED = 1; //赤外線リモコン受信モジュールの出力信号の立ち上がりをチェックする。 while (GPIO.F3 == 0) ; //３８ｋＨｚのキャリアを停止する。 Pwm_Stop(); LED = 0; } } //**********************************************************************

動作確認

いつものブレッドボードに実装し、動作を確認してみました。 左側から、赤外線リモコン受信モジュール、LED、PIC12F683、赤外線発光LEDです。 実際には、赤外線リモコン受信モジュールと赤外線発光LEDが干渉しないように互いの距離を離します。 電池を含めた全体の写真です。 赤外線発光LEDは、30cmくらい離しました。 居間のテレビのリモコンで試してみました。 結果的には、2倍以上の距離でテレビの操作が出来るようになりました。 如何ですか? 本リピータを使うことにより、AV機器の収納がし易くなり、部屋がすっきりしますね!{}!