セガサターンのコントローラー、通称サターンパッドをUSBゲームパッド化する基板を作ってみました。
この記事はサターンパッドUSB化基板の製作日記のようなものです。
完成品の紹介ページはこっちです。
geekyfab.com
以前にSFCコントローラーをUSBゲームパッド化する基板を作りましたが、今回はそれの亜種になります。
基本的な作りは同じで、基板の形状がサターンパッドになっている感じ。
設計データはgithubに公開してます。
github.com
基板データは公開準備できてないですが、そのうち公開します。
頒布もやる予定ですのでよろしくお願いします。
- こんな感じの仕様にします
- 回路図を書いてみます
- 基板図を書いてみます
- 基板を製造します
- 部品を実装します
- USBケーブルを作ってくっつけて完成
- プログラムを書く
- サターンパッドをUSBゲームパッド化してみる
- 遊んでみる
こんな感じの仕様にします
基本的にはSFCコントローラーUSBゲームパッド化基板の設計を踏襲しつつ、作っていく感じにします。
違うところといえば、基板形状とボタンくらいなので、そこをどうするか。
特にLRボタンをどうするかが一番の悩みどころ。
サターンパッドのLRボタンにはタクトスイッチが使われていますが、同じタクトスイッチは手に入らなさそうだったので、部品選定に悩みました。
あと、SFCコントローラーUSBゲームパッド化基板でも付けていた機能で、十字キーモード切替機能とボタン二重登録機能がありましたが、これも入れます。
回路図を書いてみます
こんな風になりました。
pdfはこちら。
usb-ss-gamepad/hardware/SS_Gamepad_revB at main · takusan213/usb-ss-gamepad · GitHub
メインマイコン
メインマイコンはPIC16F1459です。
秋月電子によるとEOLの予感があるマイコンです。困る。
LRボタンのタクトスイッチ
純正のサターンパッドのLRボタンのタクトスイッチはかなりやわらかめでストロークも長めのものが使われています。
同じ仕様のものは手に入らなさそうだったので、今回は近い仕様で、自分が気に入る押し心地のものを探しました。
で、最終的に選んだタクトスイッチがこちらです。
www.mouser.jp
個人的にはかなりいい感じの押し心地かなと思ってます。
純正のものとの比較表は以下の通りです。
作動力 | 移動量 | |
---|---|---|
本製品 | 1.6N | 0.5mm |
サターンパッド | 約1N(実測) | 約1mm(実測) |
仕事 = 力 × 距離 なんで、計算上でも近い押し心地とも言えなくもない…かも…?
ちなみに、純正のサターンパッドのタクトスイッチに付け替えることもできるようになってます。
基板図を書いてみます
これが結構大変な作業で、サターンパッドにピッタリ合うように基板外形や穴、ボタン用パッドを描く必要があります。
以前にSFCのやつ作ったときは基板を作っては微調整してまた作って…みたいなことをしてたんですが、今回は3Dプリンターを使うことでかなり高速に設計がすることができました。
具体的には
KiCADで基板外形を描く→dxfで出力→3DCADで3D化→3Dプリンターで出力
のサイクルを回すといった具合です。
これにより、一発でサターンパッドに合う基板を設計することができました。
最終の基板図は↓の感じです。
基板を製造します
基板のガーバーデータをメーカーに出図して基板を製造してもらいます。
今回はAll PCBに出しました。
発注時のオプションは基本的にはデフォルトですが、表面処理は金メッキを選択します。
これはボタン用パッドの酸化を防ぐためです。
そして、届いた基板がこちらです。
金メッキのロゴ付きでかっこいい。
部品を実装します
頒布のために大量に製造する必要があったので、クリームはんだを使って部品実装してます。
もちろん、手はんだでも十分実装可能です。私も試作一枚目は手はんだで実装しました。
部品実装時の写真は撮り忘れてたので、表面実装後の写真だけ…
USBケーブルを作ってくっつけて完成
きれいに作るためにコネクタにUSBケーブルを挿す設計にしたんで、これ用のUSBケーブルを作る必要があります。
あと、コントローラーの根元についてるケーブル保護用のアレも作ります。
コントローラーの根元についてるケーブル保護用のアレを作る
ストレインレリーフ(Strain Relief)っていうらしいです。
サターンパッドのケーブルにくっついてるストレインレリーフを実測して、3D CADデータに落とし込んでいきます。
で、こんな感じになりました。
ケーブルとの固定はホットメルトボンドを流し込んで行うのですが、流し込んだホットメルトボンドが抜けにくいように内側をギザギザにしています。
ギザギザがないと、ホットメルトボンドを流し込んでも結構簡単に抜けてしまいましたので、ちょっとした工夫です。
で、3Dプリンターで印刷している様子がこちら。
かなりいい感じの出来栄えかと思います。
まあ、きれいに出来上がるまでに死屍累々も生み出されたわけですが…
USBケーブルを作って引っ付ければ完成
あとは作ったストレインレリーフを使ってUSBケーブルを作り、基板と組み合わせてホットメルトボンドで固定すれば完成です。
プログラムを書く
ここらへんはSFCコントローラーUSBゲームパッド化基板とほぼおんなじなので、気になる方はそっちを読んでみてください。
ボタン切り替え機能はstart+L / start+R 長押しで切り替えられるように実装しています。
プログラムをpickit3などで書き込んだ後は基板上のパッド二か所(J101, J102)は半田でブリッジしておいてください。
これで基板がpickit書き込みモードから通常使用モードになります。
pickitでプログラムを書き込みたい場合は、逆にブリッジをなくします。
サターンパッドをUSBゲームパッド化してみる
では、基板にプログラムを書き込んだらサターンパッドに組み込んでUSB化してみましょう。
これを
こうして
こうじゃ
はいできあがり。
早速ゲームで遊んでみましょう。
遊んでみる
動作確認
遊んでみる前に、一応動作確認。
ボタンと十字キーが全部動きますね。
start+Lを3秒長押しで十字キーモード切り替え機能も動きます。
start+Rを3秒長押しでボタン二重割り当て機能も動きます。
ということで、動作確認OKです。
レトロフリークで遊んでみる
レトロフリークでマリオワールドをやってみました。
反応良好です。
Steamで遊んでみる
まずはコントローラーのキー割り当てをします。
十字キーモード切り替え機能とボタン二重割り当て機能を使いながらのキー割り当ては結構難しかったですが、なんとか登録OK。
とりあえず、cupheadやってみました。
いい感じ!
最後に
今回はサターンパッドをUSBゲームパッド化する基板を作ってみました。
意外と3Dプリンターが役に立ったプロジェクトでした。
出来上がりもかなり満足しています。
作った基板のガーバーデータとファームウェアのソースコードはGithub上で公開してるので、よろしければぜひ作ってみてください。
(基板データは公開準備中)
頒布も予定してます。
今回はこれで終わります。