2012年2月18日土曜日

Apple Remote Receiver (リモコン受信機)


Apple Remote とは、、、
世界で指折りの美しさを誇る赤外線タイプのリモコンです。

以前は初代 iPod シャッフルに似た、白いプラスチック製でした。
単品で購入する事もできますが、一部のMac に付属して来たり、iPhone/iPod のUniversal Dock に付属したり、Apple TV に付属したり、と、Apple 製品に囲まれている人は2、3個もっていたりします。

しかし、、、その大半が使われていないのではないでしょうか?
iPhone でMac の iTunes を操作するRemote.app や、iPhone の音をWiFi で飛ばすAirPlay など、リモコン要らずな環境が次々と出てきました。このリモコンのために作られたアプリとも言える「Front Row」は、Mac OS X Lion からは付属しなくなりました。MacBook から赤外線受光部が無くなるのも、時間の問題です。(既にMacBook Air にはリモコン受光部がありません。)

そんな余っている Apple Remote を使って操作するデバイスを、Arduino で作りましょう。
Arduino で学習リモコンを作る例はいくつか有るので、それをベースに作ろうと思っていましたが、HIFIDUINO というDAC をArduino でコントロールするプロジェクトがありました。

HIFIDUINOは、Apple Remote での操作に対応しているので、公開されているコードからリモコン受信ルーチンだけを取り出し、LED を点灯/消灯するようにしてみました。





リモコンの信号を受信すると、4Byte のデータ(c1, c2, c3, c4)を受信します。
そのうち、使っているのは c3 のみで、ボタンの種類を判別します。
c4 はリモコン自体のID になっています。
Macやリモコンが複数台ある場合に、特定のリモコンだけに反応したい場合に使います。
(システム環境設定 > セキュリティ > 一般 で設定します。Mac はリモコンに反応しない用に設定しておいた方が良いでしょう。)
このID は1Byte なので、ID が被る可能性があります。その場合リモコン側の操作で変更できるそうです。(Menu と Center を5秒間同時押しすると、ID が1つインクリメントされる)

Apple Remote は新(アルミ)・旧(プラスチック)でボタンの数が1つ増えました。そのため、新Center ボタンと新PlayPause ボタンは、旧Center(PlayPause) ボタンに相当する信号と、両方を出すようになっています。
(動画で、1つだけ青いLEDになっているのところが、旧Center 信号に反応しています。新リモコンを操作しているとき、[Center] と [PlayPause] の両方に、同時に反応しています。)

こちらで解説されていますが、このリモコンの信号は新・旧の違いの他に、なぜか 2種類 あるそうです。
HIFIDUINO のコードは 11, 13 のみに反応するようになっていましたが、
リモコンによっては11 ではなく10を、13ではなく12を出力します。
家のリモコンは新旧両方とも、このサイトでいう所の「ODD CODE」だったので、両方に対応する(であろう)コードにしてみました。

リピート信号(ボタンを押し続けたときに出る)の処理は、コメントアウトしています。
この辺りは、用途によって使い分けて下さい。


ハードウェアはリモコン受信モジュールの電源と、出力を3番ピンに接続するだけです。LED は確認用なので、お好みで。
シリアルポートに受信結果を出力することもできます。(コメントアウトされています。)
リモコン受信モジュールは秋月の PL-IRM0101(38kHz)シールド付き を使いました。

0 件のコメント:

コメントを投稿