🕹️

薄型レバーレスを自作した話

2023/10/01に公開

概要

スト6(PC版)での使用を想定していわゆるレバーレスコントローラーを自作してみた。
自分の使ってみたいボタン配置、スイッチを試すために基板、外装のアクリル板の設計を行い、組み上げた後実際にスト6で試運用している。
基板設計や3DCADはド素人だったけど割とどうにかなりました。

仕様、部品選定について

サイズ

・310mm × 210mm × 14mm
手のひらを天板に置けるサイズ感を意識して設定。
先人の作例を参考に基板をアクリル板で挟み込む構造で作成する。

制御基板、ファームウェア

・RP2040-Zero
PCのみの使用想定かつ標準でUSB Type-C接続できるためこのボードを選定。
PS5でも使うならBrook UFBにする必要があるけど高いので。
・GP2040-CE
ラズパイ利用した自作アケコンでは定番のオープンソースのファームウェア。
https://gp2040-ce.info/
Downloadのページに各ボード別のがあるのでダウンロードしておく

スイッチ

・Cherry MX Lowprofile Speed軸(銀軸)
ロープロでアクチュエーションポイントが浅く、
ボタンキャップもpunkworkshopのやつが流用できそうだったのでこれを使ってみる。

基板設計

スイッチを配置して制御基板とつなぐプリント基板を設計する。
基板設計CADはKiCadが定番っぽいし使い方もググると結構出てくるのでこれを使用。
この辺のKiCad記事みつつわからないことは都度調べていった。
https://zenn.dev/suzuky/articles/e2a745c5aeb2fc
https://spiceman.jp/kicad-pcbnew-layout/

回路設計

ここでRP2040-Zeroと各スイッチを接続した回路図を書く。
RP2040-ZeroのシンボルデータはKiCad標準にはないので探すなり作るなりしてライブラリに追加が必要。スイッチのシンボルは標準のSW_Pushを利用する。
フットプリントについてもRP2040-ZeroとCherry MX Lowprofileそれぞれ追加が必要なので寸法データを探して作成。各シンボルデータにフットプリントを紐付けて基板設計に反映できるようにしておく。
選定したキースイッチによってフットプリントは異なるので注意する(メーカによって違うし、Cherryでもノーマルとロープロで違う)
作成、使用したRP2040-Zeroのシンボルとフットプリント、Cherry MX Lowprofileのフットプリントは下記に保存した。スイッチのフットプリントはφ24とφ30でシルク書いたものも個別に作成した。
https://github.com/kohinata0825/symbol-and-footprint

GP2040-CEのページにピン配置があるので、それを参考に各ピンとスイッチ、グランドを繋いだ。ここで一応各シンボルの値とかにどのボタンか書いておくのが良いと思う。
あと基板設計時の穴あけ用にMountingHoleもこの時点でシンボルを適当な所に置いた。

作成した回路図

基板設計

ツール→回路図から基板を更新をすると紐付けたフットプリントが一括生成されるので、これを自分のやりたいボタン配置に置いていく。ここでサイズとか配置を決める。
流れとしてはエッジカットで外形を設定し、固定用穴配置、ボタン配置、各ボタンとRP2040-Zero間の配線を作るといった感じ。
RP2040-Zeroは裏面にも部品が実装されているので、表面実装する場合はその部分に切り欠きを作る必要がある。
ついでにシルクでボタン名称も描いて配置。
表示→3Dビューアーで3D見れるのでそれで完成イメージ確認したりもした。


作成した基板図

3Dビューアー

基板発注

KiCadでファイル→プロットからプロット、ドリルファイルを生成をそれぞれやるとこんな感じで12個のファイルができるのでこれを1つのフォルダにまとめてzipにしておく。

生成されたガーバーデータ

これを基板業者に渡す。
今回はJLCPCBに発注した。電子工作界隈の利用者も結構多い定番業者らしい。
右上のOrderNowから先ほど作ったzipファイルをアップロードしてあとはDimensionsのサイズを設計寸法に合わせて入力し、PCB Colorで好みの基板の色を指定するくらいであとはデフォルト。最低発注数量は5枚なのでそこはしょうがない。

JLCPCB発注画面

発送は安かったOCS Expressを選択したが、発注して6日で到着。

届いた基板

はんだ付け

届いた基板にあらかじめGP2040-CEを書き込んでおいたRP2040-Zeroをはんだ付けし、各スイッチも付けていく。
書き込む方法としてはRP2040-ZeroのBOOTボタン押しながらUSBケーブル接続するか、接続後にBOOTボタンを押しながらRESETボタンを押すとドライブが出てくるので、GP2040-CEのuf2ファイルをドライブ直下にドラッグアンドドロップするだけ。あとはUSBで普通に繋ぎ直せばコントローラーとして認識してくれる。
一応はんだ付けする前にRP2040-Zeroの各ピンとグランドを適当な導線でつないで動作確認、RP2040-Zeroをはんだ付けしてスイッチを付ける前に各スイッチのスルーホールを繋いで動作確認、すべてはんだ付け後にボタンの動作確認といったことをした。

RP2040-Zeroとスイッチをはんだ付けしたもの

外装設計

基板部分はここまでで完成。あとは外装のアクリル板を設計する。
完成品は下記の通り基板+アクリル板4枚という構造になる。縦横の寸法はすべて同じ。
・アクリル1(2mm厚):各ボタンと固定用の穴をあけた天板
・アクリル2(5mm厚):アクリル1に加えてRP2040-Zero部分に切り欠きを作ったもの
・基板(1.6mm厚):前述までに作成した基板
・アクリル3(2mm厚):アクリル1と同じ(スイッチをはんだ付けした足が出ている部分用)
・アクリル4(2mm厚):固定用の穴のみの底面

アクリル板設計

前述アクリルをCADで設計する。CADソフトも色々あるけど今回はfusion360の非商用目的向けを利用する。
下記記事とか参考に、上記のアクリル板の形状のスケッチを作る。
https://www.pc-koubou.jp/magazine/66063


アクリル1,3

アクリル2

アクリル4

アクリル板発注

前項で作成した各スケッチを右クリックしてDXFファイルを保存する。
このファイルをもとに業者へ発注。
業者はElecrowにした。これも最低発注数量が5枚だけど、国内の業者で各1枚発注するよりも安く済むっぽい。
トップページのMore Services→Acrylic Laser Cuttingから発注できる。
DXFファイルをzipにしてアップロードするにあたり

To avoid errors, the preferred design file is DXF format. please also include the exported PDF file in the design file.

とあるがtxtファイルに下記のように外形寸法書いて一緒にzipにしてアップする形でも特に問題なかった。

width 310mm
hight 210mm

あとは画面でDimensionsに外形寸法、Acrylic Thicknessに厚み、Acrylic Colorで好みの色を指定して注文する。

Elecrow発注画面
発送方法は一番安いEconomy Expressを選択して、10日で到着。
Elecrowからの発送メールに追跡番号と17trackって複数運送業者の追跡ができるサイト使ってくれとの旨があったけど実際の運送業者が書いてなくて、このサイトの業者自動選択も上手く働かずで試行錯誤したところ、業者でSGHグローバル選べば追跡できた。


届いたアクリル板
保護シートがかなりがっちりくっついててはがすのは結構苦労した。ガムテープ付けて引っ張る感じではがした。

組み上げ

あとは固定用の組ネジとスイッチにつけるボタンキャップがあれば必要部品は揃うので組み立てる。
組ネジは5x12mmのもの、START,SELECTにはキーボード用のキャップ、操作ボタンはPunkWorkshopのφ24、φ30ボタンキャップを購入した。
組み立ては基板とアクリル板重ねて組ネジ通して締めるだけ。あとはボタンキャップはめて完成。


完成したレバーレス写真

合計費用

部品 購入先 価格
PCB基板*5枚(送料込) JLCPCB ¥6344
アクリル板 3種*5枚(送料込) Elecrow ¥8642
RP2040-Zero TALPKEYBOARD ¥700
キーキャップ(2個セット)*2 TALPKEYBOARD ¥220
CHERRY MX Low Profile Speed Silver(10個セット)*2 PCワンズ ¥2400
組ネジ5x12mm(45組セット) Amazon ¥1466
Punkworkshopボタンキャップ*15 コミックノイズ ¥1800
合計 ¥21572

工具とかはんだとかは元から所持していたものを使用したので含まず。
ちょっと大きめサイズで作っているのとネジとか余計な数量買っているので設計とか購入先によってもうちょい費用は抑えられると思う。大きな割合を占める基板とかアクリル板の価格はサイズ依存だし。

総括

手探りで作ってみたものの結構楽しかったし、備忘録兼ねて作る流れを書いてみた。自分で設計したコントローラーで遊びつつ改善点考えるのも今後の楽しみとしてあるので、やって良かったなと思う。
現状気になる所としては

  • 底面に滑り止めがない。
    これはホームセンターで適当に探してきて付けるつもり
  • スイッチを直接はんだ付けしているため、スイッチ交換したくなったとき面倒。
    Mill-Maxのソケットとか使うのも考えたけどコスト掛けてまでやるかなあと思って見送った
  • ボタンキャップのサイズに対してアクリル板に開けた穴径がちょっと大きい。
    利用するボタンキャップの実サイズ計測せずにやっちゃったので、ボタンキャップに合わせるかボタンキャップ自体も自作するかを考えた方が見た目綺麗だったかも。使用感は特に問題ないが

といったところ。とはいえ初めて作ったにしてはまあまあいいんじゃないかと思ってるのでよしとします。

Discussion