Macに接続された赤外線リモコンモジュールを使い、家電機器の赤外線リモコンの エミュレートを行うアプリケーションです。サポートするモジュールは以下になり ます。
リモコンの信号のパターンは FUATABA WEB/リモコン・データベース形式のデータを利用しています。
AppleScriptでの制御も可能になっています。 作者はAppleScriptの連携で、猫のお留守番から 電源ON/OFFと選局をおこなっています。Macに接続したPC-OP-RS1からSONYのPT-D4Wの 電源ユニットとFPGA FMチューナに搭載した、 SONY TVリモコン互換のモジュールをコントロールしてフルオートなエアーチェック 環境が構築できています。このモジュールはAVRマイコンを使い作ってみました。
このアプリは10.4以降に作り出したような気がするが、なぜかAppleScriptの実装は sdef直接ではなくscriptSuite/scriptTerminologyでのサポートになっている。 このプロジェクトではsdefを作成してsdpコマンドで変換してリソースにコピーして いる。
コマンドラインから制御するには以下のようなスクリプトで可能です。sshで入って 実行するとちょっと便利かもしれません。
$ cat arcmd.scpt on run argv tell application "Armadillo" openxml item 1 of argv -- need delay load file delay 2 usedevice "PC-OP-RS1" port 1 commandsend item 2 of argv delay 0.5 commandsend item 2 of argv delay 0.5 commandsend item 2 of argv end tell end run $ osascript arcmd.scpt "/Users/hiroki/Documents/iremo-PT-D4W.xml" "B ON"
FTDIをチップを使ったモジュールはBitBangというモードで直接赤外線の出力の コントロールを行っています。 PC-OP-RS1はFTDIのUSBシリアル変換の先にワンチップマイコンのPICが接続されてい ますが、このモジュールはFTDIのチップだけのシンプルな構成で、またコマンドの長 さの制限もありません。 簡単に作るには秋月のFT232RLのモジュールを使い、1番ピン(TXD)に赤外線ダイオード と抵抗を接続してグランドに落とすだけで出来ます。 下の写真は赤外線ダイオードを二つを駆動するためにトランジスタを使っています。 genir.cは1ビット目に発光回路が接続されているデータを生成するようになってい ます。BitBangモードとは指定されたクロックにしたかがってI/Oを制御するモード でクロックを適当に設定して38Kのキャリアを作り出しています。1ビットしか使わ ないのでちょっと損した気分ですが、1000円くらいで出来るのでできるのでなかなか よいのではないかと思っています。
クロッサム2の接続は
BelkinF5U103Driver
を使い、PC-OP-RS1は
FTDIDriver
を利用しています。昔はFTDIの純正のドライバにPC-OP-RS1のVID/PIDが入っていな
かったのですが、今は入っているようなので純正ドライバで使えます。
ビットトレードワンさんが公開してして いるPICベースのUSB赤外線リモコンキットのサポートを 入れました。KLabさんのブログで公開されていたコードをベースしています。 10.5以降のHIDの処理が入っているため、10.5以降のサポートに変更になります。 このモジュールは、信号長、パターンタイプ、信号パターンを渡す仕様なのだが パターンがLSBなデータ形式で戸惑った。
久しぶりにFTを試したらうまく動かず、ちょっといじってみた。SONYの半分壊れている ポータブルCDで試してみたら、うまく動かなかった。FTのパターンは38Kを5つのデータ で作って、25usで1は波形としていたが23usにしたら良い感じになった。またSONYの リモコンはかなりリピートしないとちゃんと受け取らないような気がする。
ハムフェア2013でLogitecのLAN-IRU01が500円で売っていたので買ってみた。ネットで 調べてみたところ、少し前からネットなどでも投げされていたようだ。Bluetoothの SPPのようで、ちちの物欲さんが既に 解析されていた。 USBも付いているが、マニュアルには使えないと書いてある。しかし接続してUSB Proble で見るとHIDとして認識されている。100mAのデバイスとして認識されるがLEDが10個付 をドライブするのは無理なので、ブートローダーなのかもしれない。基板裏にはJTAGの シルクが見えるので、ハード的には十分なスベックなので、代替えファームでも突っ込 めると面白いかもしれない。
FTDIのチップはちょっと高価なのと1Bitの処理だけに使うのはもったいないのでAVR の安価なATTiny2313でUSBリモコンを作ってみました。直にUSBを処理するため2Kの フラッシュの1.5Kが使われてしまい0.5Kのコードでは三菱のディスプレーの コントロール専用の コードしか書けませんでした。時間が出来たらATTiny85とか使 って再トライしてみたいと思っていますが、いつになるかは分かりません。ATTiny85 だとFT232Rとほとんど値段変わらないけどDIPなので扱いやすいがライターが必要に なるという難しいところです。汎用のリモコンが作れたら本ソフトで対応したいと 思っています。
三菱のディスプレーはこの自作のモジュールからだとちゃんとコントロールできるのに 純正のリモコンにはまったく反応しない。購入直後も調子悪くて一回交換してもらった 記憶があるのだが。。。信号は出ているようなのだが。
このディスプレイは数年前に液晶に線が入り壊れてしまい、修理してもらった。 3年保証だったので、無償修理だったのだが、ほんとうに助かった。 次買うときにも三菱のディスプレイにしようと思っていたら、三菱はコンシューマの ディスプレイの販売を止めてしまっていた。
もうとっくに保証期間は過ぎているので、リモコンを分解して確認してみた。 このリモコンはRU-DM114というモデルで、キーのシートが両面テープで貼付けて あるので、剥がすと基板が出てきます。この基板は小さなねじで4箇所ケースにとめられ ています。オシロスコープでLEDの信号を見てみたら、やはりCR2025を使っていると 信号は出ているが壊れていた。試しに単三電池を二本で試したところ正常な信号が 確認された。CR2025の電圧を見たところ3V以上はある。ネットで検索してみると、 いくつか同様の現象が報告されていて、おそらく電池のパワーがかなり必要で、 CR2025では一年くらいしか持たないのかもしれない。とりあえず単三電池二本の 電池ケースを接続して使う事にした。このリモコンはデザインは悪くないのだが、 ボタンを押したかが分かりづらく、インジケータなどもなく使えなくなったときも 分からないのは良くないと思う。
ATTiny85が安く手に入り、思いつきでリモコン信号解析用のモジュールを作ってみた。時々データが
欠ける事があるが、おおよその解析は出来るようになった。USB割り込みがあるので
完璧にするのは難しいような気がする。
ソースはここに置いてある。
sh-3.2$ ./sony 18 Devices in list. Device Opened Claimed Interface Control... S101010010000E S101010010000E S101010010000E
ハードオフでジャンクをあさっていたところKeyspanのUIA-11Fという赤外線受信 モジュールが100円であったので購入してみた。送信機は付いていなかった。 ネットからドライバをダウンロードして確認したところ、このモジュールはHIDでは なく汎用の赤外線受信機のようだ。リモコンの種類を選べるようになってい、一つの 設定ファイル(JVC_VCR.REM) が以下のような内容になっていた。
FRQ 38000^M^MBIT 520^M^MCMD POWER 0103 0103 0101 0101 0101 0101 0103 0101 010 3 0103 0101 0103 0101 0101 0101 0101 01ff
これはビクターのビデオのリモコンの電源ボタンで16ビットで0xC2D0 (1100001011010000)のように見える。01が520usで03が1560usとなるのではない だろうか。
このドライバ(KeyspanDMR22.pkg)はかなり古い物でppcのkext(DMRantiClassic.kext)と 常駐アプリ(DMRMapperApplication.app)と設定アプリ(KeyspanDMR.app)の組み合わせで 動作するようなのだが、10.5のppcでも設定アプリが正常に動作しないなど、最新の OS環境での動作しないのではないかと思われる。Amazonでまだ後継機種が売られている が大丈夫なんだろうか。。。
純正リモコンに対応したKeyspanDMR17A.REMの先頭部分は以下のようになっていた。
FRQ 38000^M^MBIT 342^M^MCMD STOP 0707 0302 0302 0302 0204 0204 0204 0302 0302 03 02 0302 0302 0302 0204 0302 0302 05ff
0001 1100 0000 100で15ビットで1C08となるのでは無いだろうか。
アルマジロでビクターのビデオ信号を試しに送信してみたが、正常に受けられなかっ たので、ハードオフのジャンクからビクターのビデオのリモコンを捜して200円で購入 して試したところ、ちゃんと認識できた。SONY VAIOに付属だったIR受信機がハードオフで108円で良く売られている。これは HIDデバイスなのだが、定期的にデータを送ってきてあまり利用勝手がよくないので チップを剥がしてAVRからPICで作りなおしてみようかと企んでいる。
かなり長い事考えていたのだが、秋月のソリッドステートリレー(SSR)をAVRで コントロールして、赤外線リモコン信号で、AC100Vをオン・オフできるようにしてみた。 コードはFPGA FMチューナのコントローラーと同じロジックで、ATTiny13を使用して みた。ピンやヒューズが違っていて、ちょっと戸惑ったが、どうにか動くように なった。ATTinyのIOでもSSRをドライブできるような気もするが、念のためにPNPな トランジスタでドライブしている。このトランジスターは何かのジャンクに入っていた JA101というヨーロッパ系の石を在庫処分で使った。FPGA FMチューナの制御には シリアルが必要でそのためのTimerが必要だったのでTimerが一つしか無いATTiny13では 動かせなかったしサイズ的にもちょっと厳しいが、こちらの方はIR用のTimerだけだ 大丈夫だしサイズも724Biteと1Kに収まってる。8ピンでIRとOUTの1本とVCC/GNDと リセットを抜いてもまだ3本も余っている。まだちょっと遊べそうかも。 プログラムでは処理していないときはSLEEPしているのでCPU自体の消費電力は1mA以下 になるが、SSRのドライブに10mAくらい使ってしまうようです。 写真に写っている置物は三上洋さんのバベルの塔です。
mrubyでビットトレードワンさんのモジュールをコントロールするモジュールを 作ってみた。GitHub これを作ったのはUSB付きのルータなどでコントロールするためで、Zrouterで環境変数 WITH_USBを設定してビルドするとこのモジュールが組み込まれたmrubyができるように してある。
2016年9月現在スタンドアローンやスマホと連携した、けっこう良い値段の学習赤外線 リモコンがいくつも販売されている。その昔赤外線リモコンなんてロウテクは Bluetoothに置き換わっていくのかと思ったものだがそうはならなかった。 部品のコストの問題もあるのかもしれないが、この学習リモコンに収納できると いうことも利用者にとってメリットだったりするのではないだろうか。
上記のリモコンをAmazonとかで見てみると、一緒にOHMのリモコンでACコンセントを ON/OFFできる機器が一緒に購入されているのがわかる。この機器は私も使っているが リモコンの信号の処理が雑なのか別のリモコンに誤動作する事がある。また上記の ソリッドステートの部品代よりも高かったりする。PT-D4Wの電源ユニットのように 二口とかコントロールできる機器を作ったら結構売れるんじゃないかな。
8ピンのATTiny13のピンはもう3本開いているのでSSRを4つつないで4口にする事も できる。
PT-D4Wの電源ユニットはハードオフでないかと探しているのが、なかなかお目に かからない。これだけあっても使い物にならないので、二束三文になると思うのだが。 このユニットのSONY 12bitの信号は下記のCrossam2のメモで調べてあります。
100V関係は製造の許可もいるし、製造に問題があって火事になってしまうと 責任が問われるのでうまみがないのかな。
LAN-IRU01はいろいろ調べてカスタムファームを作る事ができた。BSLなVID/PIDが USBで見えているのはなんとも不思議な仕様だ。通常はベンダーのファームアップ デートでBSLを使うにしてもボタンを押しながら電源を入れるなどのインターフェース になるはずだ。使っていないボタンもあり製造時になんらかの問題があった可能性が あるのではないだろうか。
このためにmspdebugのload-bslにMac OS X HIDの対応コードを書いてマージして もらった。load-bslは二度目の起動で使えるのだが、FreeBSDでも同じような挙動 なので、ドライバではなく本体側の問題な気がする。気が向いたらいつか直したいな。
まだどきどきネットでも見かけるが、LAN-IRU01が投げ売りされてしまったのは 以下のような問題があると思う。デザインは悪くないしハードのスペックも十分 なのに大変残念な話だ。
IRKitの10分の一くらいの価格になってしまっているし、SONYも2万円を越える 学習リモコンの製品もあるのに本当にもったいない。この製品がうまくいかなかった のは、内蔵ファームのBluetooth部分とメインCPU分の連携がうまくなかった。 またスマホ側のアプリの開発リーソスが限られていたなどが考えられる。 SPPの仕様を公開してiPhoneのアプリを作ってもらう方法もあったのではないかな。
このモジュールをいじっていて気がついたがBluetoothの省電力は二つの視点がある と思う。一つは接続中の電力と、もう一つは待機中の電力になる。単三の1000mAh くらいで一年持たせるためには待機電力は0.1mA程度になるようだ。