hiro yamamoto works

マイコンハード、ソフトを作ったりしています。
お家や現場のお困りごと解決に!
内容利用は自己責任でお願いします。

赤外線リモコンをWi-Fiで中継する(IRremoteとESP-NOWのサンプルスケッチを合体)

2023-12-24 17:50:29 | 赤外線リモコン

この投稿は書きかけです

タイトルの"Wi-Fiで"は間違いかもしれません。正しくは"ESP-NOW"ですが、解りにくいですね。
複数のSONY製ブルーレイディスクレコーダを使っている知人が、
操作したいレコーダ以外が反応して困っているらしいとのことを
人づてに聞きました。
複数台を使っても問題が起きないように、リモコンモード変更という方法があったはず?

調べてみると
2013年秋以降発売モデル 6台(BD1〜6)
それ以外のモデル 3台(BD1〜3)
(SONYのWebサイトのQ&A検索で”文書番号 : S1110278026483”より引用)

リモコンモード変更で対応できない台数が稼働している?
多分そうなんでしょう。
そんな訳でこのプロジェクトはスタートしております。
他にも応用できるんじゃないかという期待も含んでいます。

しくみ
リモコン操作で送信された赤外線を受信モジュールで受けて、
No.1マイコンでデコードして、ESP-NOW送信する(Masterとして動作)
No.2マイコンはESP-NOW 受信(Slaveとして動作)して、
リモコン信号に戻して、赤外線LEDから送信する。
リモコン操作した動作がレコーダーで実行される。
注意点
リモコンの赤外線は当機受信モジュール以外へ漏れないようにすること。
レコーダーの受光部は当機以外の赤外線信号が受信されないようにすること。

赤外線受信回路
(リモコン受光ユニットGP1UXC41QSのBPF中心周波数38KHzですが、
40KHz(SONY)でも使うことができました。)

赤外線送信回路(コンデンサは1μFでした。33Ωは最適値ではないかもしれません。)

スケッチの準備
IRremoteライブラリをインストール
ArduinoIDEメニューから"スケッチ" → "ライブラリをインクルード" → "ライブラリを管理"
→ ライブラリマネージャで検索すれば見つかるはずです。
"スケッチの例"から"IRremote" → "ReceiveDump"を開きます。

もう一つのスケッチはESP32のボードマネージャをインストールする必要があります。
XIAO ESP32S3を使いましたので、wiki.seeedstudioのページから
"Additional Boads Manager URLs"を探して"URLリンクのアドレスを
コピー"して"追加のボードマネージャURL"に入力します。

ESP32 Dev Moduleなら次の手順でもOK
"ファイル" → "環境設定" → "追加のボードマネージャURL" → テキストボックスの右側ボタンをクリック
→ "クリックして非公式ボードをサポートするURLのリストを表示"(Webページが開きます)
→ Espressif ESP32を探して"URLリンクのアドレスをコピー"テキストボックスにctrl+vで貼り付け
(場合によってEnterキーで改行してから)→ 追加のボードマネージャURL""OK"
→ "環境設定""OK" → メニューから"ツール"→"ボード" → "ボードマネージャ"
→ "検索をフィルタ"へ"esp32" 入力→絞り込まれた中から "esp32"をインストールします。
インストール済はバージョンNo.横に緑文字で"INSTALLED"となっています
→ "閉じる"(しばらく待たないとスケッチ例が開けないかも)
これでスケッチの例ESP32が追加されました。
"ESP32"→"ESPNow"→"ESPNow_Basic_Slave"とか"ESPNow_Basic_Master"が
追加されています。
赤外線受信側はReceiveDumpとESPNow_Basic_Master、赤外線送信側はSendRowDemoと
ESPNow_Basic_Slaveを合体させますが、詳しくは今後の投稿で書きます。

SONYフォーマット(参考)
プロトコル、アドレス、コマンド、リピート回数、コマンドとアドレスのビット数合計と何か(12,15,20Bit)
サブキャリア40KHz

スケッチ(概要)
先ずは受信から(主にSONYのリモコンについて書いています。)
"スケッチの例"から"ReceiveDump"を選んでsetup()より上に次の1行を追加してください。
#define IR_RECEIVE_PIN  3//D3(GPIO4)に接続している
書き込んでシリアルモニタ開きます。
受光部へ向けてリモコンを操作するとなんやらいっぱい出力されますが、
その中に、次に類似した記述が見つかるはずです。
(数字は操作したリモコンのボタンで違ってきます)
Send with:IrSender.sendSony(0x1, 0x10, 2, 12);
ほぼ受信したままを(次のように)送信側で書いてやれば送れます。
IrSender.sendSony(0x1, 0x10, 2, 12);//参考Address=0x1はTV,0x1E5Aはレコーダー
スケッチ例"SendRawDemo"を見るとloop()の最後の方にsendNEC・・・と
同じように書いてあります。
次にESP-NOWスケッチとの合体
赤外線受信データからアドレス、コマンド、リピート回数(2回で固定)、
ビット数を取り出してESP-NOW MasterからSlaveへ送る
ESP-NOW Slaveに届いたデータをsendSonyの引数として与える。
赤外線リモコン信号送信という感じです。

写真はブレッドボードに、マイコンと赤外線LED&受信モジュールを挿して、色々テストしている様子です。
マイコン:XIAO ESP32S3

赤外線送受信回路ともにシンプルです。
赤外線LEDのドライブ用にトランジスタを(2SC1815)使った方が良いらしいです。

赤外線受信モジュールGP1UXC41QSシャープ
電源に”CRフィルターを実装してください”とデータシートに記載がありました。

IRremoteライブラリとESP-NOWに感謝
続く