赤外線リモコン スマートリモコン Smart Remote Controller Arduino PlatformIO ESP32
はじめに
家の中にある家電製品はテレビやオーディオ、エアコンなどリモコン制御できるものがあります。普段あまり意識することなしにチャンネルや音量、温度など手元のリモコン送信機を使って簡単に制御できています。家電製品ごとに付属のリモコン送信機があるので一個にまとめたくなります。
そこでラトックシステム社の赤外線学習リモコンを購入して Google Home のスマートスピーカーと連携させてみました。この構成だと音声入力で赤外線学習リモコンを制御できるのでものすごく便利です。

しかしながら困ったことにラトックシステム社のスマート家電リモコンが Bose 社のオーディオを制御できない事が判明しました。Bose 社のリモコン送信機の赤外線出力波形とラトック社のスマート家電リモコンに記憶させて赤外線を送信した波形をオシロスコープで観察してみると微妙にタイミングがずれています。Bose 社オーディオ側の赤外線リモコン波形のタイミング偏差許容度がどの程度あるのかは分かりませんが何度学習をやり直しても制御することはできませんでした。

振幅を2倍に表示した方が赤外線学習リモコン出力波形
このような背景から赤外線学習リモコンを自分で作ることにしました。
概要
構成
・本機(赤外線リモコン波形学習、送信機)
・制御用GUI
本機は赤外線リモコン送信機の波形を取り込んで記憶する学習機能と、取り込んだ波形に基づいて赤外線を送信する機能を持つハードウエアで構成されています。
ハードウエアの機能を制御するために専用のアプリを開発してもいいのですが、スマートフォンやPCのハードウエアにインストールしなくてもいい ので Web ブラウザを使用することにします。なお Web ブラウザを使用するには Web サーバーが必要になるので ESP32-DevKitC-32E を使って Web サーバーを立てました。
ハードウェア
・ESP32-DevKitC-32E
Wi-Fi モジュールも実装されていて使い勝手のいい Espressif 社の ESP32-DevKitC-32E を使用します。赤外線受光 IC と赤外 LED など少しの外付け部品を追加するだけで動作します。
ソフトウェア
・ESP32-DevKitC-32E 用ファームウェア C++
・Web ブラウザ用 HTML, JavaScript, CSS
システム構成

学習させる場合、PCまたはスマートフォンのブラウザ画面に表示されているボタンを操作して本機を「学習モード」に設定してから家電製品の赤外線リモコン送信機の登録したいボタンを押します。
本機に登録されたボタンを通常の赤外線リモコン送信機として使う場合は、ブラウザに表示されているボタンを操作して「送信モードに」してから登録されたボタンを押します。
外観

本機は部品点数が少なかったのでブレッドボードを使用して組み立てました。物心ついたころから今日まで60年近くにわたり電子工作といえば必ず半田コテを使っていたものです。今回は初めてブレッドボードを使ってみました。開発に割く時間のほとんどがソフトウェアになってきたこともあり、ハードウェアをブレッドボードで気軽に組めるのはいいですね。(図4)


ブラウザの画面はスマートフォンにフィットするようにデザインしている(図6)のでPC画面で表示するとこじんまりと見えてしまいます(図5)。サーバーへの接続は HTTPS 通信は使わず HTTP 通信を使っているのでブラウザ画面に警告が表示されます。本機の場合は自宅内のローカルネットワーク内でのみ使用する設計なので問題となりません。
学習モード操作

ブラウザ画面に表示されるのは、①情報表示窓、②リモコン送信ボタン、③モード切換ボタンおよび④制御ボタンで構成されています。以下に学習モードの操作について説明します。

1.「Smart Remote Controller」の文字が「③モード切換ボタン」として動作します。文字が赤色になると「学習モード」に切換り「④制御ボタン」が表示されて制御待受状態になります。
(図8)

2.「取込」ボタンを押すとボタンの色がオレンジに変わり取込待受状態であることを示します。
(図9)
3.学習させようとする赤外線リモコン送信機を本機に向けてボタンを押して赤外線信号が送信されると本機は自動的に取込を開始します。

4.取込が完了すると「①情報表示窓」に取込んだリモコン信号の長さ(バイト)が表示されます。
(図10)
①情報表示窓には、『やり直すには、リモコン送信機のボタンをもう一度押してください。』のメッセージが表示されます。

5.「登録」ボタンを押すとボタンの色がオレンジに変わり登録待受状態であることを示します。
(図11)
①情報表示窓には、『登録を開始します。
登録する「任意」のボタンを押してください。』のメッセージが表示されます。

6.任意の「リモコン送信ボタン」を押すと登録が完了します。
(図12)
この例では TV グループの右上のボタン(予備_bt_4)に登録しました。

7.同一のリモコン送信ボタンに複数の信号を登録したい場合があります。
複数の機器、例えばTVの電源とオーディオの電源を1つのリモコン送信ボタンで制御したい場合は 6. に続けて 2.「取込」ボタンから繰り返します。リモコン送信ボタンに登録できる信号の数に制限はありません。
この例では2つめのリモコン信号を TV グループの右上のボタン(予備_bt_4)に登録しました。
(図13)

8.「終了」ボタンを押すと 1. の制御待受け状態にもどります。
(図14)

9.「学習モード」を終わる場合は「③モード切換ボタン」を押して文字が青色になれば待受状態となります。
(図15)
送信モード操作

ブラウザ画面に表示されるのは、①情報表示窓、②リモコン送信ボタンおよび③モード切換ボタンで構成されています。以下に送信モードの操作について説明します。

1.「Smart Remote Controller」の文字が青色であることを確認します。赤色の場合は文字を押すことにより青色に変わり「送信モード」に設定されます。
(図17)

2. 任意のリモコン送信ボタンを押せば登録した赤外線リモコン信号が送信されます。
①情報窓にどのボタンを押したかが表示されます。
(図18)
次回はハードウェアの詳細について説明します。
リンク
ESP32を使って学習リモコンを作る(1) 学習リモコンでどんなことができるの?
ESP32を使って学習リモコンを作る(2) ハードウエア
ESP32を使って学習リモコンを作る(3) ソフトウエア 赤外線リモコン受信( irReceive )
ESP32を使って学習リモコンを作る(4) ソフトウエア 赤外線リモコン送信( irSend )
ESP32を使って学習リモコンを作る(5) ソフトウエア webserver
ESP32を使って学習リモコンを作る(6) ソフトウエア FLASH 読書き(SPIFFS)
ESP32を使って学習リモコンを作る(7) ソフトウエア 本機のプロジェクト
ESP32を使って学習リモコンを作る(8) ソフトウエア 本機プロジェクトの勘所
ESP32を使って学習リモコンを作る(9) ハードウエア設計の勘所
ESP32を使って学習リモコンを作る(10) 学習リモコンを操作した時のターミナル出力
Smart_Remote_Controller プロジェクト GitHub
(YI)
コメント