見出し画像

「ADRADVA REVIVE USB ADVANCE」によるジョイスティックの自作

先日、マイクロソフトフライトシミュレータ向けに、自作のジョイスティックを製作しました。手のひらサイズにして、スロットル、ラダー、視点移動などにも対応した、全部入りのジョイスティックです。

自作には「ADRADVA REVIVE USB ADVANCE」という部品を使いましたが、作例の情報は不足気味でした。そこで、今回はPC用のジョイスティックを自作したい方に向け、詳細な情報をまとめました。
今回は少しだけ長文です。

フライトシミュレータ用に限らず(さらにはゲーム用に限らず)、専用コントローラが欲しい方は、参考にしてみてください。

Microsoft Flight Simulator © Microsoft Corporation. このページのスクリーンショットは、Microsoft の「ゲーム コンテンツ利用規約」に基づき、Microsoft Flight Simulator のアセットを使用して作成されたものであり、Microsoft との提携または Microsoft による承認を意味するものではありません。

USBジョイスティック製作用ボード

先日、Amazonを眺めていたら「ADRADVA REVIVE USB ADVANCE」という製品を見つけました。

10年ほど前からコンパクトなジョイスティックを探し続けていた私は、この部品に一瞬で心を奪われました。
というのも、様々なゲームを本格的に楽しむには、非常にかさばる入力装置が必要だからです。

フライトシミュレーターならサイドスティックにスロットルレバーにラダーペダル、レースゲームではハンドルにアクセル&ブレーキペダル、トレインシミュレータではマスコンとブレーキ……それぞれ非常に大きく、これらを購入することは選択肢に入りませんでした。

だからと言って、ジョイパッドでは操作性も雰囲気も今ひとつです。
そのため、10年ほど前からずっと、コンパクトなジョイスティックがないものかと探し続けていたのでした。

今回見つけた製品はジョイスティックではありませんでしたが、自作することで長年の課題を解決できました。

ADRADVA REVIVE USB ADVANCE

ADRADVA REVIVE USB ADVANCEは、15個のデジタル入力と、6軸のアナログ入力を持ったUSBジョイスティックを作れる電子部品です。
基板にボタンや可変抵抗器をハンダ付けすれば、USBでPCに接続できるジョイスティックができあがります。

USBとは「Universal Serial Bus」の略で、「あらゆるもの」が「シリアル」通信によってつながる「伝送路」という意味があります。
シリアル通信を実現するとなると、ボタンの状態をUSBの通信データに変換するためのハードウェアとソフトウェアが必要で、今回のような部品なしでは、とても素人が手を出せるような領域ではありませんでした。
Windows 95時代には部品を直接PCにつなげるコネクタが用意されていましたが、これはこれで専用コネクタが増えるし、アナログ回路の距離が長くなって精度が低下しそうだしと、いろいろ問題もありました。

これが製品の写真です。

画像2

D1~D9、10~15と書いている端子がデジタル入力、A1~A8と書いている端子がアナログ入力です。なお、アナログの2軸はマウスへのマッピング用なので、ジョイスティックとして使えるのは6軸です。
その他、グランド=GND(G0~G7)と3.3Vの電源供給(3V1~3V2)の端子があります。
これらの端子に部品をハンダ付けしてジョイスティックの形にします。

以下、デジタル入力とアナログ入力に分けて接続方法を説明します。

デジタル入力の接続

デジタル入力はボタンが押されているか、押されていないかの2つの状態で操作する方法です。

ファミコンのA/Bボタン、十字ボタンなどでもおなじみです。
十字ボタンはプッシュボタン4つを十字形に配置して、各方向に移動するか、しないかの2通りで入力する装置ですのでデジタル入力です。

デジタル入力は簡単に配線できます。
ボタンが押されたとき、各ボタンの端子D1~15がGND端子(G0~G7のどれか)に落ちるようにします。
ボタン4つを下の図のように配線すると、上下左右が押された状態が、それぞれD3、D2、D1、D4端子で検出されます。

画像20

端子とボタンの割り当ては、後から設定ツールで変更できます。
そのため、配線時は作りやすい順番で適当につなげればOKです。

アナログ入力の接続

アナログ入力は、押されている状態と押されていない状態の中間状態を入力できるものです。

Nintendo SwitchやPlayStationシリーズの「スティック」でおなじみです。

アナログ入力は、通常、可変抵抗器で実現します。
ジョイスティックには上下方向と左右方向の2軸に、それぞれ可変抵抗が入っています。また、今回スロットルレバーに使ったボリューム(オーディオ機器でおなじみのやつの中身)では、1軸の入力を扱います。

画像21

写真のように、それぞれの可変抵抗器には3つの端子があります。
外側の2つの端子に電源とGNDをつなぐと、中央の端子ではつまみの位置に応じて電圧が連続的に変化します。

画像21

そこで、X軸とY軸があるジョイスティックをつなぐ場合は、2組の可変抵抗器を次のように配線します。つまみの位置に応じた電圧を測るわけです。
今回の装置ではこの電圧を256段階の入力値に変換してゲームに入力できます。

画像21

なお、つまみの位置と入力値の方向は設定ツールで逆にできるため、中央の端子にA1~A6さえつなげれば、3.3VとGNDはどちら側につないでもOKです。

トリムの実現
航空機には、入力の中央位置を調整する「トリム」という装置があります。

たとえば、エンジンパワーを上げると機首が上がる傾向になるため、これを打ち消すためにスティック(エレベータ)を前に押しっぱなしにする必要があります。これでは疲れるため、上下方向の中央位置を変えるための「エレベータートリム」という装置が付いています。

同様に、左右の進行方向を調節する​ラダートリム、左右の翼の傾きを調節するエルロントリムもありますが、今回は最も多用するエレベータトリムだけを実現しました。

トリム機能を実現するには、ジョイスティックのY軸の可変抵抗器に、トリム用のボリュームをつなぎます。これにより、2つの合成抵抗の電圧を測ることで中心位置を変えられるようにします。
配線はこんな感じです。

画像21

ジョイスティックの設計

ここまでの知識があれば、あとはジョイスティックを物理的にどう作り上げるかの世界になります。

自分が好きな形にボタンやレバーを並べて設計します。
例えば、車用のハンドルをボリュームにするかスティックにするか、あるいはスライダを使うかなど、かなりの自由度があります。

今回実現した配置は、下の写真のような感じです。
左側にアナログスティック、右側にボタン、左右の側面にボリューム、上下の側面にプッシュボタン付きのアナログスティックがついています。

画像11

今回のケースのサイズは縦横高さで65×100×35mmしかなく、この中で部品同士が3次元で干渉しないように配置する必要があります。
右上にボタンがなかったり、向こう側の黒いスティックが手前側よりやや右にずれているのも、干渉を避けながら操作性を保持するための工夫です。

今回は、A320のコックピットをモチーフに、次のように機能をデザインしました。よく使うスイッチを実機風の並びで設置しました。

画像9

このゲームではボタンの組み合わせ入力をサポートしているため、右下のボタンをシフトキーとして、さらに機能を増やすことにしました。

画像11

部品の調達

今回は、とにかく小さなジョイスティックを作りたいと思っていました。
そのため、ボタンもケースもできるだけ小さなものを探しました。

当たり前ですが、ケースは部品が入る大きさが必要です。部品とケースの組み合わせを見つけるのは結構大変です。

画像1

以下は今回使用した部品と工具の一覧です。参考にどうぞ。

ジョイスティック
部品は基本的にAmazonで探しましたが、これだけは適当なものが見つからなかったため、マルツのオンラインショップで小型のものを購入しました。

ジョイスティックユニット ツマミ付【TX26PRR-B10K】

筐体
電子工作をする方にはおなじみ、タカチのプラスチックケースにしました。今回は最小サイズを目指しましたが、もう少し大きい方が加工が楽です。
実際、上下方向はどうがんばっても0.5mmほど足りなくなり、ボタンが動かなくなったのでケースの内側を削る事態に……。

ボタン
今回は12mmのプッシュボタンと、補助用の小型のボタンで構成しました。
デザイン重視でこの製品にしましたが、少々押し心地が悪いのでプラスチック製にした方が良いかもしれません。

ボリューム
エンジンのスロット操作やトリム用として、ケースの側面にオーディオ用のボリュームつまみを取り付けてスロットルとして利用することにしました。
ボリュームに使う可変抵抗器は、ギター用のものがAmazonで売っています。

可変抵抗器にはAタイプ、Bタイプ、Cタイプなるものがあるそうです。回した量によって直線的に抵抗値が変化するBタイプを選びました。抵抗値は10KΩ~500kΩぐらいで良いと思います(適当)。

ちなみに、オーディオ用の可変抵抗器では、ステレオの2チャンネルを同時に可変できるものがありますが、ゲーム用には1チャンネルで十分です。

可変抵抗器にはオーディオ用のつまみを付けました。
可変抵抗器の先端部分は6mmのため、「つまみ 6mm」で検索すれば取り付けられるつまみを検索できます。
今回は丸い物にしましたが、入力位置が分からなくなるため、ガスコンロのようなデザインにした方が良いかもしれません。

補助用スティック
ラダーや視点操作など、補助用にPlayStation2用のジョイスティックの補修部品を購入しました。
上下と左右の2軸アナログスティックと、スティック自体を押し込むことによるプッシュボタンスイッチがセットになった製品です。

画像19

端子にはGND、+5V、VRx、VRy、SWと書かれています。
GNDや電源周りの回路は内部で共有されているようです。今回の場合GNDにG0~G7のいずれかを、+5Vには3.3Vの電源を、VRxとVRyにX軸用とY軸用のアナログ端子を、SWにデジタル入力用の端子をつなぐことになります。
四隅にスペーサー用の穴が開いているため、これを使ってケースに固定します。

その他
これ以外にも、組み立てに必要な物として、配線、熱収縮チューブ、スペーサーなどがあります。

ケースの加工

デザインが決まったところでケースの加工に入ります。

今回購入したタカチのケースは、定番アイテムだけあって加工しやすいです。比較的柔らかく、粘りがあって割れにくいため、ドリルや彫刻刀で思い通りの加工ができました。

まずは、方眼紙にボタンやジョイスティックの取り付け穴を書いて、両面テープでケースに貼り付けます。

画像12

続いて、設計図ごとドリルで小さな穴を開けます。いきなり大きな穴を開けると加工誤差が大きくなるため、小さな穴から始めます。

画像13

穴あけの精度維持には手持ち式の電動ドリルより、卓上ボール盤のほうが有利です。
ただ、卓上ボール盤はジョイスティックの比ではないぐらい、かさばるので、私は分解してコンパクトに収納できる製品を使っています。

卓上ボール盤を使って正確な位置に小さな穴を開けたあと、電動ドリルで目的のサイズに広げます。

通常のドリルの刃で開けられる穴は通常6mmぐらいまでです。
ボタンを取り付けるには、ケースに12mmもの巨大な穴を開ける必要があるため、今回はホールカッターという工具を調達しました。

リョービのこのドリルは、回転速度を高速と低速の2段階に切り替えられる上、トリガーの引き具合で回転数を調整できるため、今回のようにおっかなびっくり穴を開ける場合に便利です。
こんな巨大な穴、素人が本当に開けられるのかと心配でしたが、材質との相性も良かったみたいで無事に精度良く加工できました。

画像14

続いて、手前と奥のPlayStation用ボタンの取り付け穴を開けます。こちらは、ドリルで端点の穴を開け、Pカッターでその間の溝を掘って四角い穴を開けた後、彫刻刀で目的の形に広げていきます。

画像15

Pカッターはプラスチックやアクリルの板を着るときに便利な道具です。ホームセンターのお兄さんに教えてもらいました。
普通のカッターのように切り裂くのではなく、溝を掘る感じで加工できるため、繰り返して使うことで厚い部材でも切ることができます。
私はホームセンターでの調達でしたが、類似と思われる商品はこちらです。

こんな感じで、無事に加工できました。

画像16

部品の取り付けと配線

ケースの加工が終わった後は、部品を取り付けてハンダ付けしていきます。

画像17

……と、こんなことすると火傷するので、必ずプラスチック部分を持ちましょう。あと、ハンダ付けするのは部品が乗っている部品面ではなく、裏側のハンダ面です。

こちら、大好きなTweet。ちなみに私は一味ではありません。

前述した配線の方法に従って、ボタンや可変抵抗器をつないでいきます。
部品が密集しているので、作業が進むにつれて、楽しいことになっていきます。

画像18

PlayStation2用のボタンはこんな感じに収まりました。
部品の凹凸に合わせてケースを加工した成果です。

画像21

設定ツール

本体ができあがったら、PCにつないで、設定ツールから動作テストと設定を行います。

設定ツールはこちらからダウンロードできます。

リンク先ページのファイル一覧からzipファイルを選んで、右上のDownloadボタンでダウンロードできます(GitHubの仕様ですね)。

ツールを起動すると、作成したジョイスティックのテストができます。
ボタンを押すと画面上のボタンが光ったり、アナログの入力値が表示されたりします。

画像20

画面の左側のグラフでは、アナログ入力の入力電圧と出力値の関係を設定できます。
デフォルトでは電圧が低いときに入力が小さく(スティックの左または上の位置)なりますが、入力値と出力値を逆転して、上下/左右方向を入れ替えることもできます。図は逆転した状態です。

設定値は記憶されるため、電源を切った後も再設定する必要はありません。

本体のボタンの割り当てが決まったら、ゲーム側で機能とボタンの割り当てを設定します。

画像22

実際に使った感想

というわけで、無事に完成したジョイスティックを使ってみました。
使ってみると、入力装置が違うだけでここまでゲームが楽しくなるものかと驚きます。

ジョイパッドでプロペラ機を操縦すると、進行方向に対する中立状態が保てないため通常の着陸ですら困難でしたが、今回作ったジョイスティックでは余裕になりました。

さらに、小型機での風速30ノットでの横風着陸、「世界一危険」とも言われる旧ルクラ空港への着陸、某所でのトランポリン着陸(!)などもできるようになりました。

画像21

今回のジョイスティックにかかった費用は部品代と特殊な工具で1万円ちょっと。
フライトスティックなど、全部そろえると3万円から5万円と言われているため、かなり安上がりですが、それ以上に場所を取らないコンパクトなジョイスティックが入手できたのは本当に嬉しいことでした。

今回のテーマは「コンパクト」でしたが、鉄オタの方なら本物の電車の中古部品を並べて運転台風のUSBコントローラーを作るなど、さまざまな夢が広がります。

興味がある方は、是非製作にチャレンジしてみてください。