Arduino Leonardで作るピンボールコントローラー

このページの内容は非常に古いので、新しく作り直したこちらのページを参照してください。

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

0.はじめに

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

1.必要な物を準備する

ケース

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

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

工具

部品

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

秋月電子通商

http://akizukidenshi.com/

商品名通販コード単価個数価格
Arduino LeonaroM-073842,910円12,910円
ブレッドボードEIC-301P-00313190円1190円
ジャンパーワイヤ EIC-J-LP-00288400円1400円
ジャンパーコード(オス-オス)セットC-05159220円1220円
3軸加速度センサKXR94-2050M-05153850円1850円
3mmプラネジ(7mm)+六角スペーサー(14mm)セットP-0186150円150円
タクトスイッチ(黒色)P-0364710円440円

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

M-07384 P-00313 P-00288 C-05159 M-05153 P-01861 P-03647

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

せんごくネット通販

http://www.sengoku.co.jp/

商品名管理コード単価個数価格
USB(2.0) microUSBケーブル 1.5mEEHD-4F4F145円1145円
セイミツ ゲームスイッチφ30 黄EEHD-47GG152円4608円
ファストン端子#110(メス)3D8B-SMH26円1060円

ファストン端子は8個あれば良いのですが、10個以上でないと注文出来ません。ファストン端子用電工ペンチを初めて使う方は、失敗を見越して20個くらい買っておいたほうが良いでしょう。

送料は432円です。代金引換の場合は324円が加算されます。

その他

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 Leonardo編

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

Arduinoに足を付ける

Arduino Leonardoに空いている4つの穴に、3mmプラネジ(7mm)+六角スペーサー(14mm)セットを使って足を付けます。

USBコネクタに近い穴はネジの頭が隣のコネクタにぶつかってしまうので、1本だけネジの頭をニッパーか爪切りで1/4くらい切り落としてください。

青い面からネジを入れて指で押さえ、裏からスペーサーで止めます。

Arduino Leonardoとブレッドボードを接続する

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

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

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

プログラムの作成と書き込みをするための開発環境をArduino公式サイトからダウンロードします。

DownloadのWindows Installerをクリックし、実行ファイルをダウンロードしてください。ダウンロードが終わったら、実行ファイルをダブルクリックしてインストールします。

インストールの詳しい手順はこちらを参考に行なってください。

Arduino Leonardoをパソコンに接続する

USBケーブルで、パソコンとArduino Leonardoを接続しましょう。まずArduino LeonardoにマイクロB端子を挿してから、パソコンのUSBコネクタに接続します。

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

正常に接続されると、スタートメニューの「デバイスとプリンター」にArduino Leonardoのアイコンがキーボードとして表示されます。

Arduino Leonardoのアイコンをダブルクリックしてプロパティを表示させ、「ハードウエア」タブをクリックして「デバイスの機能」欄の一番上にある「Arduino Leonardo 」の後ろの「COM●」(●は数字)をメモしてください。

プログラムを書き込む

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

Arduino開発環境のウィンドウが開いたら、メニューバーの「ツール」→「マイコンボード」をクリックし、「Arduino Leonardo」をクリックします。

同じようにメニューバーの「ツール」→「シリアルポート」をクリックし、先ほどメモした「COM●」をクリックします。

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

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

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

動作をチェックする

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

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

Pinball FX2で動作確認をする

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

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

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

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

タッパーに穴を開ける

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

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

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

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

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

4つの丸穴に、ゲームスイッチを差し込みます。スイッチ脇の爪が引っかかるまで押し込んでください。

ブレッドボードとArduino Leonardoを固定する

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

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

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

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

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

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

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

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

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

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

ハンダごてを使う

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

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

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

コードのファストン端子を、ゲームスイッチにそれぞれ取り付けます。

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

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

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

USBケーブルをつなぐ

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

完成

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

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

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

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

段ボール箱で作る

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

木箱で作る

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

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

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

金属のケースで作る

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

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

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

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

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

Arduino Leonardoの互換機を使う

ストロベリー・リナックスという会社から出ているダ・ヴィンチ32U with Arduino Bootloaderが、最も安いArduino Leonardoの互換機です。ストロベリー・リナックス直販で1,500円+消費税(送料380円+消費税・代引手数料285円+消費税)で購入できます。

ただし本家とは形状もピン配置もまったく違い、情報源も少ないので、説明書や回路図を読んで自分で移植できる方におすすめします。

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

秋月電子で売られているPIC18F14K50という、たったの220円で買えるマイコンは、Arduino Leonardoと同じようにUSBキーボードになります。動作させるのに必要な周辺部品を合わせても500円未満でArduino Leonardoと置き換えることができます。

ただし、プログラムの書き換えにはPIC専用の書き込み機(4,500円~)が必要ですし、回路設計もプログラムも開発環境も全てガッツリ勉強して考える必要があります。壁は高いですが、それなりのやりがいはあると思います。

部品の調達先を秋月電子だけにする

部品リストでせんごくネット通販で買うように書かれているものは、他のお店で買うこともできます。せんごくネットからの送料を節約したい方は、以下の手段を検討してみてください。

量産する

して。

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

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

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

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

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

今回使ったArduino Leonardoは、自由に使えるピンがまだたくさん余っています。筆者はそこにディップスイッチを繋いで、複数の設定を切り替えられるようにしています。

筆者のコントローラーの構成を知りたい方はこちらのファイルをダウンロードして下さい。

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

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

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

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

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

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

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

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

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

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

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

ex1.参考文献

ex2.更新履歴