IR(赤外線)通信は、シンプルで低コストで広く使用されている無線通信技術です。IR光は、波長がわずかに長いことを除いて、可視光にいくらか似ています。IRのこの特性により、人間の目には検出されなくなり、ワイヤレス通信に最適です。
IRリモコンで一部のデバイスを操作するために、IR信号をデコードする必要があるアプリケーションはたくさんあります。したがって、このチュートリアルでは、TSOP1838 IRレシーバーを使用して、Arduinoを使用してIRリモートデコーダーを構築します。すべてのボタンの16進コードがMicrosoftExcelSheetに記録されます。このシンプルなIRリモートコントロールデコーダーは、IRリモートコントロールロボット、ホームオートメーション、その他のIR制御プロジェクトなどのプロジェクトで使用できます。
以前は、IRリモートとTSOPレシーバーを使用して、次のような多くの便利なアプリケーションを構築していました。
- IRリモート制御トライアック調光回路
- Arduinoを使用したIRリモート制御ホームオートメーション
- PICマイクロコントローラーを使用したIRリモート制御ホームオートメーション
- ArduinoとBluetoothを使用した携帯電話制御AC
必要なコンポーネント
- Arduino Uno / Arduino Nano
- IRレシーバー(TSOP1838)
- ジャンパー線
- ブレッドボード
IR通信はどのように機能しますか?
他の通信システムと同様に、赤外線通信にも送信機と受信機があります。送信機はLEDのように見えますが、可視スペクトルではなくIRスペクトルで光を生成します。 IRレシーバーは、IR光を電気信号に変換するプリアンプが組み込まれたフォトダイオードです。 IR通信の場合、送信機と受信機の両方が互いに向き合う必要があります。 IR送信機と受信機の回路の詳細については、リンクをたどってください。
リモートボタンを押すと、IR LED(送信機)が赤外光を発します。この光は、通常はフォトダイオードまたはフォトトランジスタであるレシーバーによって受信されます。しかし、IR光は、太陽、電球、および熱を生成するその他のものからも放出されます。これは送信機信号に干渉する可能性があるため、防止するために、送信機信号は36 kHz〜46kHzの搬送周波数を使用して変調されます。信号を受信すると、IRレシーバーは信号を復調し、マイクロコントローラーに送信する前にバイナリに変換します。
ここでは、IR信号の送信にTVリモコンを使用し、受信にArduinoを備えたTSOP1838を使用しています。
また、TVリモコンジャマー回路やIRテスター回路など、さまざまなIRベースのアプリケーションをここで確認してください。
回路図
Arduinoを使用したIRリモートデコーダーの回路図を以下に示します。
IRレシーバーセンサーにはVs、GND、およびDataの3つのピンしかないため、接続は非常に簡単です。IRレシーバーのVsとGNDピンをArduinoの3.3VGNDピンに接続し、データピンをArduinoのデジタルピン2に接続します。
ArduinoIRリモートデコーダーのプログラミング
ArduinoIRデコーダーの完全なコードはページの最後にあります。
IR Remoteをデコードするには、まず、IRライブラリをダウンロードしてArduinoIDEに追加する必要があります。IRRemoteライブラリはここからダウンロードできます。ファイルをダウンロードした後、Arduino IDEを開き、 [スケッチ]> [ライブラリを含める]> [Add.Zipライブラリ]に移動します 。ライブラリファイルを選択し、[開く]をクリックします。
IRリモートライブラリファイルを含めてコードを開始します。
#include
その後、IRレシーバーのデータピンを接続したArduinoピンを定義します。私の場合、ArduinoのD2ピンに接続されています。
int IRPIN = 2;
その後、IRレシーバーピンのインスタンスを作成します。
IRrecv irrecv(IRPIN);
次の行で、 decode_results クラスのオブジェクトを定義します。これは、デコードされた情報を送信するためにIRレシーバーによって使用されます。
decode_results result;
setup() 関数内で、シリアル通信を開始し、 IRrecv 関数 enableIRIn()を 呼び出してIRレシーバーを起動し ます。
void setup(){Serial.begin(9600); Serial.println( "IRinの有効化"); irrecv.enableIRIn(); Serial.println( "Enabled IRin"); Initialize_streamer(); }
内 ループ() 関数、 irrecv.decode 常に新しい信号および新たな信号を受信した場合、受信信号コードが中に格納されるチェック result.value 機能。
void loop(){if(irrecv.decode(&result)){Serial.print( "Value:"); Serial.println(result.value、HEX); Write_streamer(); irrecv.resume(); } delay(500); }
ArduinoからExcelシートにデータを送信するために、PLX-DAQを使用しています。 Write_streamer() 関数を使用して、シリアルモニターに値を表示するのと同じように、特定のパターンでデータをシリアルに送信します。キーラインを以下に説明します。
void Write_streamer(){Serial.print( "DATA"); //常に "DATA"を記述して、以下をData Serial.print( "、");として示します。// "、" Serial.print(result.value、HEX);を使用して次の列に移動します //日付をExcelに保存Serial.print( "、"); // "、" Serial.println();を使用して次の列に移動します //行の終わりは次の行に移動します}
ハードウェアとプログラムの準備ができたら、プログラムをArduino NanoBoardにアップロードします。コードをアップロードしたら、リモコンをIRレシーバーに向け、リモートボタンを押します。すべてのボタンの16進コードがシリアルモニターに印刷されます。
IRリモートデコーダーデータをExcelシートに保存する
次に、Excelシートにデータを送信するために、PLX-DAQを使用します。これは、ArduinoからラップトップまたはPCのExcelシートに直接値を書き込むのに役立つExcelプラグインソフトウェアです。リンクを使用してファイルをダウンロードします。ダウンロード後、ファイルを解凍し、.exeファイルをクリックしてインストールします。デスクトップにPLX-DAQという名前のフォルダが作成されます。
次に、デスクトップフォルダから「 PLX-DAQスプレッドシート」 ファイルを開きます。Excelでマクロが無効になっている場合は、次の画像に示すようなセキュリティブロックが表示されます。
[オプション]-> [コンテンツを有効にする]-> [完了]-> [OK] をクリックして、マクロを有効にします。この後、次の画面が表示されます。
次に、ボーレートを「9600」として選択し、Arduinoが接続されているポートを選択し、[接続]をクリックしてデータストリーミングを開始します。次の図に示すように、値がログに記録され始めるはずです。
これは、Arduino IRリモートデコーダーを簡単に構築して、IRリモート信号を同等のHEXコードに変換する方法です。
デモビデオ付きの完全なArduinoコードを以下に示します。