RaspberryPi + Pioneer System Remote

この記事では、Pioneer System Remote(SR)バスについて簡単に説明し、RaspberryPiをGPIO経由でPioneer M-10Xアンプを制御するRaspberryPiのシステムリモートバスおよびCLI Cプログラムに接続する方法を示します。 啓示として、このプログラムの使用方法が示されています。



Pioneer System Remoteの概要



一部のPioneer Corporationのホームオーディオ/ビデオコンポーネントは、SR(System Remoteの略)と呼ばれる制御バスを介して相互に接続できます。 もちろん、個々のコンポーネントを単一のシステムに組み合わせることの目的は、消費者の利便性です。これは、同時にデバイスの列全体を1つのリモートコントロールから制御できるためです。



このバスのコネクタは、 CONTROL INおよびCONTROL OUTとして指定され、モノラルミニジャック3.5mmジャックの形で作られています。 したがって、ブロックは、3.5 mmミニプラグモノプラグ(TSタイプコネクタ、Tip-Sleeve製)を備えた通常の2ピンオーディオケーブルを使用してSRバス経由で接続できます。 デバイスはデイジーチェーンで直列に接続されています。1つのコンポーネントのCONTROL OUT出力は別のコンポーネントのCONTROL IN入力に接続されています。 コネクタの先端は実際のSRバス信号を伝送しますが、 スリーブコンタクトでは、少し複雑になります。 一部のコンポーネント(たとえば、M-10Xアンプ)には、正直な「グラウンド」があり、すべてが本来の状態です: ヒント -信号、 スリーブ -「グラウンド」。 ただし、SRバスコネクタのスリーブピンを使用してデジタルオーディオ信号を送信するコンポーネント(通常はプレーヤー)があります。 この場合、「グランド」はコンポーネントケースまたはアナログオーディオジャックの「グランド」から取得されます。 実際、コンポーネントの「アース」が何らかの方法で接続されている場合、SRバスコネクタのスリーブコンタクトを完全に忘れることができます。



SRバス制御コードは、復調されたリモートコントロール信号にすぎません。 つまり、SRバスは単純に、搬送波周波数をクリアしたIRコマンドの有線リピーターです。 (IRリモコンでは、〜40 kHzの搬送周波数制御コードの変調が使用され、まず送信のためのエネルギー消費を削減し、リモコンのバッテリー寿命を延ばし、次に、他の人のリモコンの信号を調整できるようにします)。 IRコマンドがリモートコントロールから受信されると、アクティブなSRレシーバーはSRバスを介してこのコマンドを再送信します。 バスに接続されているすべてのデバイスがコマンドを表示します。 Pioneer Corporationのコンポーネントには、1つのSRバスコネクタ(入力のみまたは出力のみ)、または2つの入力と出力を装備できます。 入力CONTROL INは、コマンドインタープリター(M-10XアンプではPD5637Aチップなどの特別なチップ)の存在によって特徴付けられ、デバイスによるコマンドのデコードと実行を担当します。 ただし、システムリモートは共通バスであり、制御コードはCONTROL OUT出力とCONTROL IN入力の両方に中継されることに注意してください。



最も単純なケースでは、制御コードはダブルバイトです。最初のバイトはデバイスのタイプで、2番目のバイトはこのタイプのデバイスで実行する実際のコマンドコードです。 以下は、参照用のSRバスデバイスタイプ(制御コマンドの最初のバイト)のリストです。





SRバス上のデバイスには専用アドレスがありません。バスはアドレス指定できません。 したがって、たとえば、2つのCDプレーヤーがバスに接続されている場合、デバイスタイプ0xA2の多くのコマンドは両方のプレーヤーを同時に実行します。 多くのコマンドコードがあり、コマンドセットはデバイスのタイプ、リリース年、さらにはコンポーネントモデルによって異なります。 Pioneer Corporationのいずれかのサイトの[カスタムインストール]セクションで、このリンククリックして、特定のモデルのデバイスコードと制御コマンドをダウンロードします。





システムリモートバス経由で情報を転送するためのプロトコルは非常に簡単です。 バスコネクタのチップピンの各コンポーネントは、+ 5V(TTLロジック)をサポートします。 情報フレームを送信するには 、SRバスの接点の先端に接地電位(0V)を印加するために、特定の順序で、特定の期間で必要です。 パイオニアは、多くの日本のメーカーと同様に、0.56msの持続時間のパルスで論理ゼロがエンコードされ、その後0.56msの休止でエンコードされ、0.56msのパルスで論理ユニットがエンコードされると、IRコマンドでビット幅コード化コーディングスキームを使用し、その後、一時停止1.68ms。



図1.ビット長コーディング。



2バイト命令のSRバスフレームの構造は次のとおりです。





次の図は、パワートグルコマンド(コマンドコード0x38)をアンプ(デバイスタイプコード0xA5)に送信するSRバスフレーム0xA55A38C7のオシログラムを示しています。









図2.システムリモートバスのフレーム0xA55A38C7。



アンプパイオニアM-10X



これはパワーアンプであり、コントロールから2つのボタンのみがあります。機械的な電源ボタンと電子的なスタンバイボタンです。 あまりない。 しかし、幸いなことに、システムリモートバスのCONTROL IN入力も装備されており、次の3つのコマンドを理解します。



RaspberryPiをPioneer System Remote Busに接続します



システムリモートバスにはTTLロジックがあり、電圧は0Vから+ 5Vまで変化します。 GPIO RaspberryPiピンでは、電圧は0Vから+ 3.3Vの範囲で変化しますが、これらのピンの過電圧保護はボード上では提供されません。 そのため、GPIOピンからSRバスを直接制御することはできないため、レベルコンバーターを使用する必要があります。



ここで紹介する回路はそのようなコンバータです。 トランジスターQ1のベースは、抵抗器R1を介してレッグP1-11(GPIO17)RPiに接続され、トランジスターのコレクターは抵抗器R2を介して-脚部P1-02(5V)RPiに、トランジスターのエミッターに-脚部P1-20(GND)RPiに接続されます。 GPIO17(トランジスタQ1のベース)の出力をプログラムで制御することにより、端子ブロックJ1(トランジスタQ1のコレクタ)のチップ端子で、システムリモートバスの制御コマンドに必要なレベルの信号を取得します。 抵抗R1はベースの電流制限器として機能し、抵抗R2はトランジスタのコレクタの電流制限器として機能します。 0Vトランジスタに基づいている場合(GPIO17 = 0)、トランジスタは閉じられ、電位+ 5Vがエミッタに保持されます。 トランジスタ+ 3.3V(GPIO17 = 1)に基づく場合、トランジスタは開いており、エミッタで電位0Vが保持されます。 したがって、厳密に言えば、この回路はレベル変換を備えた信号インバーターです。 上記の図2は、動作回路のオシログラムを示しています:上のグラフはトランジスターコレクター(SRバス)の信号、下のグラフはトランジスターベースの信号(GPIO17ピン。この信号の実際の範囲は0Vから+ 3.3Vです)。











スキームを実装するには、次のものが必要です。





プラグのはんだ付けを混乱させないために、代わりにミニプラグ3.5mmの既製のモノケーブルを取り、片側のコネクタを切断し、導体を端子ブロックJ1に接続することができます。



注意! RaspberryPiの5ボルトの脚(P1-02およびP1-04)には十分注意してください。これらの接点をボードの他の脚と誤って短絡させないでください。



RaspberryPi用のPioneer M-10Xアンプの電源管理プログラム



Raspbianプラットフォーム用のプログラムのソースコードは、このリンクにあります。 コードにはnice(-19)呼び出しが含まれているため、ルートスーパーユーザーがプログラムを呼び出す必要があります。 プログラムをビルドするには、次のコマンドを使用する必要があります。



gcc -o m10xptgl m10xptgl.c
      
      





アセンブリ後、実行可能ファイルへの代替名m10xponおよびm10xpoffの2つのシンボリックリンクを作成する必要があります。



 ln -s m10xptgl m10xpon ln -s m10xptgl m10xpoff
      
      





このプログラムは、GPIO17フットにPioneer M-10Xアンプの制御コマンドフレームを生成します。 実際のプログラムアクション(生成されたフレーム)は、プログラムが実行されている名前によって異なります。





プログラムへのオプションの引数として整数を指定できます。この場合、コマンドライン引数で指定された回数だけフレームが順番に繰り返されます。



一般に、プロジェクトはシンプルで、LED点滅のトレーニングプロジェクトほど複雑ではありません。ここでのみ、Pioneerアンプ全体を「点滅」させます。



申込み





記事に記載されている回路とプログラムは、たとえば、 shairportプロジェクトと一緒に使用すると便利です。この場合、古いアンプのAirPlay機能だけでなく、オンデマンドでアンプの自動オンとオフも取得できるためです。



ソースコードからshairportプロジェクトをビルドするには、次のコマンドのシーケンスを使用します。



 apt-get install avahi-daemon mdns-scan libssl-dev libavahi-client-dev libasound2-dev apt-get install libao4 libao-dev apt-get install pulseaudio libpulse-dev cd /root/src; git clone --depth 1 https://github.com/abrasive/shairport.git shairport cd shairport ./configure make
      
      





そして、次のように実行します:



 shairport -v --name="M10X" --on-start="/usr/local/sbin/m10xpon 10" --on-stop="/usr/local/sbin/m10xpoff 10"
      
      





ご清聴ありがとうございました。



All Articles