TakHomのアイコン画像
TakHom 2021年02月28日作成 (2021年03月02日更新)
製作品 製作品 閲覧数 2416
TakHom 2021年02月28日作成 (2021年03月02日更新) 製作品 製作品 閲覧数 2416

赤外線リモコンでON/OFFする電源タップ

赤外線リモコンでON/OFFする電源タップ

赤外線リモコンでON/OFFできる電源タップ(3口)を作成しました。
私は夜間は部屋の天井照明は点けずにインテリアライトを使用しているのですが、設置場所によっては電源スイッチに手が届きづらく、ON/OFFが結構面倒だったりします。
そこでリモコンでON/OFFできる電源タップを作って楽しようというわけです。

構成

構成図

キーパーツ

AC100VをON/OFFするために、秋月電子のソリッド・ステート・リレー(SSR)キット 25A(20A)タイプを使用しました。

赤外線リモコンのコード受信とSSRキットの制御にはSeeeduino XIAOを使います。たかだか入力1本、出力3本の計4本のIOで済むので、フットプリントの小ささでXIAOを選びました。

リモコンのコードを受け取ったらXIAOがSSRをON/OFFする、という仕組みです。

その他の主な部品

IRセンサは赤外線リモコン受信モジュール SPS-442-1(38kHz)。お買い得だったので。

AC/DCはIRM-01-5をDigi-Keyで買ってみました。コンパクトサイズでAC側2ピン、DC側2ピンの4ピンのみ。2.54mmピッチでユニバーサル基板にポン付けするだけ。楽ですね。

そして肝心?の赤外線リモコンですが、100円ショップで見つけた↓を使ってみます。
赤外線リモコン

回路図

回路図
Seeeduino XIAO(というか本体のSAMD21)のIO電流は吐き出し7mA、吸い込み10mA程度が限界です。一方SSRキットの制御入力(フォトカプラのLED)には安定動作のためには10mA以上流したほうが良いようなので、トランジスタでドライブしています。

AC電源ラインのヒューズは2Aとしました。これはSSRキット1個の放熱不要なワット数(200W)で決めています。負荷には数W程度のLED照明を想定しているので十分でしょう。

AC電源ラインの分岐に使っているのはWAGOのWFRシリーズです。ホームセンターの電気器具エリアでよく見かけます。

点線はピンヘッダ、ピンソケットでハーネス状につないでいるところです。制御基板の実装はユニバーサル基板を使いました。

プログラム

お手軽なArduinoで作成です。

赤外線リモコンの受信に関してはArduino-IRremoteという素晴らしいライブラリがありますので、使わない手はないでしょう。

リモコンコードの特定

リモコンはボタンに対応したコードを送信してきますが、まずは100均リモコンのコードを特定する必要があります。
以下のスケッチで取得できました。

❗️ IRremoteで検索して出てくる日本語情報はもう古く、動かないものばかりです(若干ハマった)。

赤外線リモコンのコードを取得する

#include <IRremote.h> /* * 赤外線リモコンのコードを取得する */ #define IR_INPUT_PIN 7 IRrecv reciver(IR_INPUT_PIN); void setup() { pinMode(IR_INPUT_PIN, INPUT); Serial.begin(115200); delay(2000); reciver.enableIRIn(); Serial.println("Ready to receive IR signals."); } void loop() { if(reciver.decode()) { Serial.print("Recived: "); Serial.println(reciver.results.value, HEX); reciver.resume(); } }

結果としては下表のとおり。

ボタン コード
ON 0xFF807F
OFF 0xFF00FF
+ 0xFF30CF
- 0xFF906F
10% 0xFF50AF
40% 0xFFA857
80% 0xFFB04F
100% 0xFF6897
10 0xFF708F
30 0xFF28D7
60 0xFF609F
120 0xFF10EF

完成スケッチ

リモコンのボタンに対する動作は、SSRのONとOFFを個別に割り当てることにしました。

SSRキット1はONボタンでON、OFFボタンでOFF。SSRキット2は+ボタンでON、ーボタンでOFF・・・といった具合です。

ロジックは単純に受信したコードでswitch-caseして、ONさせるコードならGPIOをHIGH、OFFにするコードならLOWにしているだけです。

VS Code & Platform IOで開発したので、1行目にArduino.hをインクルードしています。

完成スケッチ

#include <Arduino.h> #include <IRremote.h> /* * 赤外線リモコン制御電源タップ */ // ピン割り当て #define CHANNEL1 0 // SSRキット1 #define CHANNEL2 3 // SSRキット2 #define CHANNEL3 6 // SSRキット3 #define IR_INPUT_PIN 7 // IR受信モジュールVout // リモコンコード #define IR_CODE_ON 0xFF807F // ONボタン #define IR_CODE_OFF 0xFF00FF // OFFボタン #define IR_CODE_PLUS 0xFF30CF // +ボタン #define IR_CODE_MINUS 0xFF906F // -ボタン #define IR_CODE_10PER 0xFF50AF // 10%ボタン #define IR_CODE_40PER 0xFFA857 // 40%ボタン IRrecv reciver(IR_INPUT_PIN); void setup() { // setting output pinMode(CHANNEL1, OUTPUT); digitalWrite(CHANNEL1, LOW); pinMode(CHANNEL2, OUTPUT); digitalWrite(CHANNEL2, LOW); pinMode(CHANNEL3, OUTPUT); digitalWrite(CHANNEL3, LOW); // setting IR input pinMode(IR_INPUT_PIN, INPUT); reciver.enableIRIn(); } void loop() { if(reciver.decode()) { switch (reciver.results.value) { case IR_CODE_ON: digitalWrite(CHANNEL1, HIGH); break; case IR_CODE_OFF: digitalWrite(CHANNEL1, LOW); break; case IR_CODE_PLUS: digitalWrite(CHANNEL2, HIGH); break; case IR_CODE_MINUS: digitalWrite(CHANNEL2, LOW); break; case IR_CODE_10PER: digitalWrite(CHANNEL3, HIGH); break; case IR_CODE_40PER: digitalWrite(CHANNEL3, LOW); break; default: // Unknown IR code break; } reciver.resume(); } }

ケース

ケースといえばタカチ、といきたい所ですが、庶民は100円ショップで見繕います。

ちょうど良さそうなのが見つかりました。
使ったケース
仮配置
ぴったりですね。

ケース加工

穴あけ加工はACアウトレット用が3か所、ヒューズホルダの1か所、IRセンサが顔を出す穴1か所、電源コード用に1か所です。
穴あけした様子
基板は3Dプリントでベースのような物を作って、両面テープで貼り付けます。
基板取付ベース
基板の取付け
もろもろ結線して、完成。
結線の様子
完成

動作のようす

最後に動画を載せておきます。
動作のようす

2
TakHomのアイコン画像
Webやクラウドより組込みが好き。 どちらのプロでもありませんので悪しからず。
ログインしてコメントを投稿する