文書の過去の版を表示しています。
赤外線リモコンリピータ
概要
自宅内には、多数のAV機器があります。
しかし、リモコン操作を行うときに、次のような問題が時々発生します。
- 途中に障害物があったり、
- 操作位置の角度が厳しかったり、
- 距離が離れすぎていたり、
そのためにリモコンが効かず、操作する人間側が、少し移動しなければなりません。
そこで、リモコンが送信する赤外線を、途中で中継(リピータ)することにより、これらの問題を緩和させることに
しました。
動作原理
全体は、次の3つのブロック(モジュールまたは部品)で構成されます。
- リモコンから送信される赤外線信号を受信する“赤外線リモコン受信モジュール“
- 38kHzの搬送波「キャリア」信号を発生させる“PIC12F683(CCPモジュール)”
- 赤外線を出力(発光)する“赤外線発光LED“
※赤外線リモコン受信モジュールについては、前回作成した、“赤外線データ通信(USART)“を参照してくだ
さい。
<処理の流れ>
- リモコンからは、操作にあわせて、“赤外線(38kHzの搬送波「キャリア」)“が送信されます。
- その赤外線を、“赤外線リモコン受信モジュール”で受信します。(キャリアは削除される)
- PIC12F683が内蔵している、CCPモジュールをPWMモードで動作させて、“38kHzのキャリア信号”を
発生させます。 - 受信した信号にあわせて、“PWMをON/OFF”します。
回路図
ソースコード
- infraredRaysRepeater_v1.c
//********************************************************************** /* 「赤外線リモコンリピータ」 */ //********************************************************************** #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; // A/D変換は使用しない。 TRISIO = 0b00001001; // Pwm_Init(38000); // 38kHz duty=50% Pwm_Change_DutyEx((PR2 * 4) / 2); Pwm_Stop(); // while (1) { //赤外線リモコン受信モジュールの出力信号の立下りをチェックする。 while (GPIO.F3 == 1) ; //38kHzのキャリアを出力する。 Pwm_Start(); LED = 1; //赤外線リモコン受信モジュールの出力信号の立ち上がりをチェックする。 while (GPIO.F3 == 0) ; //38kHzのキャリアを停止する。 Pwm_Stop(); LED = 0; } } //**********************************************************************






