DIYスイッチボックス

私のアツいiRacing活動、アイカツ!始まります!(フフッヒ!)

 

今回はiRacing用にスイッチボックス(英語だとButton Boxと呼ばれています)を自作したのでご紹介したいと思います。

 

 

DIYスイッチボックス

発端はiRacingのVRS GT Enduranceに出場する予定ができたことです。GT3車両で長いレースを走るとタイヤや路面の状況がどんどん変わってきます。すると、ブレーキバイアスやトラクションコントロールを走りながら調整したい場面が出てきそうで、スイッチボックスの必要性を感じました。

Button Boxes – Apex Sim Racing

こんな感じの市販品もあるんですが、Arduinoとスイッチいくつかでそれほど難しくなく作れそうで、自分の環境に応じてカスタムもできるので自作することにしました。

完成品はこんな感じです。スイッチ6つ、エンコーダー6つのコンパクトな設計にしました。パネル面が斜めになっているケースを選んだので、マウスと並べて置いたときに操作がしやすくなっています。

f:id:da_f306:20200810133140j:plain f:id:da_f306:20200810134336j:plain

 操作している動画がこちらです。便利そうでしょ?

 

参考サイト

プログラムと配線はこちらのサイトとYoutubeの動画を参考にしました。

www.xsimulator.net

www.youtube.com

 

部品

ボード

www.amazon.co.jp

 Arduino Pro Micro、Leonardoはちょっと特殊なArduinoで、HIDデバイスとして振る舞うことができ、キーボードやゲームコントローラーとして利用できます。互換品も出回っており、正規品の1/3くらいの値段で全然普通に使えるのですが、たまに初期不良があるような話も聞きます。動かない時に原因切り分けができそうならおすすめです。

ケース

www.takachi-el.co.jp

こちらのTS-11という傾斜ケースを使いました。タカチのケースは種類が豊富なので、設置方法や必要なスイッチ数に応じて選べておすすめです。

スイッチ、エンコーダー

ここはもうお好みで。アルプスとかオムロンの部品は信頼性が高いですが、お値段も高いのでお財布と相談しながら。通販で買う場合はこのへんのサイトがいいかと思います。

マルツオンライン

RSコンポーネンツ

秋月電子通商

モノタロウなんかで扱っている車用のスイッチを使っても雰囲気が出るかもしれません。

参考サイトからのアレンジ

スイッチ、エンコーダーの数を変更することになると思うのですが、Arduimo Pro Microだと18ポート使えるので、その範囲内でのカスタムとなります。私の場合はスイッチ6個、エンコーダー6個にカスタムしました。

スイッチはマトリクスになっていて2x3=6個なので2+3=5ポート使います。エンコーダーは1個につき2ポート使うので、6個x2=12ポート使います。合わせて17ポートなので18ポートに収まりますね。

Arduinoのスケッチで変更する必要があるのは以下のあたりです

スイッチ数の定義

スイッチ、エンコーダーの数、スイッチマトリクスの行列数の定義を変更します。

#define NUMROTARIES 6
#define NUMBUTTONS 6
#define NUMROWS 2
#define NUMCOLS 3

スイッチ番号のアサイ

スイッチ番号をマトリクスに合わせて配列で記述します。サンプルだと1オリジンになってますが、0オリジンが正しいです。

byte buttons[NUMROWS][NUMCOLS] = {
{0,1,2},
{3,4,5},
};

スイッチのポートアサイ

スイッチマトリクスを配線したポート番号を記述します。

byte rowPins[NUMROWS] = {21,20};
byte colPins[NUMCOLS] = {19,18,17}; 

エンコーダー番号とポートアサイ

{port1,port2,半時計周りのSW番号,時計周りのSW番号}のように記述します。

rotariesdef rotaries[NUMROTARIES] {
{0,1,6,7,0},
{2,3,8,9,0},
{4,5,10,11,0},
{6,7,12,13,0},
{8,9,14,15,0},
{10,16,16,17,0},
};

合計スイッチ数の変更

デフォルトだとスイッチ数が34で固定になっているので、定数から計算されるようにしておきました。

Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID,
JOYSTICK_TYPE_JOYSTICK, 2*NUMROTARIES+NUMBUTTONS, 0,
false, false, false, false, false, false,
false, false, false, false, false);

 

という感じでケース加工、配線、プログラムで半日くらいの作業でした。レースシムは自分の環境に合わせて、道具をカスタムしたり工夫しながら走るのも楽しいと思います。

こちらの記事で誤りや不明点があればコメントいただければと思います。