rcImpact(ImpactSystems)

フライトスティック改造

PCでフライトシミュレータをするときのフライトスティックを、ラジコンで使われるS.BUS信号出力のコントローラに改造した紹介記事です。ラジコン送信機のトレーナ入力に接続すれば、フライトスティックでラジコン機を飛ばすこともできます。
フライトスティックはLogitechのEXTREME3D_PRO対応としました。今は製造中止のようですが、改造するので中古が丁度利用しやすいと思います。またラジコン送信機としてFutabaのT12Kを利用しています。これのトレーナ機能の利用の仕方も紹介しています。
これらのために基板を作成しました。アナログ入力/シリアル出力変換器です。フライトスティックの基板を差し替えてS.BUS出力とします。

利用例1(トレーナー接続)

T12KとEXTREME3D

改造済みフライトスティック(EXTREME3D_PRO)をトレーナーケーブルで先生側のラジコン送信機(Futaba T12K)に接続します。通常は生徒側もラジコン送信機なのですが、写真のように先生:ラジコン送信機、生徒:フライトスティックの接続になります。フライトスティックの電源は先生側のT12Kからもらいます。

T12Kと基板直付けで背面スイッチ

改造用の基板を送信機の背中に貼付けてみました。こうすれば送信機を改造しなくてもスイッチを追加できます。折れたスイッチの代用も簡単ですし、コンバット系のフライトシミュレータにプッシュスイッチで機銃を追加できます。またHATスイッチとして、LS/RSのスライドボリュームの代わりに基板付けのジョイスティック等も追加もできます。

利用例2(Xbox変換器接続)

XBOX変換器とEXTREME3D

別掲記事で紹介したスロットカーのコントローラを無線化するXBOX変換器はS.BUS入力です。改造フライトコントローラはSBUS出力なのでこれに接続できます。もちろん改造前のままPCに接続すればフライトスティックとして使用できるのですが、自作コントローラ(自作アケコンなど)の補助入力と考えればいいかなと思います。

JOYPRO8とEXTREME3D フライトシミュレータでFlapsの上げ下げとか視界の変更とかをする自作コントローラに接続しました。キーボードの代わりに使用するコントローラです(一部キーキャップが無くなっていますが)。これは ATmega32u4を使用して、ドライバーはJoystick.hです。

CASEaとEXTREME3D

こちらのコントローラのドライバーはXinput.hを使用しています。

フライトスティックの改造

改造はLogitechのEXTREME3D_PROを分解して基板を交換するだけです。もちろんこの作業をするとメーカ保証は受けられなくなりますので自己責任での作業になります。また、このスティック部分は絶妙な組立てになっているので、ムリな力を加えないように慎重に作業していかなければなりません。再組立て時にスティック部分のラダーが動かなかったり、突起を破損したりしました。

IR794b基板

改造は、この自作基板を元の基板と差し替えるだけです。USBハーネスも差し替えます。この基板は元の基板を採寸してほぼ同じ形状で作成しました。ただこの写真の基板はVer2の基板です。Ver1は位置決めの穴を忘れていて本体のボスをカットしなければなりませんでした。初期改造は約4年前にしました。Ver2の基板は即作成しましたが、部品実装したのは最近です。

スティックの隠れたネジ位置

EXTREM30のベースの蓋は裏側のネジ8本で止まっています。これは簡単に外れるでしょう。底のネジを外すと上蓋が外れますがスティックにひっかかるので、スティックも分解しなくてはなりません。
スティック部分は3本のねじがあります。これは見たとおりで分かりやすいのですが、ブーツの部分にネジが2本隠れています。これを外さないとスティックは分解できません。このネジを外した後スティック底の引っかけを外すとスティックは左右に離れます。

スティック部分分解

スティックを分解したところです。すでに上蓋はネジを外してあるので後はトップのHATスイッチ基板をくぐらせるだけです。
写真のように単に分解すると親指ボタンが落ちてしまうので、分解前にセロテープか何かでスティックに固定しておく方が良いでしょう。組立て時にラダーのスプリングを上からしっかり押しておかないとスティックがうまく合体しませんでした

EXTREME3Dを開けた位置

ベースの蓋を開けたところです。基板の右上コネクタはUSBケーブルが刺さっていました。USBケーブルは不要になります。他に3つコネクタがありますが、ケーブルを引っ張らないようにしてコネクタを外してください。コネクタが外れたらネジ2カ所を緩めて基板を外します。この基板も不要になりますが、USBケーブルと一緒に保管して元に戻せるようにしておいた方が良いでしょう。 なお、コネクタはJSTのPHコネクタでした。

EXTREME3Dの別基板

別のEXTREME3D_PROにはこういう基板が入っているものがありました。穴位置は変わっていませんでした。

自作基板と並べて

左側が私の作成した基板(Ver1)です。残念ながらジャンパーが発生しました。それとオリジナルにある中央のボス穴と角穴を作り忘れていました。本記事のVer2でこれを解消しました。

自作基板の組み込み

自作基板を組み込みました。トレーナコネクタ(S.BUS)は4pinでパターン設計しましたが、この基板では3ピンを半田付けしています。ディップスイッチはノーマル/リバース切替え用ですが、アクセスしづらいのでほぼノーマル固定です。Ver2基板では削除しました。

2代目基板の組み込み

Ver2基板に交換しました。位置決め穴は空いていますが既にボスをカットしているので意味はありません。Ver1にあったDIPスイッチの代わりに圧電ブザーを実装していますが、プログラムしていないのでこの動作は確認していません。

ユーチューブ動画

回路図

extreme回路図

EXTREME3D_PROのコネクション部分の解析した回路図です。ジョイスティックの中継基板やスイッチの中継基板の回路で、スイッチやボリューム(ポテンショメータ)の接続図です。
16個のスイッチは4x4のスイッチマトリクスになっていました。また4軸分のボリュームはコネクタに直結されていました。

ir794回路図

自作基板の回路図はこちらです。スイッチやボリュームの接続コネクタは左下部分に書いています。下側にある青文字はスイッチマトリクスを示しています。U3のインバータがS.BUS信号出力用です。CN9は4ピンで描いてありますが、1,2,3(GND,電源,S.BUS信号)の3ピンのみが必要です。CN1はインサーキットプログラム用です。CPUはRENESAS:R5F100GEAを使っています。

コネクタの配線

コネクタピン振り

Futaba送信機のトレーナコネクタはQQQ(サンキューテクノス株式会社)のE6-192J-100と思われます。その6ピンコネクタのピン番号は背面からみたときは写真のようになります。

クロスケーブルの解析結果は以下のとおりです。色は解析したケーブル(Futaba純正トレーナケーブル)の色です。

  • 1:NC
  • 2:白_GND
  • 3:赤_信号出力
  • 4:電源入力?(4-5ショートしてあるケーブルがあった)
  • 5:黒_電源出力(ほぼ電池電圧か? LCD6.7V表示時実測6.37V,DI電圧降下?)
  • 6:黄_信号入力
また、以下の条件があります。
  • トレーナーケーブルにおいて3,6番ピンはクロス接続
  • 先生は3番ピン出力--> 生徒6番ピン入力
  • 先生は6番ピン入力<-- 生徒3番ピン出力
  • トレーナCH数によって通信方式が異なる
    • 8ch: 従来の(JRも同じ)PPM方式 22mS周期
    • 12ch: 解析していない
    • 16ch: S.BUS UART,100kbps,8bit,1stop以上,even parity
  • 出力レベルはオシロスコープ観測で約3.3V
  • PUPしなくても信号は出てくるのでT.P.出力と思われる
  • トレーナ接続時の送信機設定

    T12K設定画面4/4

    送信機(Futaba T12K)は先生側とします。このとき"システムメニュー" _ "トレーナー"と進み、最初に4/4ページにおいて、"CHモード"を"16CH"に設定します。
    また、"ACT"は"INH"以外にし、"SW"を適当なスイッチに割当てます。"INH"はT12Kを生徒にするときの設定です。
    トレーナスイッチは写真では"SE"に割当てていますが、最近は"LD"に割当てています。

    T12K設定画面1/4

    次に、フライトスティックの必要なCHを(電波に乗せたいチャネルを)T12KのCHに割当てていきます。例えばT12KのCH1(AIL),CH2(ELV),CH3(THR),CH4(RUD)に生徒側のCH1,CH2,CH3,CH4をそれぞれ割当てます。写真ではエルロン、エレベータ、スロットル、ラダーのアナログ値をそれぞれCH1,CH2,CH3,CH4の順番に割当てています。

    下の表は、EXTREME3D_PROの出力するS.BUS信号が各アナログ値あるいはスイッチにどのような順に割当てられいるかを示しています。まず左側の縦ブロックはT12K送信機の"ファンクション"設定における各CHの割り当てです。フライトシミュレータ専用の割り当てでスイッチを順番に分りやすくしています。中央のブロックはこのT12Kの設定をスロットコントローラ経由でWindowsのプロパティをみたときにどのように割り振られているかを示します。右側のブロックはEXTREME3D_PROのS.BUS出力の各CH割り当てを示しています。コントローラに受信器とフライトスティックを交互に差し替えてもPC側のゲーム設定を変えなくても良いようにしています。なお、EXTREME3Dの4軸の可動範囲が受信器に比べて少なかったので補正をしています。

    extreme3dの割り当て表

    S.BUS信号

    Futaba送信機T12Kを生徒側としてトレーナー信号を観測すると、図のようなS.BUS信号が観測できました。

    S.BUS信号ストリーム

    S.BUS信号の理解は、このトレーナー信号の解析がとっかかりでした。当初複雑なプロトコルのイメージを持っていましたが、オシロスコープでS.BUS信号を見てみると割と簡単にUART信号(非同期シリアル信号)と解りました。後はフォーマットを探っていくだけです。
    実際のところ、100kbps,TTLレベル(3.3V,トーテムポール), 8bits,even,1stop以上で、LSBファーストでした。信号を観測しながらスティックを動かすと何となく見えてきます。RS232C通信と同じく、ライン上は反転信号なのでインバータ経由の信号を見ないと解析はできません。下の図はレシーバ(インバータ)出力をロジアナでサンプリングしたものです。(注:RS232C規格には3.3Vはなかったと思いますから正確にはUART信号と言うべきかも知れません。非同期通信です)

    S.BUS信号1パケット

    S.BUS信号は図のように25bytesで構成されています。先頭はヘッダーで0x0F固定値でした。このあと1chあたり11bitsのデータが8bit区切りで16ch分流れてきます。24バイト目はT12KにおけるDG2=1bit,DG1=0bitとして存在します。他のbitにも意味があるとは思われますが、bitの変化に私は出会っていません。最後の25バイト目は0x04の固定値でした。ただし、受信器出力のS.BUS信号はパケット毎に0x04,0x14,0x24,0x34と巡回していました。

    S.BUS信号1パケット

    この図はT12Kのトレーナ出力をヘッダー + 11bitsデータ + 16ch分 + 1byteデジタルデータ + 1byteターミネータとして、デコード装置を作ってTeraTermで表示したものです。T12Kなので12ch分のデータのあとの4ch分は0x400(中央値)として流れています。DG2=1となるようにスイッチを入れているので、24バイト目は0x02として見えています。
    結局、フライトスティックはこれと同じようにデータを構成してトレーナーケーブルに信号を流せばよいことが解ります。

    S.BUS信号1パケット

    参考までに、これは受信器のS.BUS信号を同様に表示したものです。25バイト目が巡回していることに注目してください。この意味は不明なのですが、テレメトリーでデータを送るときにslotの区別に使用しているかも知れません。
    受信器からはDG1,DG2と同期したCH13,CH14の信号が出ています。T12Kの説明書では14CH送信機となっていました。

    頒布

    BASEの商品

    何台か頒布可能です。興味のある方はBASEのSHOPから購入お願いします。なくなり次第終了します。ハーネス付属します。バルク扱いでお送りします。
    マニュアルは作成していませんのでこのページの記事を参照してください。

    URL、用語説明など

    S.BUS(エスバス)はFutaba社(双葉電子工業株式会社)がラジコンサーボ制御のために、シリアル通信のフォーマット(UART:調歩同期式通信、または非同期通信とも言う)を利用して、11bits/chのデータを工夫して送っている通信方式です。解析してみると特にスクランブルとかしていなくて、単純に11bitのデータを8bit区切りにデータを分割して送信するプロトコルでした。前項解説を参照してください。
    Futabaホームページはこちらです。

    T12KはFutaba社のラジコン送信機です。本記事中では単にT12Kと表記しています。

    免責

    本記事の使用、不使用に関わらず、本記事の情報に基づく事件、事故等の利用者の不利益に関し筆者は一切関知しません。全ては個人責任においてご利用ください。