Arduino Uno R4 Minimaで作るピンボールコントローラー

PC版Pinball FX用のピンボールコントローラーを作成する手順をまとめました。できるだけ安く。

0.はじめに

この文書には、Arduino Uno R4 Minimaを使用してSteam版Pinball FX用のピンボールコントローラーを作成する方法が書かれています。

1.必要な物を準備する

ケース

組み立てた電子部品を入れる箱を用意します。加工が容易で、失敗してもそれほど痛くない100円ショップのタッパーを使いたいと思います。

奥行き12~20センチ・幅20~30センチ・高さ8~12センチくらいの、底が平たいものを買ってきてください。家で余っているタッパーでも構いません。

工具

部品

部品は、秋葉原にある電子部品ショップ秋月電子通商で全て揃えることができます。お店で直接買ってもいいのですが、店頭に在庫が無いこともありますし、細かい部品が山のようにある中から探し出すのは大変なので、慣れていない方は通販で買うことをおすすめします。

商品名通販コード単価個数価格
Arduino Uno R4 Minima1181143,190円13,190円
ブレッドボードEIC-301100313300円1300円
ブレッドボード・ジャンパーワイヤ 14種類x5本102315450円1450円
ジャンパーコード(オス-オス)セット105159220円1220円
3軸加速度センサKXR94-2050105153850円1850円
タクトスイッチ(黒色)10364715円460円
USBケーブル USB2.0 TypeAオス⇔TypeCオス 1.5m113563120円1120円
ゲームスイッチ(白)107255150円4600円
ファストン端子(#187メス)(10個入)11351150円150円

上記の商品をまとめて買いたい時は、下のボックス内のテキストをコピーして一括購入ページを開き、テキストボックスに貼り付けてから「かごに入れる」ボタンを押せば一気に買い物かごに入れることができます。

118114 100313 102315 105159 105153 103647 4 113563 107255 4 113511

送料は500円です。代金引換の場合は300円加算されます。

その他

2.電子回路を組み立てる

無事に全ての道具と部品が揃ったでしょうか。次はいよいよ組み立てです。

ブレッドボード編

ブレッドボードは面倒なハンダ付け無しで電子回路が組み立てられる優れ物です。板に空いている小さな穴は、内部で下の図のようにつながっています。

(秋月電子通商EIC-301商品ページより引用)

つながっている穴に電線や部品を刺せば、内部で接続してくれるという仕組みです。

また、購入したブレッドボードをよく見ると、上の図と同じようにA~Xの英字と1~20の数字が書いてあるのが見えるかと思います。(見にくければ、文字部分を鉛筆で薄くこすってください。)

電線や部品を刺す時に、この英字と数字で刺す位置を指定するので、上下を間違えないように作業する場所に置いてください。

ボード内の配線を行う

ブレッドボードに、まずジャンパーワイヤーで配線を行います。ブレッドボードにワイヤーを刺し込む時、変な力を加えると線が曲がってしまって使い物にならなくなるので、ラジオペンチの先端を使ってワイヤーの先端を垂直に半刺しした後、上から指で押さえるとうまく刺さります。

以下のようにジャンパーワイヤーを刺し込んでください。

図内の番号刺す場所1刺す場所2ワイヤーの色
(1)E1Y1
(2)H2Y2
(3)H8Y8
(4)X9F9
(5)H9H11
(6)I9I12オレンジ
(7)J13Y13
(8)C14C16
(9)E16Y16
(10)H19Y19
(11)H23Y23

部品を取り付ける

線を刺し終わったら、次に加速度センサーとタクトスイッチを差し込みます。向きに注意してください。

加速度センサーは、1と書かれたピンがF11に、8と書かれたピンがE11に入るように刺し込みます。

タクトスイッチは、ブレッドボード中央の溝をまたぐように刺し込みます。

図内の番号左上右上左下右下
(1)E2E4F2F4
(2)E6E8F6F8
(3)E17E19F17F19
(4)E21E23F21F23

ボード外への配線を行う

最後に、10cmのジャンパーコードを刺し込みます。


図内の番号刺す場所ワイヤーの色
(1)X1
(2)A1
(3)A4
(4)A6オレンジ
(5)A12
(6)A13
(7)A17
(8)A21

Arduino UNO R4 Minima編

あとはArduino UNO R4 Minimaにプログラムを書き込んで、ブレッドボードに接続してやれば、とりあえずピンボールコントローラーとして使えるようになります。

Arduino UNO R4 Minimaとブレッドボードを接続する

ブレッドボードに刺した8本のジャンパーコードを、Arduino UNO R4 Minimaのコネクタに刺し込みます。

図内の番号ブレッドボードの場所Arduinoのコネクタワイヤーの色
(1)X15V
(2)A1GND
(3)A4A0
(4)A6A1オレンジ
(5)A12A2
(6)A13A3
(7)A17A4
(8)A21A5

開発環境のダウンロードとインストール

プログラムの作成と書き込みをするための開発環境をArduino公式サイトからダウンロードします。最新の2.x.x(Windows Win 10 and newer, 64 bits)をダウンロードしてください。

ダウンロードが終わったら、実行ファイルをダブルクリックしてインストールします。インストールの詳しい手順はこちらを参考に行なってください。

Arduino UNO R4 Minimaをパソコンに接続する

USBケーブルで、パソコンとArduino UNO R4 Minimaを接続しましょう。まずArduino UNO R4 MinimaにC端子を挿してから、パソコンのUSBコネクタにA端子を接続します。

ここで注意してほしいことが2点あります。

正常に接続されると、スタートメニューの「設定」→「デバイス」にArduino UNO R4 Minimaのアイコンが表示されます。

プログラムを書き込む

スタートメニューからArduinoをクリックしてArduino開発環境を起動します。

Arduino開発環境のウィンドウが開いたら、「ボードを選択」をクリックして、「Arduino UNO R4 Minima」を選択します。

こちらのプログラムファイルをダウンロードして下さい。(右クリックし、名前を付けて保存してください)

Arduino 開発環境のメニューバーの「ファイル」→「開く...」をクリックし、ダウンロードしたinoファイルを開いてください。その時フォルダを作るか聞かれるので、「はい」をクリックしてください。

左上の矢印マークをクリックすると、Arduino UNO R4 Minimaにプログラムが書き込まれます。

動作をチェックする

書き込みが終わったら、動作試験をしてみましょう。スタートメニュから「メモ帳」を開き、ブレッドボードを揺らしたりボタンを押してみてください。

うまく動いたでしょうか?もし反応がない場合は、配線をもう一度見直してください。

Pinball FXで動作確認をする

Pinball FXを起動し、オプションのキーボード設定で以下のように変更します。

好きな台をスタートさせ、実際に動作するか確認しましょう。

3.箱に入れて完成させる

最後に、作成した回路をタッパーに入れ、コントローラーとして完成させましょう。

タッパーに穴を開ける

※今回使用するゲームスイッチは非常に長いので、実際に穴を開ける前に、ゲームスイッチの軸部分がぶつからないかを確認してください。

タッパーを横向きに置き、手のひらをタッパーの角に当てて、中指の先が当たる場所にしるしを着けます。

そこを中心にして2.8cmの穴を開けた紙を置き、サインペンで縁をなぞって円を書きます。反対側にも同じようにして2.8cmの円を描きます。

タッパーの前面左右にも直径2.8cmの円を書きます。円は平らな場所に描いていてください。

円をカッターで切り、丸穴を4つ開けます。

タッパーの左奥に、カッターでUSBケーブルを通す穴を開けます。位置は低めに、サイズはUSBケーブルの細い方が通るくらいの大きさで開けてください。

4つの丸穴に、ゲームスイッチを差し込み、固定用リングを取り付けて締め付けます。

ゲームスイッチにマイクロスイッチを取り付けます。

ブレッドボードとArduino UNO R4 Minimaを固定する

ブレッドボードの裏面は両面テープになっているので、保護シートをはがしてタッパーの底に貼り付けます。なるべく左右中央の手前側につけてください。Arduino UNO R4 Minimaはブレッドボードの奥側に置き、トレイをタッパーに両面テープで固定してください。

ブレッドボードとスイッチをつなぐケーブルを作る

ジャンパーコードの20cmと25cmを4本ずつ、計8本を使ってブレッドボードとゲームスイッチを接続します。ジャンパーコードのブレッドボード側はそのままで良いのですが、スイッチ側はファストン端子を取り付ける必要があります。

ファストン端子圧着工具を使う

ファストン型端子圧着工具を使えば、ファストン端子をコードに簡単に接続できます。

1.25の所でファストン端子の細い部分をくわえます。

ジャンパーコードの先端を端子の広い方から差し込み、握りつぶします。

ファストン端子の開いた部分がハート型に曲がって、ジャンパーコードの先端部分を締め付けます。

図にすると、こんな感じです。

ジャンパーコードの黒いカバー部分も、5.5の所を使って同じくハート型に締め付けます。

ハンダごてを使う

ハンダごてを使う場合は、ジャンパーコードをファストン端子に直接ハンダ付けしてください。

ブレッドボードとスイッチを接続する

8本全てにファストン端子が付いたら、同じ長さのコードを2本ずつより合わせ、4組作ります。

コードのファストン端子を、ゲームスイッチにそれぞれ取り付けます。取り付けられる端子は3つありますが、下の写真のように中央の端子と折れ曲がった端子に線を挿してください。

ブレッドボード上のタクトスイッチを外し、下の図の通りにジャンパーコードを刺し込みます。

(線が多すぎてごちゃごちゃしてしまうので、下の図ではジャンパーコードは抜いてあります。)

図内の番号接続先スイッチコード長さコード1コード2
(1)左側面25cmF2E4
(2)前面左20cmE6F8
(3)前面右20cmE17F19
(4)右側面25cmE21F23

USBケーブルをつなぐ

タッパーの左奥にあけた穴からUSBケーブルを引き込み、Arduino UNO R4 Minimaに接続します。

完成

タッパーのふたを閉じて、完成です。お疲れ様でした。

4.もっと良くしたい人へ

タッパーとかw もっとマシなもんに入れろよwww

外観にこだわりたい気持ちは分かりますが、タッパーは値段も安く、加工しやすく、長持ちします。それ以外の素材でのケースの作成は割とめんどくさいです。予算と時間に合わせて、好きな素材でかっこいいケースを作ってください。おすすめはタカチ

段ボール箱で作る

安くて加工もしやすいですが、長持ちはしないでしょう。同居人にうっかり捨てられてしまうかもしれません。

木箱で作る

ホールソーさえ使える環境があれば、最も簡単に加工ができ、しっかりしたものが作れるでしょう。手汗がしみこむ材の場合は、ニスなどで表面加工したほうが良いでしょう。

プラスチックケースで作る

金工用ドリルとヤスリと根気があればOKです。一度作ってしまえば、一番長持ちするでしょう。

金属のケースで作る

金工用ドリルとヤスリとかなりの根気があれば、本物のピンボール台に一番近いものが作れるでしょう。ただし、材料・工具共にかなり高いです。

「できるだけ安く」とか言って、ぜんぜん安くないんだけど。

手間さえかければ、安くする方法はいくつかあります。手間をかける価値があるかどうかは、自分で判断してください。

ブレッドボードをやめて、線や部品を全てハンダ付けする

線も部品も全てハンダ付けできる人は、ユニバーサル基板という60円から買える基板を使いましょう。配線も汎用の電線を使えば、ブレッドボード用ジャンパーよりはるかに安く済みます。センサーのような高い部品は直接ハンダ付けせず、ピンソケットをハンダ付けして刺すようにしてください。線の取り回しに自信がない方は、ブレッドボード互換のユニバーサル基板を使うと良いでしょう。

Arduinoの互換機を使う

seeed studioという会社から出ている、850円で買えるSeeeduino XIAOなど、安いArduinoの互換機を使うという方法があります。ただし本家とは形状もピン配置もまったく違い、情報源も少ないので、説明書や回路図を読んで自分で移植できる方におすすめします。

Arduinoをやめて他のマイコンを使う

ラズベリーパイ財団から出ている、770円で買えるRaspberry Pi Picoなども、キーボードにすることができます。筆者も研究中です。

量産する

してよ。

これってPinball FXでしか使えないの?

ゲーム側でPinball FXと同じようにキー設定を変えれば、他のピンボールソフトで使うことも出来ます。しかし、ピンボールゲームは意外とキー設定の自由度が低いものが多く、対応できないこともあるでしょう。その時はハードやソフトを改造することで対応できます。

プログラム内のキー設定部分を書き換える

PinballController.inoファイルをArduino開発環境で開き、キー割り当ての部分を変更して、Arduino UNO R4 Minimaに再度書き込んでください。

複数のキー設定をスイッチなどで選択できるようにする

今回使ったArduino UNO R4 Minimaは、自由に使えるピンがまだたくさん余っています。そこにディップスイッチを繋いで、複数の設定を切り替えられるようにするプログラムを書くなど、改良の余地は多く残されています。

パソコンで設定アプリを作成し、USB経由で設定を書き換えられるようにする

Arduino UNO R4 Minimaは8,192バイトのEEPROM(簡単に読み書き可能なフラッシュメモリ)を搭載しています。パソコンとArduino UNO R4 Minimaをシリアル通信で結んで、設定をEEPROMに保存するようなプログラムを書けば、設定をArduino開発環境無しで自由に書き換えることができるようになります。

Arduinoではありませんが、ビットトレードワン社のREVIVE USBなどはこの方式をとっているので参考になるかと思います。

コンシューマ機で使いたいんだけど!

各機種のパッドやジョイスティックを改造すれば、コンシューマ機でも使えるでしょう。具体的にはパッドやジョイスティックのスイッチ部分にトランジスタを付け、Arduinoでトランジスタの通電状態を変化させてやればいいはずです。

ただし、パソコンと違ってマウスやキーボードが使えないため、ピンボールに特化したコントローラーだけではメニューでカーソルを上下左右に動かすなどの操作ができません。パッドやジョイスティック本来の機能を生かしたまま、ピンボールコントローラーを合体させる必要があります。

古いArduino(または互換機)を持ってるけど、使えないの?

このピンボールコントローラーは、Arduino UNO R4 MinimaをUSBキーボードとして利用することで実現されています。USBキーボードになる機能を持ったArduinoは、UNO R4・Leonardo・Esplora・Zero・Due・MKRシリーズ、およびその互換機のみです。残念ながらそれ以前のArduinoでは、USBキーボードになれません。

電子工作の腕に覚えがある方は、PS/2キーボードをArduinoで再現して、PS/2→USB変換機経由でパソコンに繋いでしまうというのも面白そうですね。

てか、なんでLeonardoからR4 Minimaに変えたのさ。

安いから。

それと、R4 Minimaがこれからのメインストリームになるにつれて、HID機能が売りだったLeonardoはレガシー化が進むと思われるので。

これ、作って売ってもいい?

元が取れるかどうかは別問題として、ライセンスに関する情報は以下の通りです。

ex1.参考文献

ex2.更新履歴