リモコンコードを総当たりするリモコンコードを総当たりするさて、事の発端はweb上で噂されている、pioneerのプラズマのファクトリーメニュー。便利に使えたので、せっかくある機能は使いたいじゃないですか。残念ながらウチにあるファイナルKURO(KRP-500A)からはそのコマンドは使えなくなったらしい、とのこと。「GGF1589」というサービスマン専用のリモコンを使うことでしか、そのメニューに入れないらしい。(たぶん)8bitのコードくらい、総当たりで試してやろうじゃないか。いうのがこの計画です。いうわけで、まずざっくりと赤外線リモコンの構造を。国内メーカーの赤外線リモコンというのは、過去色々な経緯があって、現在では、おおよそ統一フォーマットになっています。基本的に、メーカーコード(カスタムコード)8bit+機能コード8bitと言う構成です。このように(暗黙の了解で)統一されているので、テレビのチャンネルを切り換えたらストーブの電源が入っちゃったよ、という事が起こりにくくなっています。NECELが公開している情報に国内各社は似せています。[共通]』のA-1を熟読しましょう。いうわけで、とりあえずまずリモコンがどんな信号を出しているのか見てみましょう。これは純正リモコン(AXD1566)の電源ボタンを押したときの波形です。取得方法はオシロなどの特別な機械が無くても、汎用の赤外線リモコン受光モジュールの出力をサウンドカードに入れるだけで、十分なクオリティで観測できます。無圧縮waveで録音してくださいね。圧縮されると無理だと思います。ここの波形は綺麗に表示するために、2値化していますが。サウンドカードで録音(取得)した波形を、編集ソフトで目一杯音量を増幅してやると、これにかなり近い波形にすることができます。ちなみに、これは受光モジュールからの出力なので、on期間が下(L)になります。NECELのフォーマット説明の図とは上下反転してるわけですので混乱しないように。※時間軸単位については後述します。これにわかりやすいようにコメントを入れました。ちなみに、NECELの説明にあるリピート機能は無いようで、延々とこのパターンが送信し続けられます。これに実際に数字(コード)を当てはめてみましょう。NECELフォーマットの説明を見ると、データ1の場合もデータ0の場合も、on期間は変わらず、off期間のみ変わります。これはカスタムコード、データコードの両方に適用されます。̄|_)のみ変化していることが解ります。offパルス幅が短い場合は0、offパルス幅が長い場合は1と言うことです。したがって、offパルス幅に着目して数字を割り当てていけばいいのです。それを記入してみました。カスタムコードは「0101010110101010」、データコードは「00111000」、反転データコードは「11000111」となっているようです。NECELフォーマットの説明通り、データコードと反転の関係も正しいですね。ついでに、カスタムコードも、後半8bitは前半8bitの反転となっているようです。いうわけで、この電源ボタンは、カスタムコードは「01010101」、データコードは「00111000」となります。NECELフォーマットによると、LSBファースト送信のため、実際には、カスタムコード:10101010=0xAAデーターコード:00011100=0x1cと表記します。ここまで解ったので、色々なボタンを押してみましょう。すると、面白い動作をすることが解ります。確かに「電源」ボタンを押すと、「AA-1C」を連続して送信するのですが、たとえば、「入力1」ボタンを押すと「AA-5A」「AF-7A」と、2つのコードを交互に送信します。「サイズ」ボタンを押すと「AA-5E」「AF-3A」と送信したりします。以前ちらっと、日記に書いたのはこういう事ですねー。カスタムコードは原則1社1コードらしいので、パイオニアであればテレビ以外、たとえばプレーヤー?にも同じコードを使っているはずです。256個では足りなくなってしまったんでしょうか・・・・。いうわけで、ちまちまと全部のボタンを取得した結果をまとめてみました。・「AA-xx」を繰り返し送信。・「AA-5A」「AF-xx」を繰り返し送信。・「AA-5B」「AF-xx」を繰り返し送信。・「AA-5E」「AF-xx」を繰り返し送信。4種類あることが解りました。入力1から順に7Aから割当たって、7Fまで行った後に(コードが足りなくて?)入力7が77に割り当てられているなど、その昔赤外線リモコンが合った頃には想定していなかった機能なんでしょうね。見事に、最初のたかが8bitじゃねーか総当たりできろうだろう的な発想は崩れ去ったのです。言う物の、それでもたかが1024通り、1コード3秒で試行していっても1時間もかかりません。十分現実的な時間です。ついでに言うと、何故かは解りませんがデータコードは0〜7fまでに収まっているようです。「AA-5F」が正解の様です。やってその総当たりをするか、というか、どうやって赤外線リモコンを作るか、という話です。取得した波形を切り貼りして再送信する、というのが基本的な形ですが、せっかく作るのですからきちっと測定して作りましょう。いうわけで、さらに詳しい話に続く。感想、要望、バグ報告、その他何かありましたら、メールもしくは掲示板にてご連絡ください。