注:すべてのosoyoo製品は、arduinoコンテンツと完全に互換性のあるサードパーティボードです。

コンテンツ

  1. はじめに
  2. 準備
  3. IRとは?
  4. 使用例

はじめに

IR(赤外線)通信は、一般的で、安価で使いやすい無線通信技術です。赤外光は可視光線とよく似ていますが、波長が少し長いのが特徴です。つまり、赤外線は人間の目には検出されず、ワイヤレス通信に最適です。このレッスンでは、赤外線送信モジュールと赤外線受信モジュールとOsoyooベーシックボードの使い方を紹介します。

準備

ハードウエア

ソフトウェア

IRとは?

赤外光は、実際には特定の色を持つ通常の光です。波長が約950nmと可視光線より低いため、私たち人間にはこの色が見えません。IRがリモコン用に選ばれる理由のひとつはここにあります。もう一つの理由は、IR LEDは非常に簡単に作ることができるため、非常に安価に入手することができ、ホビイストが自分のプロジェクトにIRコントロールを使うのに理想的だからである。赤外線の光源は他にもたくさんある。太陽は最も明るい光源ですが、その他にも電球、ろうそく、セントラルヒーティングシステム、そして私たちの身体でさえも赤外線を放射しています。赤外線通信の一般的な変調方式は38kHz変調と呼ばれるものです。38kHz信号のような規則性を持つ自然光源はほとんどないため、この周波数でデータを送信するIRトランスミッターは、周囲のIRの中で目立つことになる。38kHz変調のIRデータが最も一般的ですが、他の周波数を使うこともできます。リモコンのキーを押すと、送信側のIR LEDがほんの一瞬、非常に速く点滅し、エンコードされたデータを家電製品に送信します。

テレビのリモコンのIR LEDにオシロスコープ をつなぐと、上のような信号が見えるはずだ。この変調された信号は、まさに受信システムが見ているものだ。しかし、受信デバイスのポイントは、信号を復調し、マイクロコントローラーが読み取れるバイナリ波形を出力することです。上の波形でVS1838BのOUTピンを読むと、2番目のようになります。

変調

熱を放射するものはすべて赤外線も放射します。そのため、赤外線メッセージがエラーなく受信機に伝わるように、いくつかの予防措置を講じる必要があります。信号を搬送波周波数で変調することで、信号をノイズより目立たせることができます。変調では、IR光源を特定の周波数で点滅させます。IRレシーバーはその周波数に同調するため、他のすべてを無視することができます。下の写真では、変調された信号が左側の送信機のIR LEDを駆動しているのがわかります。検出された信号は反対側のレシーバーから出ている。

(Thanks to SBProjects.com for the gif and excellent IR resource!)

VS1838B IRレシーバーの技術的詳細

VS1838B赤外線レシーバーピンアウト:

赤外線送信モジュール

この小さなユニットは、5Vロジックレベルで動作するマイクロコントローラーに接続することができます。IR送信モジュールを使用すると、このモジュールから信号、コマンド、クエリーを送信できます。一般的には、5フィート以上の距離からテレビのリモコンに使用されます。ロボットの使用には、もう一方の端にIRレシーバーが必要です。

.

ピンが手前を向くように基板を持ち、左側の-はアース、中央のピンは5V電源、右側のSはデジタルピン11です。IRトランスミッターモジュール Keyes KY-005、38kHzの赤外線を発する。

仕様

ir-remoteライブラリ:

注意:動作させるには、以下のライブラリをインストールする必要があります!

ここをクリック – IR REMOTE CONTROL: ARgithub.com/shirriff/IRremoteDUINO LIBRARY  注意! IRRobotRemoteライブラリのあるIDEの後期バージョンを使用している場合、競合する可能性があるため、そのライブラリを削除する必要があります。Arduino(root)/libraries/RobotIRremoteのパスを必ず削除してください。Arduino(root)のフォルダはArduinoのインストールディレクトリです。ライブラリRobot IRremoteはIRremoteと定義が似ていてエラーになります。

IRリモートからのコード読み取り

この例では、VS1838B IRレシーバーと制御されたボードを使用して、任意のIRリモートからIRリモートコードを読み取る方法を示します。個々のボタン押下からコードを受信できるようになると、リモコンと基本ボードは汎用的な近距離通信インターフェイスになります!IR ライブラリ のインストール方法は、 こちらを参照してください。

接続方法

以下のように回路を組む:

コードプログラム

上記の操作が完了したら、USBケーブルを使用してボードをコンピュータに接続します。IDEを開き、プロジェクトに対応するボード・タイプとポート・タイプを選択してください。次に、以下のスケッチ をボードにロードしてください。

#include <IRremote.h>  // use the IRRemote.h
const int irReceiverPin = 2;  //the SIG of receiver module attach to pin2
IRrecv irrecv(irReceiverPin); //Creates a variable of type IRrecv
decode_results results;    // define resultsas 

void setup()
{
  Serial.begin(9600);    //initialize serial,baudrate is 9600
  irrecv.enableIRIn();   // enable ir receiver module
}

void loop() 
{
  if (irrecv.decode(&results)) //if the ir receiver module receiver data
  {  
    Serial.print("irCode: ");    //print "irCode: "        
    Serial.print(results.value, HEX); //print the value in hexdecimal 
    Serial.print(",  bits: ");  //print" , bits: "         
    Serial.println(results.bits); //print the bits
    irrecv.resume();    // Receive the next value 
  }  
  delay(600); //delay 600ms
}

特定のボタンが押されると、入力された値を使用して、コード内で別のことを行うことができます。各ボタンを押した結果は、value()メソッドを呼び出すことで確認できます:

results.value

シリアル・モニター・ウィンドウに値を表示することができます:

Serial.println(results.value, HEX); //ボタンを押したときの16進数値を表示します。

実行結果

スケッチは、使用しているリモートのタイプを自動的にデコードし、リモートのどのボタンが押されたかを識別します。IDEのシリアルモニターを9600bpsで開き、リモコンのさまざまなボタンを押してみてください。

赤外線信号の送信

この例では、Osoyooベーシックボードとky005モジュールの使い方を紹介します。

接続図

電源ライン(中)とアース(-)をそれぞれ+5とGNDに接続する。信号(S)をボードの3番ピンまたはMegaの9番ピンに接続します。赤外線トランスミッタのピン番号はIRremoteライブラリによって決定されます。

KY-005 OSOYOO 基本ボード
S Pin 3
middle +5V
GND

コードプログラム

以上の操作が完了したら、USBケーブルでボードとコンピュータを接続します。IDEを開き、プロジェクトに対応するボード・タイプとポート・タイプを選択してください。次に、以下のスケッチをボードにロードしてください。

#include <IRremote.h>   // Referring to the IRRemote function library, the header file 
                        //has defined PIN 3 as the signal output, so it can only connect 
                        //to PIN 3. If change, please change it in the header file                                              
IRsend irsend;
                               
void setup()  
{  
  //  
}  
                               
void loop()  
{  
  irsend.sendNEC(0xFF02FD, 32);   //The code 'FF02FD' is the received infrared code  
                                  //if you need to use other functions, please 
                                  //use the receiving tube read the correct encoding value.  
  delay(2000);  
}  

実行結果

アップロードが終了して数秒後、最初のサンプル・デバイスのシリアル・モニターを開くと、画面に対応するIRコードが表示されます。