11月25日発売 書籍『Arduinoと3Dプリンタでロボットを作ろう』を出させて頂きました!

【自作基板 / 電子工作】GP2040-CEを使ったファミコンコントローラー型USBゲームパッド化基板が完成しました![パーツの実装・ファームウェアの書き込み]

前回書いたこちらの記事の追記となります。
発注していた基板と3DプリントケースがPCBWayから届いたので、パーツを実装しファームウェアを書き込み完成させました!

【自作基板 / 電子工作】GP2040-CEを使ったファミコンコントローラー型USBゲームパッド化基板の製作![PCBWayに基板と3Dプリントケースを発注]

GP2040-CEを使って、ファミコンコントローラーをUSBゲームパッド化するためのカスタム基板とケースを設計しました。

上記前回の記事では、GP2040を使ったファミコンコントローラー用の基板設計や、Type-C端子に対応させたカスタムケースの設計、そしてPCBWayに発注するところまでをご紹介しました。

今回はその続きとして、到着した基板のパーツ実装からファームウェアの書き込みや設定、そして動作確認から完成までの製作過程をまとめていきます。

GP2040−CEに対応したファミコンコントローラー型USBゲームパッド化基板の製作

本家ファミコンコントローラーの形状や外観はそのままに、USB Type-C端子やRGB LEDを追加するなど、今風にアレンジしたUSBゲームパッドを目指してカスタム基板とケースを設計しました。

PCBWayに発注していた基板と3Dプリントケースが到着したので、早速パーツを実装し完成させてみました。

PCBWayに発注していた基板と3Dプリントケースが到着

PCBWayに発注していた基板と透明レジンによる3Dプリントケースが到着しました!

3Dプリントパーツの製造、特に今回利用した透明レジン(UTR-8100)での製造は結構時間がかかるのですが(オプションにもよりますが通常7-10日前後)、発注から9日で手元に到着しました。

コントローラー用のカスタムケースは、UTR-8100をベースに色味を指定してカラー透明スケルトンケースとして仕上げてみました。

発注の際に非常に迷ったのですが、ファミコンカラーの赤をイメージし、そして基板背面に搭載したRGB LEDの透過性なども考え、色味はPANTONE red 032Cを指定して製造してもらいました。

PCBWayでの透明レジンによる染色は、これまで数回試しているのでその仕上がりに関しては分かってはいましたが・・・
非常に綺麗な仕上がりで届きました!

本家ファミコンカラーの赤から少し外して明るめの色味を指定したのですが、ファミコンらしさを残しつつ今風で透明感がある可愛くポップな仕上がりになったと思います。
RGB LEDの透過性も良いようです。

自作でこのレベルのケースが作れてしまうのは驚きで、今後の工作の幅も広がりそうです。

PCBWayの透明レジン『UTR-8100』はPANTONEカラーを指定して染色(Dyeing)が出来る!超綺麗なケースに仕上がりました

ケース、そして基板ともに、本家ファミコンコントローラーと互換性を持たせた形状・サイズで設計しましたが、実際に組み込んでみるとフィット感は問題なく完璧な仕上がりでした。

そして基板の方は今回メンブレンスイッチを使っていることから表面仕上にENIGを選択したのですが、PCBWayで製造されるレジストは比較的光沢感が強い方なのでENIGとの相性もいい感じです。

以前レジストの色味確認のためにギフトショップで入手したPCB定規が役立ちました。

PCBWayのギフトショップで注文していた基板定規(PCB Ruler)が届きました!基板発注の際にレジストの色味確認で使おうと考えています

ボタン操作も違和感なく、オリジナルと変わらない感触でしっかり反応してくれるので、見た目も中身も満足のいくゲームパッドになりました。

基板&3Dプリントケースともに予想以上に綺麗な仕上がりなので、これは早く完成させたい・・・

パーツの実装

それではパーツの実装です。
ステンシルを使いはんだペーストを塗布します。

本基板は、今回製作したカスタムケースを使ってType-C端子で使うことや、またUSBケーブルを接続し本家コントローラーのケースとの組み合わせでも使えるようにしています。

本家ケースを活かして使いたい場合は、Type-C端子は不要となりケースと干渉してしまうので未実装としておきます。
また、R3/R5の抵抗も必要無くなるので未実装にしておいても問題く、RGB LEDは見えなくなってしまうのでこれも未実装にしておいても問題ありません!

今回はType-C端子で使えるカスタムケースとの組み合わせで使う予定なので、パーツは全て実装しました。

綺麗にはんだペーストを塗布する事が出来ました。

このレベルで塗布出来ていれば、ピッチの狭いRP2040やType-C端子といったパーツでブリッジすることはあまりないと思いますが、ブリッジ修正しやすいようにある程度パーツのクリアランスを取っているので、はんだ作業に慣れた方なら問題ないと思います。

ステンシルを使ったはんだペーストの塗布ではいつもこれを使っています。

パーツの実装は、MHP50というミニリフロー装置を使いました。
PD電源が使えコンパクトで作業スペースの邪魔にもなりにくい、自作基板製作でいつも愛用している非常に便利なホットプレートです。

【電子工作 / PCB】ミニリフロー装置『Miniware MHP50』を使ってみる!加熱性能や安全設計はMHP30から全て引き継がれ使い勝手がさらに向上した便利なリフロー装置です

そして今回製作した基板はMHP50のホットプレートを超えるサイズ(約113mm×43mm)だったため、このような専用スタンドを使い作業を行いました。

MHP50を使ったリフローで、大きなサイズの基板にも対応することが出来るので便利です!

【電子工作 / PCB】Miniware MHP50で使えるスタンドの製作。大きな基板やいろんなリフロー方法に対応出来るので便利ですよ!

実装は綺麗にでき、動作確認も問題なく一発OKでした。

ファームウェアの書き込み

本ボードは、GP2040-CEファームウェアでの使用を前提としたハードウェア構成になっています。
Webブラウザ上で各種設定が行えるWeb Configurator経由でGPIOの割り当て等の設定が可能です。

GP2040-CEの詳細に関して詳しくはこちらの本家サイトをご覧下さい!

参考 Multi-Platform Gamepad Firmware for RP2040GP2040-CE

それではファームウェアの書き込みです。

Raspberry Pi Picoで動作する標準キーマップでGPIOを割り振っています。
書き込むファームウェアは、以下本家サイトから最新のものをダウンロードすることが出来ます。(Raspberry Pi用ファームウェアを選択)

参考 Downloads Microcontroller BoardsGP-2040-CE

今後ファームウェアのバージョンが上がった際の動作や操作方法等が変わってくる可能性もあるので、動作確認が出来ている現在(2025.07)の最新ファームウェア(GP2040-CE_0.7.11_Pico.uf2)を以下からダウンロード出来るようにもしておきます。

それではファームウェアを書き込みます。

本基板にUSBケーブルを挿し込みPCと接続します。
[BOOT]スイッチを押した状態で[RESET]スイッチを押すとDFUモードに入ります。

PCにUSBマスストレージとして認識されるので、あとは上記ダウンロードしたファームウェアをドラッグ&ドロップして書き込めば完了です。

MEMO
初めてPCと接続する場合は自動的にDFUモードで起動すると思います!

パーツの実装が問題なく、そしてファームウェアが正常に動作すれば、このように何かしらLEDが点灯するかと思います。
問題が無ければ、次にWeb Configuratorに接続し最低限の設定を行っていきます。

ちなみに、自作基板製作ではパーツ実装後の電源ラインの短絡チェックは最低限やっておかないと怖いのですが、テスター等を使い毎回確認するのは地味に手間がかかります。

以前製作した簡易短絡チェッカーとしても使える上記ボードが、最近非常に役立っています!
初めての導通時にVBUS・GNDラインの短絡チェックができるので、万が一のショートによるボードやパーツ破損を未然に防ぐことが出来る安心感があります!

【電子工作 / 自作基板】CH217Kを使ったUSB電源保護ボード『USB Power Toggle』の製作!

Web Configuratorを使って各種設定

ファームウェアの書き込みが完了したら、Web Configuratorを使って基本設定だけ行っておきます。

まだケースに組み込んでいない状態なのでスイッチを押しにくいと思いますが、ラバーを重ねて[START]スイッチを押せる状態にしておきます。(面倒であればケースに組み込んで下さい)


MEMO
本プロジェクトでは、本家ファミコンコントローラーに付属するスイッチやラバーパーツを流用する構成としています。

Web Configuratorを立ち上げる

Web Configuratorを立ち上げて各種設定を行っていきます。

Web Configuratorの立ち上げは、基板の[START]スイッチを押した状態でUSBケーブルを差し込み通電するか、または[START]スイッチを押した状態で[RESET]スイッチを押します

そしてWebブラウザーで以下アドレスにアクセスするとWeb Configuratorが立ち上がります。

アクセスするURL
http://192.168.7.1/

ここから最低限の設定だけ行っておきます。

入力モード & ホットキーの設定

まず[設定]の[入力モード設定]を[標準HID]に変更します。

次に[ホットキー設定]です。
ファミコンコントローラーなのでスイッチの数が[↑] [↓] [←] [→] [SELECT] [START] [B] [A]と8個しかないため、ホットキーを割り当ててLEDの点灯輝度やパターンを変更出来るようにしてみました。

設定方法はいろいろと出来ると思いますが、一例としてこんな感じに設定して私は使っています。

この設定では、以下のようにスイッチを複数同時押しすることにより、LEDの点灯を変更出来るようにしています。

キーの組み合わせ動作
[START] + [SELECT] + [↑]LEDの明るさを上げる
[START] + [SELECT] + [↓]LEDの明るさを上げる
[START] + [SELECT] + [→]次のエフェクト
[START] + [SELECT] + [←]前のエフェクト
[START] + [SELECT] + [B]静的色の前の色
[START] + [SELECT] + [A]静的色の次の色

GPIO端子割り当て設定

次に[構成設定]から[GPIO割り当て設定]へ進みます。

基本的に標準で割り当てられている設定からハードウェア構成は変えていないので変更する必要はありませんが、ファミコンで使う8キー以外(使用していないGPIO)を削除しておきました。

LED設定

最後にLEDの設定です。
[構成設定]から[LED設定]へ進みます。

データ端子を28にしておきます。(デフォルトで設定されてたかな?)
最大輝度やステップはお好みで!

[割当済みボタン]を全て無効にしておきます。

最後に、[ケースRGB LED]をこのように設定します。

MEMO
各項目の設定変更後は[保存]をクリックして下さい。
RP2040の読み取り専用メモリ内に設定内容が保存されます。

以上で設定完了です。
ブラウザを閉じ、再起動すればゲームパッドとして使えます。

カスタムケースで使用

今回PCBWayで製作した3Dプリント製のカスタムケースは、Type-C端子で使えるように設計しています。

ファミコンカラーを意識して染色したスケルトンケースは、ファミコンの雰囲気を残しながらも今風な感じが良いですね。

LEDの光を程よく透過して視覚的なアクセントを加えてくれ、とても可愛く仕上がりました!

そして復刻版のアルミプレートが販売されていたので、これを取り付けて完成させました。

Yahoo!オークションなどでも安価で販売されているようです。

動作確認ができ基板&3Dプリントケースともに問題がなかったので、基板データ(ガーバーファイル)とカスタムケースデータ(STL)をダウンロード出来るようにしておきます。
興味ある方は使ってみて下さい。

また、PCBWayへの発注方法などは前回の記事を参考にして下さい!

【自作基板 / 電子工作】GP2040-CEを使ったファミコンコントローラー型USBゲームパッド化基板の製作![PCBWayに基板と3Dプリントケースを発注]

本家ケースで使用

本家ファミコンコントローラーのケースにもそのまま組み込めるように基板サイズやネジ穴の位置なども最適化しています。

本家ケースのケーブル穴から4ピンUSBケーブルを引き出す構成で、外観はそのままに中身だけをアップデートしたUSBゲームパッドとして使うことも出来ます。

MEMO
本家ケースで使用する場合、本基板のType-C端子はケースと干渉するため未実装にしておいて下さい!
またR3/R5のチップ抵抗も不要となるので、未実装でも問題ありません。

お手持ちのType-Aケーブルをカットして接続するか、市販されているUSB4芯ケーブルを使います。

USBの4芯ケーブルは、赤(VBUS) / 黒(GND) / 緑(D+) / 白(D-)となっているのが一般的です。
対応するパッドにそれぞれをはんだ付けします。

MEMO
ファームウェアの書き込みやWeb Configuratorでの設定方法は同じです!

本家ケースを使うとLEDの点灯が見えなくなってしまうので、LEDを活かしたい場合は透明ケースで作ってみるのもいいかと思います。

以前こちらの記事で本家コントローラーの形状を正確にモデリングしたSTLファイルを公開しました。

【電子工作 / 3Dプリンタ】ファミコンコントローラーのCADモデル(STL)を公開しました!

このデータを使い、上記写真のような本家コントローラーと完全互換の透明ケースを作ったりするのも面白いと思います。

GPIO割り当てを変更しWeb Configuratorに入れなくなった場合の対処

以上でファミコンコントローラー型のUSBゲームパッドの完成です!

カスタムケースを使い今風にType-C端子&ケーブルで使うか、または本家ケースを活かして使うか・・・
お好みで選択することが出来ます。

あと製作前のテスト段階でハマった部分があったので書いておきます。

GP2040では各種設定をWeb Configurator経由で設定出来るので便利なのですが、先述の通りWeb Configuratorに入るには[START]ボタンを押した状態で通電(またはリセット)する必要があります。

そしてGPIOの割り当てを変更するなどして使う場合、例えば[START]ボタンのGPIO割り当てを変更してWeb Configuratorに入れない・・・といった場面に遭遇することがありました。

そのような場合は、一度RP2040を初期化(設定情報を消去)してから再度ファームウェアを書き込む必要があります!

RP2040の初期化 & 再度ファームウェアの書き込み
  1. flash_nuke.uf2を書き込み、設定情報を消去 する
  2. 新たにGP2040ファームウェアを書き込む

本ボードの[BOOT]スイッチを押した状態で[RESET]スイッチを押すとUSBマスストレージとしてPCに認識されるので、ドラッグ&ドロップで以下ファイル(flash_nuke.uf2)を書き込み、まずRP2040を初期化しておきます。

続いて同様の操作で上記GP2040ファームウェア(GP2040-CE_0.7.11_Pico.uf2)を書き込めば、設定情報がデフォルト状態に戻るのでWeb Configuratorに入ることが出来ます。

そして再度上記手順に従い設定を行って下さい!

使用パーツ一覧

今回使用したパーツの一覧です。

パーツ定数入手先
コンデンサ
(0603)
C1 10μF
C2/C3/C4/C5/C6/C7/C12/C14/C16/C17/C18/C19/C20/C21/C22 100nF
C13/C15 1μF
C9/C10 15pF
AliExpress
コンデンサ
(0805)
C8/C11 1μFAliExpress
ヒューズ
(1206)
F1 500mAAliExpress
USB端子J1 Type-C端子
※本家ケースで使用する場合不要
AliExpress / 秋月電子
RGB LEDLED1~LED6 WS2812B(5050)AliExpress / 秋月電子
MOSFETQ1 BSS138(SOT23)AliExpress / 秋月電子
抵抗
(0603)
R1/R4/R7/R8 10kΩ
R2 470Ω
R6/R9 1kΩ
R10/R11 27R
R3/R5 5.1kΩ
※本家ケースで使用する場合R3/R5不要
AliExpress
タクトスイッチSW9/SW10 3mm×4mm×2.5mm(4P SMD)AliExpress
ESDU1 USBLC6-2SC6(SOT23-6)AliExpress
LDO(3.3V)U2 XC6206-3.3V(SOT23-3)AliExpress
フラッシュU3 W25Q128JVPIQ()AliExpress
MCUU4 RP2040AliExpress / 秋月電子
クリスタル
(3225)
Y1 12MHzAliExpress / 秋月電子
MEMO
本家ケースとの組み合わせで使用する場合、Type-C端子(J1)はケースと干渉するので未実装にしておいて下さい!
また、抵抗R3/R5(5.1kΩ)も不要となるので未実装でも問題ありません。

【追記】スーファミコントローラー版も製作してみました!

GP2040-CEで動かす同構成で、スーファミコントローラー版も製作してみました。

こちらもカスタムケースを使いType-Cが使え、また本家コントローラーのケースもそのまま活かせる構成としています。

あわせて見て頂ければと思います。

【自作基板 / 電子工作】GP2040-CEを使ったスーファミコントローラーUSBゲームパッド化基板&カスタムケースの製作![設計 – PCBWayに発注]

最後に!

以前、ATmega32U4を使ってファミコンコントローラーをUSBゲームパッド化するカスタム基板を製作したことがありましたが、今回はあらためてGP2040-CEを使った構成で再度製作してみました。

【電子工作 / PCB】ファミコンのコントローラーをUSBゲームパッド化する基板を作ってみました!

当時はまだGP2040-CEの存在を知らず、普段使い慣れていたArduino環境での製作でしたが、今回はファームウェアとしての評価の高いGP2040にも触れてみたいという思いもあり、その活用も一つの目的として製作を進めていきました。

また、以前モデリングしていたファミコンコントローラーの正確なCADモデルを活かし、そして最近よく利用しているPCBWayの3Dプリントサービスと組み合わせることで、Type-C端子対応・RGB LED搭載といった構成でカスタムケースとの組み合わせでも使える、今風のファミコンコントローラー型ゲームパッドとして形にすることが出来た、個人的に非常に楽しいプロジェクトにもなりました。

【電子工作 / 3Dプリンタ】ファミコンコントローラーのCADモデル(STL)を公開しました!
PCBWayの透明レジン『UTR-8100』はPANTONEカラーを指定して染色(Dyeing)が出来る!超綺麗なケースに仕上がりました

PCBWayでの3Dプリントパーツ製造の精度や仕上がりありきでの製作開始だったという事もあるのですが、個人の製作物でここまで綺麗なケースが作れるとなると製作の幅も広がり、また今後作ってみたいものもいろいろと思い浮かびます・・・

何かの参考になれば・・・

コメントを残す