現: 2022-05-20 (金) 16:41:37 yuji ![]() Deleted an attach file: IRMan.dll at 2022-05-23 (月) 19:12:54 at 2022-05-24 (火) 08:13:38 at 2022-05-24 (火) 14:20:48 at 2022-05-24 (火) 14:24:50 at 2022-05-25 (水) 13:04:07 at 2022-05-25 (水) 14:05:12 at 2022-05-25 (水) 14:07:52, Deleted an attach file: avrir.png at 2022-06-10 (金) 16:57:53, Deleted an attach file: rcvsend.ino at 2022-12-17 (土) 06:58:45 at 2022-12-17 (土) 07:00:21, Deleted an attach file: avrlirc.ino at 2022-12-17 (土) 07:02:07 at 2022-12-20 (火) 12:11:31 at 2022-12-20 (火) 12:13:29 at 2023-02-13 (月) 15:57:12 at 2023-02-13 (月) 16:01:07 at 2023-03-17 (金) 09:47:21 at 2023-03-17 (金) 09:49:38 at 2023-03-17 (金) 09:50:40 at 2025-04-13 (日) 18:23:29 at 2025-04-15 (火) 16:07:05 at 2025-04-15 (火) 16:09:55 at 2025-04-15 (火) 21:10:44 at 2025-04-15 (火) 21:10:52, Deleted an attach file: px-w3u4.conf at 2025-04-21 (月) 13:52:41, Deleted an attach file: IRremokon回路図.png at 2025-04-22 (火) 13:21:35 at 2025-04-22 (火) 13:25:49 at 2025-04-26 (土) 16:10:09 at 2025-04-26 (土) 16:12:29 at 2025-04-26 (土) 16:20:24 at 2025-04-27 (日) 11:16:42 at 2025-04-28 (月) 16:47:39, Deleted an attach file: ohmlight.conf at 2025-04-28 (月) 17:12:35 at 2025-04-29 (火) 19:08:59, Deleted an attach file: 37Z3500.conf at 2025-04-29 (火) 19:09:39, Deleted an attach file: 50Z670L.conf at 2025-04-29 (火) 19:10:17 at 2025-05-01 (木) 13:23:46 at 2025-05-01 (木) 13:26:13 at 2025-05-01 (木) 14:49:15, Deleted an attach file: CLD-500.conf at 2025-05-03 (土) 11:30:11 at 2025-05-06 (火) 19:33:03 at 2025-05-06 (火) 19:34:30 at 2025-05-06 (火) 19:36:01, Deleted an attach file: schematics.png at 2025-05-09 (金) 08:41:06 |
|||
---|---|---|---|
Line 1: | Line 1: | ||
+ | * IRリモコン [#t3f14e68] | ||
+ | PCを赤外線リモコンを使って操作したいと思い,PCとUSBで接続出来るIRリモコン送受信機(AVRマイコン搭載ボード)を作成してみた。~ | ||
+ | 以前Linuxの[[MythTV>https://www.mythtv.org/]]やRaspberry Piで[[学習リモコン>/PC/RaspberryPi/WEBリモコン/学習リモコンを作る]]を作るときに[[LIRC>https://www.lirc.org/]]を使ったので,WindowsのLIRCである[[WinLIRC>http://winlirc.sourceforge.net/]]を使いたいと思ったのだが,元々WinLIRCというかLIRCは,古いシリアルポートのDCDに赤外線受信センサーを接続したハードウェアのためのツール。~ | ||
+ | #ref(schematics.png,,30%) | ||
+ | |||
+ | なのでシリアルポートが搭載されていない最近のPCでは使うのが難しい。シリアルポートが無いPCでシリアルポートを使いたい場合,普通は[[FTDI>https://ftdichip.com/]]等のチップを搭載した[[USB-Serialコンバーター>https://amzn.to/3nyqw4F]]を使うのだが,このようなコンバーターのDCDに赤外線センサーの出力を接続してもWinLIRCのプログラムはうまく動作してくれなかった。~ | ||
+ | |||
+ | これはWinLIRCではリモコン信号を解析する時にクリティカルなタイミングが必要となるのだが,USB-Serialコンバーターを使うとどうしてもダイレクトにポートにアクセス出来ないので,うまくリモコン信号の解析が出来ないみたいだ。~ | ||
+ | 実際にFTDIのFT232RLなんかを使っていろいろやってみたが,受信データが正常に得られなかった。おそらくBig-Bangモードを使えばうまく行くと思うのだが,Bit-Bangモードの使い方がよくわからない。 | ||
+ | |||
+ | ただWinLIRC(LIRC)ではプラグインによってシリアルポート以外のハードウェアのいくつかに対応するようになっている。~ | ||
+ | |||
+ | その中でもPCのマイク入力に赤外線センサーの出力を接続した[[ハードウェア>https://www.lirc.org/ir-audio.html]]とAudioCapture.dllプラグインを使う方法がユニークなので試してみたが,なかなか安定してリモコンデータが取得できなかった。~ | ||
+ | うまく動けばハードウェアとしては安価に比較的簡単に作成できるし,どんなPCでも使えるメリットがある。~ | ||
+ | |||
+ | また,市販されているCOMポート接続のIRMan IR ReceiverやUSB接続の[[USB Infrared Toy>http://dangerousprototypes.com/docs/USB_Infrared_Toy]]も,プラグイン経由でWinLIRCで使えるようだ。~ | ||
+ | これらのCOMポート接続タイプやUSB接続タイプでは,アダプター機器でリモコンデータを解析するようになっていて,その解析したリモコンデータをWinLIRCがプラグイン経由で受け取って使用出来るようにしているようだ。~ | ||
+ | |||
+ | そこで自作したIRリモコンでは,WinLIRCのIRManプラグインで動作するようにしてみた。~ | ||
+ | |||
+ | うまく動作すればWinLIRCと各種のコンパニオンツールが使えるようになり,PCをリモコンで操作することが実現出来そう。~ | ||
+ | |||
+ | %%残念ながら''IRManプラグインではIR信号の送信はサポートされてないので今回は受信専用となる。''%%~ | ||
+ | 送信も出来るようにIRManプラグインに機能を追加してみた。これで,PCから家電なんかを制御したりも出来るようになった。~ | ||
+ | |||
+ | ** ハードウェア [#v3ee0b78] | ||
+ | [[FTDI>https://ftdichip.com/]]のUSBコンバーターが実装されている自作のATMEL AVRボード(ATmega168P)に,手持ちのIR受信センサーと赤外線LEDを接続した。~ | ||
+ | 市販のボードを使う場合は,[[Arduino Nano互換ボード>https://amzn.to/3LSjQZa]]が小さくて良さそう。~ | ||
+ | |||
+ | 作成したIRリモコン回路図~ | ||
+ | #ref(IRremokon回路図.png) | ||
+ | // IR受信センサー ATMEL AVR Board | ||
+ | // SHARP GP1UD281XK ATmega168P etc | ||
+ | // +---------+ +--------------+ | ||
+ | // | OUT 1 |---------------|PD2 IR受信 | | ||
+ | // | VCC 2 |---------------|+5V | | ||
+ | // | GND 3 |---------------|GND | | ||
+ | // +---------+ | | | ||
+ | // +5V +5V | | | ||
+ | // +--- R +--- R | MOSI|-----+ | ||
+ | // |15ohm |15ohm | | | | ||
+ | // IR A IR A | | Tact SW | ||
+ | // LED K LED K | | | | ||
+ | // | | | | GND | ||
+ | // +---------+ | | | ||
+ | // | | | | ||
+ | // +------ D | | | ||
+ | // G -- R --|PD3 IR送信 | | ||
+ | // +------ S 10ohm | | | ||
+ | // | 2SK1748 | | | ||
+ | // | | USB |<============> PC | ||
+ | // | | | USB | ||
+ | // +------------------|GND | | ||
+ | // | | | | ||
+ | // GND +--------------+ | ||
+ | IR受信センサーは[[38KHzの物>https://amzn.to/3GiDIr0]]なら何でも良い。~ | ||
+ | &ref(avrir.png,,10%); 作成した基板。 | ||
+ | |||
+ | *** 動作チェックプログラム [#oadfe402] | ||
+ | 赤外線リモコン信号の解析は[[IRremote>https://github.com/Arduino-IRremote/Arduino-IRremote]]ライブラリを使ってみた。Arduinoボード([[Arduino IDE>/開発/AVR/Arduino#rb6dfdc9]])用に作られていて,多くのメーカーのリモコンに対応しているのもうれしい。~ | ||
+ | |||
+ | IRremoteライブラリは使い始めた時はバージョン2.xだったが3.x,4.xと更新されて,使い方もその都度変更されていたりする。~ | ||
+ | また,自作のAVRボード(ATmega168PやATmega328)で動くように少し修正して使用している。~ | ||
+ | |||
+ | 作ったIRリモコンを,以下のプログラムで動作チェックをした。~ | ||
+ | #code(c,nonumber,rcvsend.ino) | ||
+ | |||
+ | - テレビなんかのリモコンのボタンを押すとそのリモコン信号を学習する。~ | ||
+ | 受信したリモコン信号をEEPROMに保存する。~ | ||
+ | - MOSI(またはMISO)ピンをLowにすると,その保存したEEPROMのリモコン信号を送信する。~ | ||
+ | - リモコンはNECタイプを使う。~ | ||
+ | |||
+ | シリアルコンソールを使うと,リモコンの押されたボタンのコードやリモコン信号のタイプが確認できる。~ | ||
+ | |||
+ | 学習したリモコン信号を送信してみて機器が反応すれば,ハードウェアはうまく動作していることになる。~ | ||
+ | |||
+ | ** IRMan IR Recieverプロトコル [#hddf93e1] | ||
+ | #ref(irman.png,around,10%) | ||
+ | IRMan IR RecieverはPCとシリアルポートで接続して,赤外線リモコンの信号を受信できる機器だったようだ。(もう販売はされていない)~ | ||
+ | |||
+ | IRMan IR Recieverでは赤外線リモコンから受信した信号を解析して,そのリモコンボタンの情報データをPCに送っている。~ | ||
+ | #clear | ||
+ | - PCとIRMan IR RecieverとのSerial通信パラメータ~ | ||
+ | Baudrate:9600 | ||
+ | Data:8bit | ||
+ | Stop bit:1 stop | ||
+ | Parity: non parity | ||
+ | - PCのシリアルポートのRTSとDTRをHiにする~ | ||
+ | これによりIRMan IR Recieverに電源が供給されて起動される。~ | ||
+ | 起動するとリモコンデコードモードになり,赤外線リモコン信号を受信したら解析しPCに返答する。~ | ||
+ | - PCからスタートコマンドを送信~ | ||
+ | Hostから''IR''と送信する。(''I''と''R''の間は最小500usの時間が必要。)~ | ||
+ | - IRMan IR Recieverから''OK''の返答~ | ||
+ | Hostからの''IR''への返答として''OK''を返す。~ | ||
+ | PCで''OK''を受信した場合,IRMan IR Recieverが正常に接続されていることがわかる。~ | ||
+ | - IRMan IR Recieverでリモコン信号を受信したら,そのリモコン・コードをPCに送信する~ | ||
+ | リモコンから受信したデータを, | ||
+ | 0x1E, 0xXX, 0x00,0x00,0x00,0x00 | ||
+ | という''6byte''のパケットデータでPCに非同期で送信するようだが,1Byte目は0x1E固定で,2byte目がリモコンのボタンに割り当てられているコマンドで,その後のデータはオプションのようだ。~ | ||
+ | 6byteでのデータ転送なので,''エアコンなどのサイズが大きいリモコンデータのやり取りは出来ない''。~ | ||
+ | - PCからIRMan IR RecieverへIRリモコン・コード送信機能はない~ | ||
+ | WinLIRCのIRManプラグインとこのIRMan IR Recieverでは,リモコン・コードの送信は残念ながら実装されていない。~ | ||
+ | //|コマンド |内容 |h | ||
+ | //|0x00 |リセット,リモコンデコードモードに移行。 | | ||
+ | //|0x01 |SUMP(SUMP logic analyzer)? モード | | ||
+ | //|0x02 |SUMP? ID(返答:"1ALS") | | ||
+ | //|r/R |ハンドシェイクコマンド。(返答:"OK") | | ||
+ | //|x/X |raw IR/IOモードにする。(返答:"X01") | | ||
+ | //|s/S |IRサンプリングモードに入る。(返答:"S01") | | ||
+ | //|t/T |セルフテストの実行。 | | ||
+ | //|v/V |ハードウェア・ファームウェアの表示。(返答:"V1##") | | ||
+ | //|u/U |USBシリアルコンバーターモードに入る。(返答:"U01") | | ||
+ | //|$ |ブートローダーに移行。 | | ||
+ | //[[DANGERROUS PrototypesのUSB IR Toy>http://dangerousprototypes.com/docs/USB_Infrared_Toy]]も,このIRManプロトコル準拠のようである。~ | ||
+ | |||
+ | これ以外にもいくつか機能があるようだが,詳細はわからない。~ | ||
+ | |||
+ | ** WinLIRC用IRリモコンのソフトウェア [#j8675cb2] | ||
+ | 作成したIRリモコンをWinLIRCで使用出来るように,IRMan IR Reciver準拠の(実際のIRMan IR Reciverを見たこと無いので知らないけど・・・)プログラム''avrlirc.ino''を作成して[[Arduino IDE>/開発/AVR/Arduino#rb6dfdc9]]から書き込んだ。~ | ||
+ | |||
+ | 今回は以下の6byteをWinLIRCとやり取りするようにしてみた。~ | ||
+ | |byte |データ |内容 |h | ||
+ | |0 |Header |IRMan Pluginでのヘッダー(0x1E)| | ||
+ | |1-2 |Address |リモコンのアドレス(LSB first) | | ||
+ | |3-4 |Command |リモコンのコマンド(LSB first) | | ||
+ | |5 |Protocol |リモコンのメーカー(タイプ) | | ||
+ | |||
+ | 最初は32bitのRawDataを使っていたが,IRリモコンから赤外線リモコン信号を送信する時,RawDataでは送信できないリモコン・タイプがあったり,リモコン・タイプを特定する必要もあってこのように変更した。((エアコンのリモコンのように,リモコン信号が32bit以上になるような場合には対応できない。))~ | ||
+ | |||
+ | WinLIRCのプラグインIRMan.dllでは,受け取ったパケットデータを全てデータとして利用しているのでこれでも問題ないようだ。おそらく,0x1Eのヘッダーもなくても良いんだと思う。~ | ||
+ | |||
+ | ''IRMan IR Recieverにはないリモコン信号の出力もできるようにした''。~ | ||
+ | |||
+ | #code(c,nonumber,avrlirc.ino) | ||
+ | |||
+ | * PC側のソフトウェア [#mcb97dba] | ||
+ | Windows PCには[[WinLIRC>http://winlirc.sourceforge.net/]]とWinLIRCに対応しているコンパニオンツールを使用する。 | ||
+ | |||
+ | [[WinLIRC>http://winlirc.sourceforge.net/]]は作成したIRリモコンとPCをUSBで接続して,以下のことを行う。~ | ||
+ | - リモコンからのデータを受信する。~ | ||
+ | - リモコンからのデータを解析・学習してリモコンを識別・管理する。~ | ||
+ | 学習したデータをファイルに保存して,識別や学習リモコンとして送信するときにファイルを利用する。 | ||
+ | - コンパニオンツールやアプリケーションへリモコンデータ情報を提供する。~ | ||
+ | NetworkのTCP通信で,リモコンの情報をツールやアプリケーションに送る。~ | ||
+ | 直接WinLIRCに接続出来るアプリケーションもいくつかある。~ | ||
+ | - リモコン信号をリモコンに代わって機器に送信する。~ | ||
+ | オリジナルのIRManプラグインでは送信には対応していなかったので,独自にIRMan.dllに機能を追加した。~ | ||
+ | |||
+ | [[iREx>https://ramscan.com/irex/]]や[[EventGhost>http://www.eventghost.net/]]はWinLIRCに対応しているコンパニオンツールで,WinLIRCが受信したリモコンデータからPCでのキー入力やMouse操作をエミュレーションしたり,任意のアプリを起動したりすることが出来るようになる。~ | ||
+ | |||
+ | これらのソフトウェアを使うことで,PCをリモコンで操作出来るようになる。 | ||
+ | |||
+ | ** WinLIRC [#cce417e4] | ||
+ | [[LIRC>https://www.lirc.org/]]のWindows版である[[WinLIRC>http://winlirc.sourceforge.net/]]をダウンロードする。ダウンロードするバージョンは[[0.9.0i>https://sourceforge.net/projects/winlirc/files/winlirc/0.9.0i/winlirc-0.9.0i.zip/download]]。~ | ||
+ | インストールはダウンロードしたzipファイルを任意の場所に解凍すればOK。 | ||
+ | |||
+ | ダウンロードしたWinLIRCとプラグイン''IRMan.dll''を使ってみたところ,自作したIRリモコンとうまく接続出来なくて,IRRecordでの学習モードに移行しないですぐにエラーで終了してしまう。~ | ||
+ | |||
+ | DTR信号が出力されると自作のIRリモコンのCPUがResetされちゃう((Arduinoのボードはプログラムを内蔵ファームウェアを使って書き込むために,DTR信号でResetしファームウェアを起動させるようになっている。自作のボードでも同じようにしてあるため。))のと,IRManデバイスから''OK''の返答を待つ時間が250msと短いのと,ヘッダー送信前にゴミデータが受信されているのが原因と思われる。~ | ||
+ | |||
+ | しょうがないので,WinLIRC 0.9.0iのIRMan.dllのソースコードを少し修正して,DTR信号が出力された後の返答待ちの最大時間を5sと長めに変更した。また,''赤外線信号を出力する機能も追加した。''~ | ||
+ | |||
+ | ''この&ref(IRMan.dll,,修正したIRMan.dll);ファイルを,WinLIRCをインストールした場所にあるpluginsディレクトリのIRMan.dllと入れ替える。''~ | ||
+ | |||
+ | これでうまく動作するようになった。~ | ||
+ | |||
+ | *** WinLIRCでリモコンを学習する [#k4d34fd2] | ||
+ | 自作のIRリモコンをPCにUSBで接続する。~ | ||
+ | |||
+ | WinLIRCを起動して,最初に使用するプラグインをInput PluginでIRMan.dllに設定する。~ | ||
+ | #ref(setting.png,,70%) | ||
+ | そして使用するCOMポートをPlugin Setupボタンで設定する。~ | ||
+ | その後作成するconfigファイルを保存場所を指定してCreate Configボタンをクリックすると,リモコンの学習を行うIRRecordプログラムがコマンドプロンプトで起動する。~ | ||
+ | |||
+ | コマンドプロンプトを開いて, | ||
+ | > IRRecord -d IRMan.dll ..\px-w3u4.conf | ||
+ | とかしても同じ。~ | ||
+ | |||
+ | リモコン信号の学習は以下の手順で行う。~ | ||
+ | - 「Enterを押せ」と表示される~ | ||
+ | 説明を読んでEnterを押す。~ | ||
+ | - 「任意のリモコンボタンを押し続けろ」と指示される~ | ||
+ | リモコンのどれかのボタンを押しっぱなしにする。~ | ||
+ | .....というようにドットが表示されていく。これでリモコン信号の解析を行っているのかな。~ | ||
+ | かなり入力すると,このフェーズが終了する。~ | ||
+ | - 「学習させたいリモコンのボタンの名前を入力して,リモコンのボタンを押せ」と指示が出る~ | ||
+ | リモコン送信機の学習したいボタンに相当する名前を入力する。~ | ||
+ | - 学習させたいリモコンのボタンを押す~ | ||
+ | リモコン送信機のボタン信号を一つ一つ学習していく。ボタンは学習するまで2回押す。~ | ||
+ | - リモコンにある学習したいボタンを繰り返し同じように行う。~ | ||
+ | - 全てのリモコンのボタン学習が終わったらラベル入力時にEnterのみを押す。~ | ||
+ | - さらに「Enterを押せ」と表示される~ | ||
+ | Enterを押す。~ | ||
+ | - リモコンのいくつかのボタンを1回づつ押していく~ | ||
+ | ボタンは押しっぱなしにはしないで1回だけ押す。学習データを最適化するために行うようだ。~ | ||
+ | |||
+ | 設定ファイルが作成されたら,nameのところを任意のわかりやすいものに変更しておく。~ | ||
+ | コンパニオンツールのiRExでのリモコン指定は,このnameを参照する。~ | ||
+ | |||
+ | *** WinLIRCを再起動する [#z08fbb64] | ||
+ | うまく学習してデータファイルが作成できたらWinLIRCを再起動する。リモコン信号の受信待ち状態になりシステムトレイに黄色の丸のアイコンが表示され,しばらくすると色が消えた丸アイコンになる。~ | ||
+ | これで自作にIRリモコンと接続が出来たことになる。~ | ||
+ | &ref(tray.png,,50%);リモコンのボタンを押した時にこのアイコンが緑に変化すれば,学習したリモコン信号に反応していることになる。~ | ||
+ | |||
+ | *** リモコンの学習データ [#ae6c6a36] | ||
+ | いくつかリモコンを学習してみた。~ | ||
+ | 最終byteが0x08の場合は,リモコンがNECタイプを意味する。~ | ||
+ | |||
+ | Plex [[PX-W3U4>../PX-W3U4]]の付属リモコン:~ | ||
+ | #code(text,nonumber,px-w3u4.conf) | ||
+ | Toshiba Regza 37Z3500: &ref(37z3500.conf);~ | ||
+ | TVS Regza 50Z670L: &ref(50z670l.conf);~ | ||
+ | Denon AVR-X1600H: &ref(AVR-X1600H.conf);~ | ||
+ | Toshiba V65/86L PQ6586LRT: &ref(quosmio.conf);~ | ||
+ | オーム電機 シーリングライト: &ref(ohmlight.conf);~ | ||
+ | Sony DSR-A700: &ref(RMT-DSLR1.conf);~ | ||
+ | Pioneer CLD-500: &ref(CLD-500.conf);~ | ||
+ | |||
+ | ''複数のリモコンを使いたい場合は,各リモコンの設定ファイルを一つのファイルにマージすればいいみたいだ。''~ | ||
+ | LinuxのLIRCではそれぞれの設定ファイルを読み込めたのだが,WinLIRCではそのようには出来なかった。 | ||
+ | |||
+ | *** WinLIRCの動作確認 [#h6cda731] | ||
+ | WinLIRCを使って作成したIRリモコンの動作確認をしてみた。~ | ||
+ | |||
+ | - リモコン信号の受信の確認~ | ||
+ | コマンドプロンプトを起動し,telnetコマンドを使用してみた。~ | ||
+ | リモコンのボタンを押すとトレイアイコンが緑に点灯し,以下のようにどのボタンが押された/離されたかのメッセージの返答があった。~ | ||
+ | > telnet 127.0.0.1 8765 | ||
+ | Trying 127.0.0.1... | ||
+ | Connected to 127.0.0.1. | ||
+ | Escape character is '^]'. | ||
+ | ffff1e2010300008 00 Ok PXW3U4 | ||
+ | ffff1e2010300008 01 Ok PXW3U4 | ||
+ | ffff1e2010110008 00 Right PXW3U4 | ||
+ | ffff1e2010110008 01 Right PXW3U4 | ||
+ | ffff1e20101d0008 00 1 PXW3U4 | ||
+ | ffff1e20101d0008 01 1 PXW3U4 | ||
+ | ffff1e20101e0008 00 2 PXW3U4 | ||
+ | ffff1e20101e0008 01 2 PXW3U4 | ||
+ | ffff1e20101f0008 00 3 PXW3U4 | ||
+ | ffff1e20101f0008 01 3 PXW3U4 | ||
+ | ffff1e2010210008 00 4 PXW3U4 | ||
+ | ffff1e2010210008 01 4 PXW3U4 | ||
+ | telnet> \q | ||
+ | Connection closed. | ||
+ | これでリモコン信号の受信の動作が確認できた。~ | ||
+ | - リモコン信号の送信の確認~ | ||
+ | リモコン信号の送信が出来るか確認してみた。~ | ||
+ | コマンドプロンプトを開き,WinLIRCのtransmitコマンドを使用してみた。~ | ||
+ | > transmit PXW3U4 Power | ||
+ | としたら,リモコン信号が送信され機器が動作した。~ | ||
+ | うまく送信できたようだ。~ | ||
+ | |||
+ | ** iREx [#ea149d34] | ||
+ | WinLIRCに対応したツールとしては,[[iREx>https://ramscan.com/irex/]]や[[EventGhost>http://www.eventghost.net/]]等いくつかある。~ | ||
+ | 今回はシンプルなiRExを使ってみた。~ | ||
+ | |||
+ | iRExはWinLIRCが受信したリモコン信号から,Windowsのキーイベント等を発生させる事ができるツール。~ | ||
+ | |||
+ | iRExのインストールは上記のリンクのDownloadから[[irex.zip>https://ramscan.com/download.php?file=irex.zip]]をダウンロードして任意の場所に解凍すればOK。 | ||
+ | |||
+ | 下記のような設定ファイルを用意してirex.exeをダブルクリックで起動する。 | ||
+ | |||
+ | *** iRExの設定ファイル [#j4f4250a] | ||
+ | 設定ファイルirexe.cfgをテキストエディタで作成する。~ | ||
+ | 設定できる内容は,readme.txtに書かれている。~ | ||
+ | |||
+ | リモコン名<space>ボタン名<space>タイプ<space>動作内容 | ||
+ | の設定を1行に1動作を定義する。 | ||
+ | |||
+ | エミュレーションできる機能のタイプと動作内容には以下がある。~ | ||
+ | - exe~ | ||
+ | アプリケーションを実行する。アプリケーションはフルパスで設定する。~ | ||
+ | - key~ | ||
+ | キーボードの入力をエミュレーションする。通常のキーボードはその文字を設定すれば良い。 | ||
+ | -- 特殊なキー~ | ||
+ | 文字では表せないキーは,以下のようにする。~ | ||
+ | enter, space,back, +, -, pgup, pgdn, home, end, insert | ||
+ | delete, help, pause, tab, print, shift, ctrl, alt, win | ||
+ | shift-alt, shift-ctrl, alt-ctrl, esc | ||
+ | up(カーソルキー), down(カーソルキー), left(カーソルキー), right(カーソルキー) | ||
+ | apps, F1, ... F19(ファンクションキー), num0-num9(テンキー) | ||
+ | -- マルチメディアキー~ | ||
+ | next, prev, play, stop | ||
+ | -- 一部のPCに搭載のキー~ | ||
+ | mail, select, app1, app2 | ||
+ | -- WEBブラウザを制御するキー~ | ||
+ | b-back,b-forward,b-refresh,b-stop,b-search,b-favorites,b-home | ||
+ | - vol~ | ||
+ | 音量を調整する。~ | ||
+ | v-up(音量を上げる), v-down(音量を下げる),v-mute(音をミュート) | ||
+ | - mouse~ | ||
+ | Mouseの動きをエミュレーションする。移動量は数字で指定する。~ | ||
+ | up ###, down ###, right ###, left ### | ||
+ | lmb(左ボタン), rmb(右ボタン), mmb(中ボタン) | ||
+ | ###は移動量。~ | ||
+ | |||
+ | 一つのリモコンボタンに複数イベントを発生するには,同じリモコンボタンに2行で設定するとエミュレートされる。 | ||
+ | |||
+ | その他の設定。~ | ||
+ | - server~ | ||
+ | ip WinLIRCが動作しているIP Address | ||
+ | port WinLIRCが動作しているport(8765) | ||
+ | - editor~ | ||
+ | 設定ファイルを編集するテキストエディターを設定する。~ | ||
+ | |||
+ | *** 設定ファイルの例 [#y0721619] | ||
+ | 作成したPX-W3U4のリモコン用の''irexe.cfg''ファイル。~ | ||
+ | #code(text,nonumber,irexe.cfg) | ||
+ | |||
+ | この設定ファイルで,リモコンのTVボタンを押すとテレビ視聴アプリのTVTestが起動され,チャンネルや音量なんかが操作ができるようになった :) | ||
+ | |||
+ | 任意のアプリを起動することも出来るので便利! | ||
+ | |||
+ | * 使ってみて [#bda13624] | ||
+ | 作成したIRリモコンとWinLIRC/iRExを組み合わせると,PCやアプリケーションをリモコンで操作できるようになった。またいくつかのアプリケーションではWinLIRCに対応している。~ | ||
+ | |||
+ | PCでテレビを見る時,リモコンで操作出来るようになってこれが便利。わりあい早く反応するのでストレスなどは感じない。 | ||
+ | |||
+ | オリジナルのIRMan.dllにはPCからリモコン信号を送信する機能はなかったが,機能を追加して送信もできるようにしたので,PCから家電なんかを制御したりすることも出来るようになった。 :) | ||
+ | |||
+ | [[IRremote>https://github.com/Arduino-IRremote/Arduino-IRremote]]のおかげで多くのメーカーの赤外線リモコンに対応出来ている。ありがたいです。~ | ||
+ | |||
+ | ただPanasonic製の扇風機のリモコンを学習してみると,リモコンタイプがUNKNOWNになってしまうので,RawDataで扱わないと送受信できない。~ | ||
+ | また,エアコンのように32bit以上のサイズのリモコンデータを使用するリモコンには対応できていない。~ | ||
+ | 対応するには,自作のIRリモコンとWinLIRCでのリモコンデータのやり取りをRAW_CODESタイプで行うようにする必要がある。~ | ||
+ | |||
+ | UNKNOWNタイプやエアコンのリモコンにも対応出来るようにするのが今後の課題。~ |