DIGAリモコンの「テレビ操作」でREGZAを動かす【2025/01/28後日談追記】
パナソニック4K VIERAの走りであるTH-40AX700を2014年11月の発売後すぐに買って以来、同じパナソニックのDIGAとの組合せで使ってきたのですが、唐突にリセットが掛かるなどのロジック不具合と思しき現象が7月頃から出だして悪化傾向が続き、修理診断ナビでも明確な答が出ないことから、買い換えを検討しはじめました。
tomokas/pyvieraを参考に宅内サーバーからIPコントロールしていたこともあって、次もVIERAを優先で考えていたのですが、(その時点では)お高い機種しか無く、BRAVIAとREGZAで迷った末、店頭で観て少し有意に思ったREGZAの方が値段も少し安かったのでお迎えしたのですが、実はIPコントロールができなくなっていたり、初期不良に当たったり、と当初は散々でした。 まぁ、交換して安定して動き出せば普通に観られるようになったものの、残念なのが赤外線(IR)リモコンです。上記のIPコントロールは諦めるとしても(マクロが簡単に組めるなど便利だったのですが!)、VIERA+DIGAの時にはDIGAのリモコン1本でVIERAの操作も全部できていたのが、REGZA+DIGAだと録画した番組を観るときの音量調整だけにも2本目のリモコンが必要になってしまいました。
便利さを知ってしまったがために、非常に不便。
そこで思いついたのが、VIERA向けのリモコン信号をREGZA向けに変換するコンバータです。自作リモコンについて調べると、Arduinoで赤外線リモコン信号を送受信する次のライブラリがよく使われているようです:
z3t0/Arduino-IRremote 手元で足りなかった部品を秋月電子通商さんの通販で入手し、IRremoteをインストールして、まずはIRremoteのスケッチ例(Arduinoのプログラムをスケッチといいます)にあるIRrecvDemoを動かして、DIGAのVIERA操作とREGZAのリモコン信号が読めることを確認しました。
次に、同じくスケッチ例にあるIRsendDemoを試そうとしたのですが、デモはSONYとJVCのものでREGZAへの送り方が分からず、またライブラリのあるGitHubにもTOSHIBAの文字が見えなかったのでweb検索したところ、REGZAのリモコンコードはNECフォーマットらしく、IRsendDemoを改変してsendNEC()に先ほどIRrecvDemoで読んだREGZAの電源ボタンのコードを入れた irsend.sendNEC(0x2FD48B7, 32); を試したらちゃんと動きました。
それで気をよくして、VIERAとREGZAそれぞれのコードを全部ちまちまと読み、VIERA向けのコードを受け取ったらNECフォーマットでREGZAに送る、という単純なスケッチを一気に書いたのですが、これが動きませんでした。
定石によりスケッチをシンプルに切り詰めていったところ、なんと受信したあとの送信コマンドが働いておらず、さらに、送信コマンドを打ったが最後その後は受信割り込みが掛からなくなる、ということが分かりました。試しに delay(); をあちこちに入れたり、sendNEC() の前後に IrReceiver.disableIRIn(); と IrReceiver.enableIRIn(); を入れて初期化したりもしたのですが、効果無し。
原因は不明ですが、IRremoteを使って受信から送信へのコンボをするのは諦めました。 次に、IRremoteを受信か送信のどちらかに使い、他方を自前で書く方針で検討しました。受信はIR受信モジュールの出力をシリアル読み込みしデコードするのに対し、送信は38kHzのASK変調を掛けることになるので、送信の方が段違いに面倒そうです。よって送信はIRremoteに任せ、受信を自前で組むことにします。
IR受信モジュールの出力をデコードする方法は、IRremoteでは読み切れない、エアコンなどの長い信号を読む方法について書かれたこちらの記事を参考にさせて頂いて、VIERA向けに削り込んでいきました。
結果としてIRremoteのIRrecvDemoとデコード方法が異なるため、前にまとめて読んだVIERAのコードは使えず、再び全部ちまちまと読み込んで、VIERA向けのコードを自前デコーダで受け取ったらIRremoteのNECフォーマットでREGZAに送る、というスケッチにまとめたところ、ブレッドボード上で期待通りの動作が得られました(BBの写真を撮るのは忘れました)。
作ったスケッチは、最近使い始めたGitHubに置いておきますので適宜ご参照下さい:
pado3/irfake_v2r
…更新管理が便利です。なぜかC++と認識されてますね(汗
【2020/09/20追加】回路図を書いたので添付します。GitHubのリリースもアップデートしておきました。
うまく動いたので、テレビの横に常備するように作り込むことにします。Arduinoをそのまま組み込むのはもったいないので、Arduinoのブートローダーを書き込んで売られているAVRマイコンATmega328P-PUを使いました。
ユニバーサル基板上に部品をはんだ付けし、配線してケースに組み込んでいきます。AVRへのスケッチ書き込みはスイッチサイエンスさんのこちらの記事と同じ方法を取っています。
電源はUSB microBでもらい、IR受信部はケース蓋から出し、赤外線LEDはREGZAの受光部近くまでオーディオケーブルで引きました。リセットスイッチは蓋に取り付けてあります。試し組みしたところ、軽すぎてケーブルに引きずられてしまったので、重石に古電池を組み込みました。
最終的に、DIGAの上にセットして、無事に使えるようになりました(ちょっとお供え物みたいです)。
ブレッドボードと似た配線が表層にあってジャストサイズのプリント基板
…簡単にカッターナイフで配線パターンが切れて空中配線しないで済むので、片面タイプが使いやすいです。
赤外線リモコン受信モジュールGP1UXC41QS
…推奨通り電源フィルタを入れた方が良いようです(私は47uFが無かったので10uFで代用)。Arduinoで割り込みが使えるD2ピンに接続。
赤外線LED 940nm OSI5FU5111C-40
…5VのDigitalOutから直列抵抗47Ωを通して光らせています。測っていませんが70mA見当です。IRremoteの制約でD3ピンに接続。
3.5mmステレオミニジャック
…赤外線LEDまで古いオーディオケーブルで1.5m引きました。高々40kHzなので大して減衰しないでしょう。
USB microBジャック
…配置したい基板に対して大きすぎたのでシールド端子を削っていますが、少し細いこちらを持っていれば使っていました。というか、ケース取り付け用の方がいいですね。
あとの部品は出所不明ですが、大事なのはスケッチの書き込み時にDTRと/RESETを繋ぐ0.1uFです(以前このコンデンサに気付かず、書けなくて焦りました)。あとは、電源用のパスコン、ピンソケット、電線、リセット用のタクトスイッチ、リセット端子のプルアップに10kΩ(AVR内部でもプルアップされていますが、スケッチ書き込み時のDTRリセット時定数を安定させるために入れた方が良いようです)、動作確認用の赤外線LEDと暗め狙いの直列抵抗2.2kΩ(これは「お約束」のD13に接続)、M3の10mmスペーサー、100均で3個セットのケース、でした。
今回、色々と自前でできるようになったのでマクロを組んだりするのも楽勝になりました。ちなみに、今回のスケッチではNetflixボタンでYoutubeが起動します。
何かの参考になれば幸いです。ご利用は自己責任でお願いします。 パドラッパ from MacBook Air (2017) 【2020/11/16 追記】
動作の安定化と低消費電力化を行いました。内容はこちらです。 【2025/01/28後日談追記】
改良版で2年ほど便利に使っていたのですが、ATmega328Pの故障で動かなくなりました。同じコードを焼こうかと思いつつDIGAのマニュアルを見直したところ「リモコンのテレビ操作設定」というページがあり、実はDIGAリモコンそのままでREGZAを操作できるように設定変更できることが分かりました。つまり、この工作は不要だったというわけです。楽しかったからいい(すねてません)。
tomokas/pyvieraを参考に宅内サーバーからIPコントロールしていたこともあって、次もVIERAを優先で考えていたのですが、(その時点では)お高い機種しか無く、BRAVIAとREGZAで迷った末、店頭で観て少し有意に思ったREGZAの方が値段も少し安かったのでお迎えしたのですが、実はIPコントロールができなくなっていたり、初期不良に当たったり、と当初は散々でした。 まぁ、交換して安定して動き出せば普通に観られるようになったものの、残念なのが赤外線(IR)リモコンです。上記のIPコントロールは諦めるとしても(マクロが簡単に組めるなど便利だったのですが!)、VIERA+DIGAの時にはDIGAのリモコン1本でVIERAの操作も全部できていたのが、REGZA+DIGAだと録画した番組を観るときの音量調整だけにも2本目のリモコンが必要になってしまいました。

z3t0/Arduino-IRremote 手元で足りなかった部品を秋月電子通商さんの通販で入手し、IRremoteをインストールして、まずはIRremoteのスケッチ例(Arduinoのプログラムをスケッチといいます)にあるIRrecvDemoを動かして、DIGAのVIERA操作とREGZAのリモコン信号が読めることを確認しました。
次に、同じくスケッチ例にあるIRsendDemoを試そうとしたのですが、デモはSONYとJVCのものでREGZAへの送り方が分からず、またライブラリのあるGitHubにもTOSHIBAの文字が見えなかったのでweb検索したところ、REGZAのリモコンコードはNECフォーマットらしく、IRsendDemoを改変してsendNEC()に先ほどIRrecvDemoで読んだREGZAの電源ボタンのコードを入れた irsend.sendNEC(0x2FD48B7, 32); を試したらちゃんと動きました。
それで気をよくして、VIERAとREGZAそれぞれのコードを全部ちまちまと読み、VIERA向けのコードを受け取ったらNECフォーマットでREGZAに送る、という単純なスケッチを一気に書いたのですが、これが動きませんでした。
定石によりスケッチをシンプルに切り詰めていったところ、なんと受信したあとの送信コマンドが働いておらず、さらに、送信コマンドを打ったが最後その後は受信割り込みが掛からなくなる、ということが分かりました。試しに delay(); をあちこちに入れたり、sendNEC() の前後に IrReceiver.disableIRIn(); と IrReceiver.enableIRIn(); を入れて初期化したりもしたのですが、効果無し。
原因は不明ですが、IRremoteを使って受信から送信へのコンボをするのは諦めました。 次に、IRremoteを受信か送信のどちらかに使い、他方を自前で書く方針で検討しました。受信はIR受信モジュールの出力をシリアル読み込みしデコードするのに対し、送信は38kHzのASK変調を掛けることになるので、送信の方が段違いに面倒そうです。よって送信はIRremoteに任せ、受信を自前で組むことにします。
IR受信モジュールの出力をデコードする方法は、IRremoteでは読み切れない、エアコンなどの長い信号を読む方法について書かれたこちらの記事を参考にさせて頂いて、VIERA向けに削り込んでいきました。
結果としてIRremoteのIRrecvDemoとデコード方法が異なるため、前にまとめて読んだVIERAのコードは使えず、再び全部ちまちまと読み込んで、VIERA向けのコードを自前デコーダで受け取ったらIRremoteのNECフォーマットでREGZAに送る、というスケッチにまとめたところ、ブレッドボード上で期待通りの動作が得られました(BBの写真を撮るのは忘れました)。
作ったスケッチは、最近使い始めたGitHubに置いておきますので適宜ご参照下さい:
pado3/irfake_v2r
…更新管理が便利です。なぜかC++と認識されてますね(汗
【2020/09/20追加】回路図を書いたので添付します。GitHubのリリースもアップデートしておきました。

ユニバーサル基板上に部品をはんだ付けし、配線してケースに組み込んでいきます。AVRへのスケッチ書き込みはスイッチサイエンスさんのこちらの記事と同じ方法を取っています。



使用した部品をセクション内にまとめておきます
Arduino書き込み済みATmega328P-PU(同等品 )ブレッドボードと似た配線が表層にあってジャストサイズのプリント基板
…簡単にカッターナイフで配線パターンが切れて空中配線しないで済むので、片面タイプが使いやすいです。
赤外線リモコン受信モジュールGP1UXC41QS
…推奨通り電源フィルタを入れた方が良いようです(私は47uFが無かったので10uFで代用)。Arduinoで割り込みが使えるD2ピンに接続。
赤外線LED 940nm OSI5FU5111C-40
…5VのDigitalOutから直列抵抗47Ωを通して光らせています。測っていませんが70mA見当です。IRremoteの制約でD3ピンに接続。
3.5mmステレオミニジャック
…赤外線LEDまで古いオーディオケーブルで1.5m引きました。高々40kHzなので大して減衰しないでしょう。
USB microBジャック
…配置したい基板に対して大きすぎたのでシールド端子を削っていますが、少し細いこちらを持っていれば使っていました。というか、ケース取り付け用の方がいいですね。
あとの部品は出所不明ですが、大事なのはスケッチの書き込み時にDTRと/RESETを繋ぐ0.1uFです(以前このコンデンサに気付かず、書けなくて焦りました)。あとは、電源用のパスコン、ピンソケット、電線、リセット用のタクトスイッチ、リセット端子のプルアップに10kΩ(AVR内部でもプルアップされていますが、スケッチ書き込み時のDTRリセット時定数を安定させるために入れた方が良いようです)、動作確認用の赤外線LEDと暗め狙いの直列抵抗2.2kΩ(これは「お約束」のD13に接続)、M3の10mmスペーサー、100均で3個セットのケース、でした。
何かの参考になれば幸いです。ご利用は自己責任でお願いします。 パドラッパ from MacBook Air (2017) 【2020/11/16 追記】
動作の安定化と低消費電力化を行いました。内容はこちらです。 【2025/01/28後日談追記】
改良版で2年ほど便利に使っていたのですが、ATmega328Pの故障で動かなくなりました。同じコードを焼こうかと思いつつDIGAのマニュアルを見直したところ「リモコンのテレビ操作設定」というページがあり、実はDIGAリモコンそのままでREGZAを操作できるように設定変更できることが分かりました。つまり、この工作は不要だったというわけです。楽しかったからいい(すねてません)。
| 固定リンク | 0
コメント