TVリモコンであらゆるデバイスを制御: Arduino IRステップバイステップチュートリアル
このArduino IRチュートリアルでは、TVリモコンとArduinoを使って電子デバイスを制御する方法を学びます。シンプルなLEDの制御からDCファンの速度制御、高電圧家電の制御まで、いくつかの例を作成します。以下の動画をご覧いただくか、書面によるチュートリアルをお読みください。 TVリモコンの前面にあるLEDがボタンを押すと点滅するのがわかります。実はこれはカメラを通してしか見えません。人間の目には見えない赤外線だからです。 この点滅は、ボタンを押すと赤外線LEDが光のバーストやパルスを送信していることを意味し、それを赤外線受信機で受信する必要があります。 このチュートリアルではV 34838 IR受信機を使用します。そのブロック図から、受信信号を増幅、フィルタリング、復調し、Arduinoボードのデジタル入力で受け入れ可能なクリーンなロジック出力を提供することがわかります。 Ken Shirriff氏のArduino-IRremoteライブラリとそのデモ例を使用すると、シリアルモニターで各ボタン押下に対応する固有の16進数コードを確認でき、プログラム作成時に利用できます。 Ken Shirriff氏のArduino-IRremoteライブラリ: https://github.com/z3t0/Arduino-IRremote 以下のサイトから部品を入手できます: TVリモコンの4色ボタンを使ってLEDの色を制御します。まず、IRrecvDemo例をアップロードしてシリアルモニターを実行し、これらのボタンを押してそれぞれの16進数コードを書き留めます。 次にデモコードを以下のように修正し、特定のボタンが押されたときに実行されるif文を追加します。各ボタンに対して適切なRGB値を設定し、setColor()関数でLEDを特定の色に点灯させます。ArduinoでのRGB LEDの仕組みについて詳しくは、Arduino RGBチュートリアルをご覧ください。 Arduino IR制御RGB LEDの回路図はこちら: この例に必要なコンポーネント: この例では、TVリモコンの前進ボタンと後退ボタンを使ってDCファンの速度を制御します。ファンの速度制御にはこの回路図を使用します。実際にはPWM信号をボタンで制御します。この回路図の仕組みについて詳しくは、Arduinoモーターチュートリアルをご覧ください。 この例のソースコードはこちらです。analogWrite()関数でトランジスタのベースにPWM信号を送信します。再生ボタンでモーターを最大速度(PWMデューティサイクル100%)で開始し、停止ボタンで停止します。前進ボタンを押すたびにPWM信号のデューティサイクルを増やしてファンの速度を上げ、後退ボタンで下げます。 このチュートリアルに必要なコンポーネント: 最後の例は、TVリモコンを使って高電圧家電を制御します。そのためにリレーモジュールが必要です。HL-52Sリレーモジュールを使用します。これは250Vおよび125V ACで10Aの定格があります。Arduinoボードのピン7からリレーを制御し、そこにソケットを接続して任意の高電圧電子デバイスを挿せるようにします。 高電圧を使用するため、非常に慎重に行ってください。不適切または誤った使用は重大な怪我や死亡の原因となる可能性があり、私はあなたの行動について一切責任を負いません。リレーの使い方や、任意の電子デバイスを挿せるソケットの作り方については、Arduinoリレーチュートリアルをご覧ください。 この例のソースコードはこちら:仕組み




TVリモコンでRGB LEDを制御

/*
* TVリモコンでRGB LEDを制御
*
* Ken Shirriff IRremoteライブラリのIRrecvDemo例を改変
* Ken Shirriff
* https://arcfn.com
*
* 改変: Dejan Nedelkovski,
* www.HowToMechatronics.com
*/
#include <IRremote.h>
int RECV_PIN = 8; // IR受信機 - Arduinoピン番号8
IRrecv irrecv(RECV_PIN);
decode_results results;
int redPin = 5;
int greenPin = 6;
int bluePin = 7;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn(); // 受信機を開始
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) {
if (results.value == 0xF21D7D46) { // 赤ボタン
setColor(255, 0, 0); // RGB LEDに赤色を設定
delay(100);
}
if (results.value == 0x87CF1B29) { // 緑ボタン
setColor(0, 255, 0); // 緑色
delay(100);
}
if (results.value == 0x6623D37C) { // 黄ボタン
setColor(255, 255, 0); // 黄色
delay(100);
}
if (results.value == 0x854115F2) { // 青ボタン
setColor(0, 0, 255); // 青色
delay(100);
}
if (results.value == 0x1639AB6E) { // 停止ボタン
setColor(0, 0, 0); // 消灯
delay(100);
}
irrecv.resume(); // 次の値を受信
}
delay(100);
}
// RGB LEDを作動させるカスタム関数
void setColor(int red, int green, int blue) {
analogWrite(redPin, red); // 赤ピンにPWM信号を送信
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}コード言語: Arduino (arduino)
TVリモコンでDCファンの速度を制御

/*
* TVリモコンでDCファン速度を制御
*
* Ken Shirriff IRremoteライブラリのIRrecvDemo例を改変
* Ken Shirriff
* https://arcfn.com
*
* 改変: Dejan Nedelkovski,
* www.HowToMechatronics.com
*/
#include <IRremote.h>
int RECV_PIN = 8; // IR受信機 - Arduinoピン番号8
int pwmPin = 7; // Arduinoピン番号7をトランジスタのベースに接続
int pwmValue;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn(); // 受信機を開始
pinMode(pwmPin, OUTPUT);
pwmValue = 0; // モーター停止状態でプログラム開始
}
void loop() {
if (irrecv.decode(&results)) {
analogWrite(pwmPin, pwmValue);
if (results.value == 0xAFAF8374) { // 再生ボタン
pwmValue = 255; // 100%デューティサイクル | 最大速度
}
if (results.value == 0x98519C65) { // 停止ボタン
pwmValue = 0; // 0%デューティサイクル | 停止
}
if (results.value == 0x93F1BA08) { // 前進ボタン
if(pwmValue <= 245){
pwmValue = pwmValue + 10; // PWM信号のデューティサイクルを増加
delay(20);
}
}
if (results.value == 0x71D086FF) { // 後退ボタン
if(pwmValue >= 20){
pwmValue = pwmValue - 10; // PWM信号のデューティサイクルを減少
delay(20);
}
}
Serial.print(pwmValue);
Serial.print(" ");
Serial.println(results.value, HEX);
irrecv.resume(); // 次の値を受信
}
delay(100);
}コード言語: Arduino (arduino)TVリモコンで高電圧家電を制御


/*
* TVリモコンで高電圧家電を制御
*
* Ken Shirriff IRremoteライブラリのIRrecvDemo例を改変
* Ken Shirriff
* https://arcfn.com
*
* 改変: Dejan,
* www.HowToMechatronics.com
*/
#include <IRremote.h>
int RECV_PIN = 8;
int relayOut = 7;
int buttonState;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn(); // 受信機を開始
pinMode(relayOut, OUTPUT);
buttonState = HIGH; // リレー停止状態でプログラム開始。リレー入力は逆動作なのでHIGHは非作動
}
void loop() {
buttonState = digitalRead(relayOut);
if (irrecv.decode(&results)) {
if (results.value == 0xAFAF8374) { // 再生ボタン
digitalWrite(relayOut, LOW); // リレーを作動
}
if (results.value == 0x98519C65) { // 停止ボタン
digitalWrite(relayOut, HIGH); // リレーを非作動
}
irrecv.resume(); // 次の値を受信
}
Serial.print(" ");
Serial.println(results.value, HEX);
delay(100);
}コード言語: Arduino (arduino)
製造プロセス
- Arduinoと1Sheeldで作る万能Androidリモコン──IR制御で家電を一括操作
- スマート貯金箱を作ろう:Arduino Nanoでコインアクセプターを制御
- 自作Arduino TVリモコン:電池駆動・3Dプリントケース・省電力設計
- ArduinoでBluetooth経由でLEDを制御 – シンプルDIYガイド
- Arduino Nanoとジョイスティックで2軸ステッピングモーターを制御:Visuinoで簡単プログラミング
- ビリーバスフィッシュを任意の音源で動かす:ステップバイステップガイド
- ThimbleKrox: Arduino MicroとMPU-6050を用いた指装着型マウス制御
- Arduinoでゴキブリ制御システムを自作 - 30ドル以下で構築
- Arduino UnoとBluetoothでラジコンカーを遠隔操作:ステップバイステップガイド
- Arduinoロボットアーム「LittleArm」をAndroidアプリでBluetooth制御
- Arduino Unoで25kHz 4ピンPWMファンを制御 – 製作・コード・テスト