古いリモコンを再利用:ArduinoでDIYスマートデバイスを構築
必要な部品と用品
| Arduino Nano R3 | ×1 |
| 5mm赤色LED(ステータス表示用) | ×3 |
| 5mm緑色LED | ×1 |
| 5mm黄色LED | ×1 |
| 青色LED | ×2 |
| ブレッドボード(フルサイズ) | ×1 |
| ジャンパーワイヤー(汎用) | ×1 |
| トグルスイッチ(OFF-ON、SPST) | ×1 |
| ブレッドボード用電源モジュール(5V/3.3V) | ×1 |
| 赤外線受信モジュール(KY-022 37.9kHz等) | ×1 |
プロジェクトについて
古いVCR、テレビ、DVDプレーヤーなどの余ったリモコンを再利用して、ランプやヒーターなどの機器を制御できるスマートデバイスを作ります。ここではデモンストレーションとして最大6つのLEDをトグル制御しますが、リレーやパワートランジスタを使えば5V信号で制御できるあらゆる機器に応用可能です。
仕組み
任意のリモコンから6つの赤外線コードを「学習」させ、ArduinoのEEPROM(不揮発性メモリ)に保存します。電源を切っても記憶されたコードは保持されます。学習モードと実行モードはトグルスイッチで切り替えます。
学習モード
トグルスイッチを「Learn」側に倒すと赤色ステータスLEDが点灯し、学習モードに入ります。LED1が点滅したらリモコンの任意のボタンを押します。コードが認識されるとステータスLEDが高速点滅し、次のLED(LED2)の学習に移ります。これを6回繰り返します。完了するとステータスLEDが1秒間隔でゆっくり点滅し、実行モードへの切り替えを促します。
実行モード
トグルスイッチを「Run」側に戻すと実行モードになります。登録されたリモコンのボタンを押すと、対応するLEDがトグル(ON/OFF切り替え)します。登録されていないコードを受信すると全LEDが消灯(リセット)します。
重複チェックとエラー表示
起動時にEEPROMの6コードを読み込み、連続する重複をチェックします。重複が見つかった場合、該当するLEDを点滅させて警告します(同一機能を複数ボタンに割り当てたい場合もあるため、強制再学習はしません)。ステータスLEDの点滅パターンやシリアルモニター出力でモード状態やエラーを確認できます。
実用化のヒント
- 赤外線受信モジュールを約45度下向きに曲げ、段ボール製の簡易フードを被せると、外乱光の影響を減らし5〜8m先からでも安定して受信できます。
- リレーを並列接続すれば100V家電も制御可能です。ただし、一部の出力は論理が反転する(0VでON)ため、NANDゲート(CD4011等)で信号反転が必要な場合があります。商用電源を扱う際は感電・火災に十分注意してください。
ソースコード
コードは長いため要点のみ掲載します。完全版はダウンロードしてご確認ください。
/* IRリモコン再利用スケッチ - 6つのLEDをトグル制御
Paul M Dunphy VE1DX March 2020 */
#include <IRremote.h>
#include <EEPROM.h>
// ピン定義
const int RECV_PIN = 2;
const int LED_PINS[6] = {12, 11, 10, 9, 8, 7};
const int SWITCH_PIN = 4;
const int STATUS_PIN = 5;
IRrecv irrecv(RECV_PIN);
decode_results results;
unsigned long savedCodes[6];
boolean learnMode = false;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
// LEDピンを出力に設定、全消灯
// スイッチピンを入力、ステータスLEDを出力に設定
// EEPROMから保存済みコードを読み込み、重複チェック
}
void loop() {
learnMode = (digitalRead(SWITCH_PIN) == HIGH);
if (learnMode) {
digitalWrite(STATUS_PIN, HIGH);
learnModeFunction();
} else {
digitalWrite(STATUS_PIN, LOW);
runModeFunction();
}
}
// 学習モード:各LED順に点滅させながらIRコードを取得しEEPROMに保存
// 実行モード:受信コードを保存済みコードと比較、一致すれば対応LEDをトグル
// EEPROM読み書きヘルパー関数(long型を4バイト分解/結合)
回路図
ブレッドボード上の配線図を参照してください。赤外線受信モジュールのVCC/GND/OUT、6個のLED(各330Ω抵抗直列)、トグルスイッチ、ステータスLEDをArduino Nanoの指定ピンに接続します。
製造プロセス
- 発光ダイオード(LED):誕生から100年寿命へ
- Raspberry Pi 3とPubNubでリモート気象監視
- LIRCでプロフェッショナルなRaspberry Piユニバーサルリモコンを構築
- リモート心拍数監視システム:AWS IoTアラート付き
- Arduinoで「棺桶ダンス」メロディーを再現するプロジェクト
- 古い携帯電話をスマートリモートスイッチに変身させよう
- シングルLEDライトペインティング:自作モーター駆動システムで動的な画像を描く
- 音声反応型 8 LED ライトディスプレイ
- スマートArduino四足歩行ロボットの製作:ステップバイステップガイド
- 制御プラットフォーム選定の5つの重要基準
- 陳腐化した産業機械の安全・効率的な処分方法