IR(赤外線)通信は、一般的で、安価で使いやすい無線通信技術です。赤外光は可視光線とよく似ていますが、波長が少し長いのが特徴です。つまり、赤外線は人間の目には検出されず、ワイヤレス通信に最適です。このレッスンでは、赤外線送信モジュールと赤外線受信モジュールとOsoyooベーシックボードの使い方を紹介します。
赤外光は、実際には特定の色を持つ通常の光です。波長が約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!)
この小さなユニットは、5Vロジックレベルで動作するマイクロコントローラーに接続することができます。IR送信モジュールを使用すると、このモジュールから信号、コマンド、クエリーを送信できます。一般的には、5フィート以上の距離からテレビのリモコンに使用されます。ロボットの使用には、もう一方の端にIRレシーバーが必要です。
.
ピンが手前を向くように基板を持ち、左側の-はアース、中央のピンは5V電源、右側のSはデジタルピン11です。IRトランスミッターモジュール Keyes KY-005、38kHzの赤外線を発する。
ここをクリック – IR REMOTE CONTROL: ARgithub.com/shirriff/IRremoteDUINO LIBRARY 注意! IRRobotRemoteライブラリのあるIDEの後期バージョンを使用している場合、競合する可能性があるため、そのライブラリを削除する必要があります。Arduino(root)/libraries/RobotIRremoteのパスを必ず削除してください。Arduino(root)のフォルダはArduinoのインストールディレクトリです。ライブラリRobot IRremoteはIRremoteと定義が似ていてエラーになります。
この例では、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コードが表示されます。
DownLoad Url osoyoo.com