これまで、DTMFベースのホームオートメーション、Arduinoを使用したPC制御のホームオートメーション、Bluetooth制御のホームオートメーションなど、さまざまなテクノロジーを使用したさまざまなタイプのホームオートメーションについて説明してきました。このプロジェクトでは、家電製品の制御にIRベースの無線通信を使用しています。このプロジェクトでは、Arduinoを使用してプロセス全体を制御します。AC家電を制御するためにIRTV / DVD / MP3リモコンを使用して、いくつかのコマンドを制御システムに送信します。Arduinoは、IRリモコンから信号を受信した後、リレードライバーを介して家電製品のオン/オフを切り替えるリレーに関連信号を送信します。
作業説明:
このプロジェクトの作業は簡単に理解できます。IR Remoteのいずれかのボタンを押すと、remoteは38Khzの変調周波数を使用してエンコードされたパルスの列の形式でコードを送信します。これらのパルスはTSOP1738センサーによって受信され、Arduinoによって読み取られます。次に、Arduinoは受信したパルス列を16進値にデコードし、そのデコードされた値を、押されたボタンの事前定義された16進値と比較します。一致が発生した場合、Arduinoは相対操作を実行し、適切なコマンドを使用して、対応する結果も16x2LCDに表示されます。このプロジェクトでは、ファン、ライト、テレビを示すデモンストレーション用に、異なる色の3つの電球を使用しました。
さまざまなデバイスで利用できるIRリモートには多くの種類がありますが、それらのほとんどは約38KHzの周波数信号で動作します。このプロジェクトでは、IRTVリモコンを使用して家電製品を制御します。IRリモート信号の検出には、TSOP1738IRレシーバーを使用します。このTSOP1738センサーは、38Khz周波数信号を感知できます。IRリモートとTSOP1738の動作については、この記事で詳しく説明しています:IR送信機と受信機
コンポーネント:
- Arduino UNO
- TSOP1738
- IR TV / DVDリモート
- ULN2003
- リレー5ボルト
- ホルダー付き電球
- 接続線
- ブレッドボード
- 16x2 LCD
- 電源
- PVT
- IC 7805
このプロジェクトでは、ファン、ライト、テレビをそれぞれ制御するためにIRリモコンの7、8、9の数字ボタンを使用し、すべてのアプライアンスを同時にオン/オフするためにオン/オフボタン(電源ボタン)を使用しました。
ここでは、単一の家電製品のオンとオフを切り替える方法を使用しました。 トグル方式 ボタンが何回も押されたのか、奇数回押されたのかを知ることに他なりません。これは、リマインダーを2(i%2)で割った後に取得することでわかります。リマインダーがある場合はデバイスがオンになり、リマインダーが0の場合はオフになります。リモートでキー7が押された後、リモートがTSOPIRレシーバーを介してArduinoに信号を送信するとします。次に、Arduinoはそれをデコードし、デコードされた値を結果変数に格納します。これで、結果変数の16進値は0x1FE00FFになり、キー7の事前定義された16進値(上の画像を参照)と照合した後、Arduinoはファンをオンにします。同じキー(キー7)をもう一度押すと、IRは同じコードを送信します。Arduinoは以前と同じコードを取得し、同じコードと一致しますが、今回はビット(i%2)を切り替えたため、ファンがオフになりました。
Arduinoを使用したIRリモートコントロール信号のデコード:
DVDNECタイプのリモートデコード出力コードのリストは次のとおりです。
IRリモコンのデコードされた出力がわからない場合は、簡単に見つけることができます。次の手順に従ってください。
- ここhttps://github.com/z3t0/Arduino-IRremoteからIRリモートライブラリをダウンロードします。
- それを解凍し、Arduinoの「ライブラリ」フォルダに配置します。次に、抽出したフォルダーの名前をIRremoteに変更します。
- Arduinoから以下のプログラムを実行し、ArduinoIDEでシリアルモニターウィンドウを開きます。次に、任意のIR Remoteボタンを押して、SerialMonitorウィンドウに対応するデコードされた16進出力を確認します。
* IRremote:IRrecvDemo-IRrecvでIRコードを受信する方法を示します* IR検出器/復調器を入力RECV_PINに接続する必要があります。*バージョン0.1 2009年7月* Copyright 2009 Ken Shirriff * http://arcfn.com * / #include
上記のプログラムは、IRremoteライブラリの「examples」フォルダから取得したものです。IRリモートの使用方法について詳しくは、他の例を確認してください。これが、IRリモート出力をデコードする方法です。
回路の説明:
この回路の接続は非常に簡単です。ここでは、液晶ディスプレイを使用して、4ビットモードでarduinoに直接接続されている家電製品のステータスを表示します。LCDのデータピン、すなわちRS、EN、D4、D5、D6、D7はarduinoデジタルピン番号6、7、8、9、10、11に接続されています。TSOP1738の出力ピンはデジタルピン番号14(A )Arduinoの。また、Vccピンは+5ボルトに接続され、GNDピンは回路のアース端子に接続されています。リレーの駆動には、リレードライバ、つまりULN2003も使用されます。5ボルトのSPDT3リレーは、LIGHT、FAN、およびTVの制御に使用されます。また、リレーはリレードライバULN2003を介してarduinoのピン番号3、4、5に接続され、それぞれLIGHT、FAN、TVを制御します。
コードの説明:
このプロジェクトのプログラミング部分ではまずプログラミングで、Googleで簡単に入手できるIRリモート用のライブラリが含まれています。そして、ピンを定義し、変数を宣言します。
#include
次に、液晶ディスプレイ用のヘッダーを含め、LCDおよび家電製品のデータピンと制御ピンを定義します。
#include
その後、LCDを初期化し、ファン、ライト、テレビに使用されるピンの方向を指定する必要があります。
void setup(){Serial.begin(9600); lcd.begin(16,2); pinMode(ファン、出力); pinMode(Light、OUTPUT); pinMode(TV、OUTPUT);
すでに説明したように、コードの以下の部分は、受信した16進値をそのボタンの定義済みの16進コードと比較するために使用されます。一致した場合は、コードで指定された適切な関数を使用して相対演算が実行されます。
void loop(){if(irrecv.decode(&results)){Serial.println(results.value、HEX); delay(100); lcd.setCursor(0,0); lcd.print( "ファンライトTV"); if(results.value == 0x1FE00FF){i ++; int x = i%2; digitalWrite(Fan、x);