LED回路工作部屋 【掲載 : 2016/10/12】【更新 : 2019/12/12】
赤外線リモコンの作り方

【ページ選択】
 ・赤外線リモコンの説明
 ・5ch 赤外線リモコンを作る
 ・赤外線リモコンのコードをパソコンで確認する


赤外線リモコンの説明

■■■■■■ 赤外線リモコンの仕様  ■■■■■■

 下記は赤外線リモコンで使用する仕様です。他の仕様もありますが、ここでは割愛します。

 ・赤外線リモコンは自然界のノイズを避けるため 38KHz変調 をかけている。 ※38KHz変調とは赤外線LEDの発光を38KHzでオン・オフすることです
 ・ 38KHz変調 をかけないと赤外線リモコン受信モジュールの出力は反応しない。
 ・赤外線リモコンで使う信号は NECフォーマット を使用する。

■■■■■■ 38KHz変調 と 赤外線受信モジュール  ■■■■■■

 赤外線を使ったリモコンの受信部となる 受信モジュール は、自然界の赤外線とリモコンの赤外線を区別するため 38KHzで点滅(変調)させた 赤外線のパルスのみ受信するようになっています。
 上記説明だけでは いまいち分かりにくいので下図 【図A1】 を参考に説明します。

 リモコンの受信部となる 赤外線リモコン 受信モジュール に DC5V の電源を接続すると、38KHzの赤外線を受信していない状態で OUTの出力 Highレベル ("1") になっています。
 この 赤外線リモコン 受信モジュール に、赤外線LED で38KHzの赤外線を当てると、 当ててる時間だけ 赤外線リモコン 受信モジュール OUTの出力 Lowレベル ("0") になります。
 デジタル的に解説すると、 赤外線LED 【38KHzで点滅させている時を "1" 】【消灯している時を "0(ゼロ)"】 とすと、 赤外線リモコン 受信モジュール の出力の関係は下記になります。
 赤外線LED = "1" → 受信モジュール = "0"
 赤外線LED = "0" → 受信モジュール = "1"
 このように 赤外線リモコン 受信モジュール 側では結果が反転するので、受信コードを再構成する場合に注意が必要です。




■■■■■■ 信号コードの説明  ■■■■■■

 赤外線リモコンは 送信機 で 信号 を送り、受信機 では、受信した 信号 と一致した動作を行います。 この 信号 とは何でしょうか?
 赤外線リモコンで使用している 信号 は主に NECフォーマット や 家電協フォーマット を使用しています。 【図B1】 は NECフォーマット の基本構成です。
この 信号 の 内容を変えることで、赤外線リモコンでいろいろな操作が行えます。
 信号(データ)の中身は リーダー部 と 4バイト(8ビットで1バイト) のデータでできています。
 4バイトのデータはそれぞれ [カスタムコード@] [カスタムコードA] [データコード] [データコード(反転)] といった内容です。
 リーダーコード や ビットの "1" "0" は、0.56ms を 1T として、 Highレベル ("1") Lowレベル ("0") の長さを変化させて識別しています。※下図参照



■■■■■■ データの送信、受信について  ■■■■■■

 データはbit(ビット)単位で送ります。送るコードが 01AABBCC (16進数 4byte(バイト)) の場合、リーダーコードの後に 32bit分 のデータを送信します。
 01 を 2進数に変換すると 00000001 ですが、送信時は 0bit から 7bit の順に送るので、1→0→0→0→0→0→0→0 の順でデータを送ります。


■■■■■■ PICマイコンで送信機を作る (参考)  ■■■■■■

 PIC16F688 を使った赤外線リモコンの送信機の作例です。SW1しかないので1ch(チャンネル)送信になります。
 RC2 に赤外線LED、RA0 にSW1(タクトスイッチ)を接続しています。RA0 は PULL-UP にしています。
 SW1を押すと赤外線コードを送信します。
 では、下の送信機回路で使用するPICのプログラムを作ります。



 【1μsのサイクル数を求める】
 PICの処理サイクルは使用クロックの1/4になるので、20MHzのクロックでは毎秒500万サイクルになる。1μsでは5サイクルになります。

 【38KHzの1周期のパルスを作る】
 38KHzの1周期は26.5μsです。ONになる時間を短くすると消費電流が少なくなるので、ONとOFFの長さはそれぞれ ON=8.5μs OFF=18μs にします。
 これをPICのサイクル数で表すと ON=42サイクル OFF=90サイクル にります。
 下図は 38KHz のパルス幅を示した図と PIC で38KHz1周期分の赤外線LEDを発光させるプログラムと、38KHz1周期分の赤外線LEDを発光させないプログラムです。  この2通りのプログラムで信号コードの尺の基準となる "T" を作ります。





 【"T" を作る】
 信号コードの基準となる "T" の ON("1")側とOFF("0")側 を作ります。1Tの幅は0.56ms(560μs)です。  なので、1Tの幅は38KHzでは約21パルス(周期)に相当します。


 


 【各コードを作る(リーダーコード、ビット0、ビット1)】
 上記で作った1Tを基に各コードを作ります。



 【1byte(バイト)のデータを送信するときに呼び出すプログラムを作る】
 1byte(バイト)のデータをWレジスタに読み込み、callでこのプログラムを呼び出すと規定のコードでデータを送信します。
 ここがキモで1byteのデータをbit単でbit0から順にbit7までそれぞれのbitが1 or 0 か btfss で確認しコード変換して送ります。



 【信号コードを送信する】
 SW1のボタンを押すと、この Main2 を実行します。リーダーコードと4byteのデータを送信します。  ここで送信プログラムが終了です。




■■■■■■ PICで受信機を作る (参考)  ■■■■■■





 【実験用 受信基板の仕様】
 赤外線受信モジュールの信号出力(OUT)は、送信側の入力と逆に(通常は"High"のまま)出てくるので、リーダー部の信号は "Low" 待ちになります。
 LED1 は SW4(送信基板) を押すと点灯・消灯を繰り返します。
 LED2 は SW3(送信基板) を押すと点灯・消灯を繰り返します。
 LED3 は SW2(送信基板) を押すと点灯・消灯を繰り返します。

 【コードの受信と処理】
 コードを受信、データ格納、データ照合までの参考例です。詳細なところまでは記述していません。