USB赤外線リモコンアドバンス(ADIR01P)を使用してパソコンで機器制御
パソコンを学習リモコン代わりに使用可能なビット・トレード・ワン製USB赤外線リモコンADVANCEという製品をネットで見つけた。メーカーのホームページ(右側で示しているリンク先のサポートページ)よりソースコード付の送信設定アプリをダウンロードして修正することでテレビなどの赤外線リモコンのほぼ全てのボタンと同等の機能をパソコン(Windows10+タッチペン)で利用できるようになった。
下図はダウンロードした送信設定アプリをSHARP製テレビ(AQUOS)用リモコン向けに修正した画面。
BTOS(オンラインショップ)で購入の本体
B-CASカードが壊れたので買おうと思ったらこれが高くてどうせ買うならとB-CASカードが付いているPC用テレビチューナーを購入してみた。これが意外と安定して使えることがわかって、PC(テレビ番組視聴、録画&再生ソフト)をテレビのようにリモコンで操作したくなり、ネットでリモコンなどを探しているうちにUSB接続の赤外線リモコン送受信機能付きボードにありついた。この製品は赤外線リモコンKIT(電子工作キット)の改良版組み立て済み品という位置付けのようで通常製品としてはケースが無いのが難点なのだが、その辺のコンビニで売ってるFRISKをケースとして再利用できるので助かった。
下図はFRISKのケースに入れて上側ケースを外した状態(緑と赤のLEDが光っている状態)。本機をPCのUSBポートに接続すると、赤のLEDが点滅する。赤外線リモコンのボタンを押すとそれを検出している印として緑のLEDが点滅する。
メーカー(ビット・トレード・ワン)の売り文句は、「パソコン(PC)から家庭用機器をリモコン操作(セットした時間に操作するタイマー機能付)」「リモコンでパソコンを操作」と言う2つの要望を解決出来るPC接続型多機能赤外線アダプタということだった。(詳細はリンクページ参照。)
私の購入目的は後者の「リモコンでPCを操作」することだったのだが、色々やっているうちに、というよりも直ぐに、「PCから家庭用機器をリモコン操作」することにハマってしまった。
というのも、面白いためである。世の中IOTばやりで、なんでもかんでもネットに直で繋がるようになりつつある中で、赤外線アダプタを介することで、赤外線でのみ制御可能な古い機種もPCから操作できるようになるという、いわば、「もったいないから使い続けたい」製品も生き残れるようにするという非常にありがたい気持ちになるのである。Bluetoothも無線LANも標準でPCに繋がる時代に赤外線通信機器もPCに繋がるという話である。PCに繋がるということはその上位システムにも繋がるということであり新品として復活したような気分になる。
本機を利用するためにはメーカーのホームページから専用ソフトをダウンロードして実行する。
下図は「PCから家庭用機器をリモコン操作」するためのソフト(送信設定アプリ)。
< 送信設定アプリの特徴 >
- 一つの画面で最大32個まで設定できる。
- 送信設定アプリを複数のフォルダにコピーすることで何画面でも最大32個まで設定できる。
- リモコンの設定データは送信設定アプリが存在するフォルダに保存される。
- タイマー設定表示ボタンをクリックすると画面の幅が大きくなりタイマー設定情報が追加表示される。
- 設定後は、送信ボタンをクリックして機器を操作する。送信ボタンの意味は一目瞭然。
- 開発ソフト(Visual Studio)のプロジェクトファイル(ソースコード付)がホームページからダウンロード可能になっている。マイクロソフトのVisual Studio 2015(無料)をダウンロードすることで画面のカスタマイズが可能になる。タッチパネルで操作するために送信ボタンを大きくしたり、送信ボタンに専用の名称をつけたり、わかりやすく色変えしたりなどが慣れてしまえば割と簡単にできる。
- 1画面32個という制限を変更するためには画面とソースコードの両方の追加変更が必要で普通は尻込みする。私の場合はボタンが多いテレビなどのリモコン機能を2つの画面に分けて設定している。(例.後述、2017-01-15:1画面60個に修正した例を追加)
< 送信設定アプリの使い方 >
1). 家庭用機器を操作するための赤外線リモコンのボタン信号を最大で32個まで順番に設定する。
- 「No.」ボタン(No.01~No.32)で設定するボタンを選択
- 記録開始ボタンをクリック。
- 設定する赤外線リモコンのボタンを本機に向けて押して覚えさせる。
- 記録停止ボタンをクリック。
- 名称を入力して保存ボタンをクリック。(設定した「No.」ボタンの右の送信ボタンの右の空白欄に名称が表示される。)
- 以上を設定ボタン数分繰り返す。
2). 必要ならタイマー設定表示ボタンをクリックすることによりタイマー設定項目を表示して送信ボタンと送信時刻を設定する。
3). 設定済みの送信ボタンをクリックして機器を操作する。送信ボタンの意味は一目瞭然。
私の場合の利用事例
送信設定アプリをVisual studio 2015にてカスタマイズ、テレビ専用アプリと汎用アプリの2種類用意。
PC上にフォルダを4個作成して1個のフォルダには送信設定アプリ=テレビ専用アプリをコピー、他の3個のフォルダには汎用アプリをコピー、それぞれを専用リモコンソフトとして利用する。
- リモコンソフト1=送信設定アプリ(TV)
テレビ専用アプリ利用のテレビ専用リモコン
32個で足りない分はリモコンソフト2へ - リモコンソフト2=送信設定アプリ(Sel、TV2、BD2)
汎用アプリ利用
テレビ用その他ボタンとBDレコーダー用その他ボタンを含むリモコン - リモコンソフト3=送信設定アプリ(BD)
汎用アプリ利用のBDレコーダー専用リモコン
32個で足りない分はリモコンソフト2へ - リモコンソフト4=送信設定アプリ(AV Amp)
汎用アプリ利用のAVアンプ専用リモコン
デスクトップに次のようにショートカット追加。
(1). 送信設定アプリ(TV)=テレビの操作専用にカスタマイズした画面(TV)
「No.」ボタンの"No."のみソースコードで削除。「No.」ボタンは設定時しか使用しないため小さくした。
私のWindows10 64ビット版の場合、
Visual studio 2015 (無料版=Community)をPCにインストールした後、メーカーからダウンロードして解凍したプロジェクトファイルの中の"IRRemoteControlPro.csproj"をダブルクリックするとプロジェクトが開いてカスタマイズできる状態となり、Solution ExplorerからForm1.csをダブルクリックすると画面が表示される。画面の中で"送信"と表示されているテキストボックスを選択してPropatiesのText項目に送信と入力されていることを確認してそれを修正すると送信ボタンの名称を変更できる。PropatiesのBackColorを変更すると背景色を変更できる。PropatiesのForeColorを変更すると文字色を変更できる。テキストボックスの大きさはマウスで変更できる。画面の修正が終わったらDebugメニューのStart Debugging(F5)を選択すると修正ミスがなければ送信設定アプリ(bin\x86\Release\USB_IR_Remote_Controller_Advance_Trns_CT.exe)が更新される。
ソースコードを表示させて試しに"No."を検索してみたらあったのでそれを削除してみたら「No.」ボタンの"No."を削除することができた。ソースコードを修正する場合は必ず理解した上で修正すること。むやみに変更したり削除したりすると、Windowsまで動かなくなる可能性が絶対ないとは言えない。
送信設定アプリの実行ファイル(.exe)を置いているフォルダのデータファイルをそのままにして、実行ファイル(.exe)だけを削除して、修正した送信設定アプリ(.exe)を入れると、修正後の表示画面になる。もちろん設定内容は変わらない。元の送信設定アプリに表示を戻すこともできる。
(2). 送信設定アプリ(Sel、TV2、BD2)=汎用画面
このサンプルは、テレビ用その他ボタン(TV 2頁)やBDレコーダー用その他ボタン(BD 2頁)などが含まれるいわば「その他リモコン」として利用する。
送信設定アプリのカスタマイズとしては、タッチパネルの操作で誤入力を抑えるため送信ボタンを高めにしているだけ。
ちなみにリモコンが壊れてから長い歳月が経過しているAV Ampは、ソニーの学習リモコンを使っての設定で、32個ぴったりに収まった。
(3). 送信設定アプリ(TV)=テレビの操作専用にカスタマイズした画面(TV、2017最新版)
Solution ExplorerからForm1.csをダブルクリックすると修正すべき画面が表示される。「No.」ボタンを含む3つのコントロールを必要なボタン分だけ追加してそれぞれのコントロール名を他に習って修正するのに加えてソースコードの修正が必要になる。ボタン数はForm1.csの「public const int IR_DATA_REC_NUM = 32;」で定義しているので、この32を必要なボタン数に変更する。更には、Form1.Designer.csで定義している各ボタン毎に「this.btn_send_No33.Click += new System.EventHandler(this.btn_send_No_Click);」「this.btn_select_No33.Click += new System.EventHandler(this.btn_select_No_Click);」というステップを追加する必要がある。ボタンを一個だけ追加する場合はNo33分の定義追加だけで良いが、追加ボタンが多い場合は追加ボタン分の追加が必要。ここまで読んでくれている人はいないと思うので、私が自分で確認する程度の雑な説明のみで失礼する。