リモコンアナライザー

更新:2025/5/11


リモコン関連の制作をするために、市販のリモコンの解析器を作成しました。

特徴

赤外線リモコンのフォーマットの概要については、こちらを参考にしてください

システム構成

システム構成図は下記のとおりで、PCにUSB-UART変換ケーブルで接続します。リモコンアナライザの操作は、PC上でTeraTermなどの ターミナルエミュレータに、コマンドを入力することで行います。電源はUSBの5VをUSB-UART変換ケーブルを介して、供給します。


図1 システム構成図

UART変換ケーブル仕様

一般的なUSB-UARTの変換基板を使用して作成できます。UART側は2.54ピッチのピンヘッダに下記の仕様で、UART TX/RX、VDD 5V、GNDを接続します。


図2 USB-UART変換ケーブル

回路図、配線図

回路図と配線図は下記になります。秋月電子のユニバーサル基板(D基板)に実装可能です。


図3 回路図

配線図は下記になります。


図4 配線図

回路の説明はこちらをご覧ください。

ソフトウェア

ソフトウェアの説明はこちらをご覧ください。ソースコードは下記になります。

RemoteAnalizer2.X.zip (2025/4/29)

使い方

ターミナルの起動

  1. PCとUSB変換ケーブルで、リモコンアナライザ基板を接続します。
  2. ターミナルを開きます。下記にTera Termの場合の設定を示します。


    図5 Tera Term / Serial Port


    図6 Tera Term / Termial

キャリア周波数の検出

  1. 下記のコマンドでキャリア周波数検出モードを設定します。
    リモコンアナライザのコマンドインタフェースはエコーバックしません。コマンドが正常に実行されればok、 エラーが発生したらngのリプライが表示されます。
    capcarrier
    
  2. 検出対象のリモコンを、フォトトランジスタに接近させて、何かのボタンを押します。
  3. 検出が成功すれば、キャリア周波数が表示されます。


HL区間、ビットコードの検出

  1. 下記のコマンドでパルス検出モードを設定します。
    cappulse
    
  2. 検出対象のリモコンを、フォトトランジスタに接近させて、何かのボタンを押します。
  3. 検出が成功すれば、HL区間幅が1行ごとに表示されます。最大検出数は512です。
    変調単位(T)のHL区間は、デフォルト変調単位で計算されているため無視します。


  4. 検出したHL区間幅から、1変調単位(T)と思われるHL区間幅の平均をとります。


  5. 上記の例では、赤枠の平均は410ですので、変調単位(T)として410usecを設定します。
    pmodunit 410
    
  6. 再度、検出対象のリモコンを、フォトトランジスタに接近させて、何かのボタンを押します。
    今度は、変調単位(T)のHL区間幅を見て、ビットコードのスタートのインデックスを読み取ります。 下記の例では、最初の8T, 4Tはリーダと考えられられるので、2になります。


  7. ビットコードのスタートのインデックスを設定します。
    pbitstartidx 2
    
  8. 再度、リモコンをフォトトランジスタに接近させて、ボタンを押します。
    下記のように、ビットコードのスタートのインデックスからビットコードがデコードされて、2進数と16進数で表示されます。H,L区間が1T, 1Tで並んでいるものを0、、H, Lが1T, 3Tまたは3T, 1Tと並んだものが1とデコードされます。2進数はデコードした順番で表示されます。16進数はbit0 - bit7の順でデコードしたビットを並べられています。
    pcap_countはキャプチャしたH, L区間の数、pcap_bit_start_idxはキャプチャしたH, L区間でビットコードスタートインデックス、pcap_bit_countビットコードにデコードされたビットの数、interval_start_idxはキャプチャしたH, L区間で次のシーケンスまでのインターバル区間のインデックス(通常Lの区間)。
    ビットコードのデコードが途中で終了した場合は、要因が表示されます。下記の例では、ERR_PUL_COUNT(H, Lの区間のカウント(変調単位の区間)が規定外)



リピート、再送の検出

  1. 単位パルス幅をコマンドで設定します。下記は、410usecを設定した例です。
    pmodunit 410
    
  2. 下記のコマンドでリーダ検出モードを設定します。
    capleader
    
  3. リモコンをフォトトランジスタに接近させて、ボタンを押します。
    下記のように、3Tより長いパルス幅とそれを検出するまでスキップしたパルスの数(H, L区間の数)が表示されます。
    下記の例では、8TのH, 4TのLのリーダの後、81のH,L区間が続き、15TのL区間が続き、また8TのH, 4TのLのリーダが続いているので、3フレーム送出されていることが分かります。


送信

  1. 下記のコマンドでパラメータを設定します。
    sfreq 392
    smodunit 410
    ssection 080401010103010f0804
    scode 77071001FE
    sbitstartidx 2
    sinteridx 7
    srepeatcount 2
    
    コマンド説明
    sfreq0.1kHz単位のキャリア周波数
    smodunit変調単位[usec]
    ssectionHL区間[T]
    080401010103010f0804
    は下記の意味になります。
    leader high 8T, leader low 4T, zero low 1T, zero high 1T, one high 1T, one low 3T, tailer high 1T, interval low 15T, leader high 8T, leader low 4T
    詳細については「送信時のセクション定義」を参照して下さい
    scodeビットコード。バイト単位に、bit0からbit7の順番で送信されます
    sbitstartidxビットコードのスタートのインデックス
    sinteridxインターバル区間のインデックス
    srepeatcountリピートの回数。リピートしない場合は0
  2. 下記のコマンドで送信モードを設定します
    sendstart
    
  3. 下記のコマンドで送信します
    send
    

送信時のセクション定義

ssectionコマンドで、snd_sec_bufの内容設定されます。下記に複数フレームの場合と単一フレームの場合のsnd_sec_bufの定義を図示します。


メモ

戻る