【Arduino】 IRレシーバー と IRリモート

LESSON 036  037

  リモコンから送信した赤外線を赤外線受信モジュールで受信します。

○ 今回はIRレシーバー(赤外線受信モジュール)とIRリモート(赤外線の送信機・リモコン)についてを説明します。
  
○ 原理はリモコンから送信した38KHzのパルス信号の赤外線を赤外線受信モジュールで受信します。
  パルス信号の組み合わせでリモコン操作が可能になりますが、
         スタート部   データコード部    ストップ部
  の3部構成のビット列になっています。  

      送りたい信号をエンコーダでパルス信号に変換した赤外線で送信
    
   赤外線受信モジュールで受信した信号をデコードで変換し必要な信号を受信  
○ 主な赤外線リモコン信号のフォーマットは、
    ・ 家電製品協会(AEHA)方式
    ・ NEC方式
    ・ ソニーSIRC方式
  があります。また、世界には多くの独自のフォーマットが存在します。

構成部品  
       マイコンボード  Arduino
       USBケーブル
       赤外線受信モジュール
       ジャンパーケーブル
       ブレッドボード
       リモコン
配線図
   

GND   ⇒   G
5V    ⇒   R
GPIO 2   ⇒   Y

 

LESSON 036
  リモコンから送信したデータを読み取る。

スケッチ《 test028 》
#include<IRremote.hpp>
int IRPin = 2; 
IRrecv IRrec(IRPin);
decode_results results; 
void setup() {
  IRrec.enableIRIn();
  Serial.begin(9600); 
  delay(500);
}
void loop() {
  if (IRrec.decode(&results)){  
    Serial.println(results.value);
    Serial.println(results.value, HEX); 
    Serial.println(results.bits); 
    switch (results.decode_type){
            case NEC: Serial.println("NEC"); break ;
            case SONY: Serial.println("SONY"); break ;
            case RC5: Serial.println("RC5"); break ;
            case RC6: Serial.println("RC6"); break ;
            case SHARP: Serial.println("SHARP"); break ;
            case JVC: Serial.println("JVC"); break ;        
            case SAMSUNG: Serial.println("SAMSUNG"); break ;
            case LG: Serial.println("LG"); break ;
            case WHYNTER: Serial.println("WHYNTER"); break ;            
            case PANASONIC: Serial.println("PANASONIC"); break ;
            case DENON: Serial.println("DENON"); break ;
          default:
            case UNKNOWN: Serial.println("UNKNOWN"); break ;
          }
    IRrec.resume();
  }  
  delay(1000);
}
解説

#include <IRremote.hpp>
複数の種類のコントローラの赤外線信号を送受信出来るライブラリです。
       
 IRrecv  変数1(ピン);
赤外線受信用 の変数を設定
         
decode_results 変数2;
デコードの結果を 変数2 に設定
          

  • void setup() 内
    変数1.enableIRIn();

    受信を開始
         
  • void loop() 内
    変数1.decode(&変数2))

    IR レシーバーに感知したデータをデコード
            
    Serial.println(変数2.value); 
    受信した結果を10進数で表示
      
    Serial.println(変数2.value, HEX); 
    受信した結果を16進数で表示
      
    Serial.println(変数2.bits); 
    受信した結果をビット長で表示  
      
    Serial.println(変数2
    .decode_type); 

    受信した結果のデコードタイプを表示
       
    変数1.resume();
    IR レシーバーをクリアにする。

結果      

リモコンの ” 0 ” を押すと デコードされた値が表示されます。 


LESSON 037

  リモコンから送信したデータで制御する。

《 test029 》
#include<IRremote.h>
int IRPin = 2; 
IRrecv IRrec(IRPin);
decode_results results; 
void setup() {
  IRrec.enableIRIn();
  Serial.begin(9600); 
  delay(500);
}
void loop() {
  if (IRrec.decode(&results)){  
     if( results.value == 0xFF6897){
      Serial.println("-- 0 --");
    }
    IRrec.resume();
  }  
  delay(1000);
}

  〇 スケッチ の 解説

  • void loop() 内
    if( 変数2.value == コード)
          { Serial.println(“ ”); }

    デコードされた値と 指定したコードが等しければ、— 0 – を表示します。

結果

まとめ

○ LESSONはワザと二つにしました。
   LESSON 36 では リモコンの各スイッチの信号を調べるため
   LESSON 37 では リモコンの遠隔操作のための取扱い方法
       遠隔操作出来るリモコンを探して見てはいかがでしょうか。
       
      
○ Arduino を 学ぶ上で書籍やWebpageを参考に作っていますが、私なりに噛み砕いて書いているつもりですが、判らない点がありましたら連絡下さい。

目次