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

【自作基板 / 電子工作】PicopadをベースにRP2350で動かす自作ゲームエミュレータ『PicoPlay2350』の製作① [設計 〜 PCBWayに発注]

後編記事を追記しました。

【自作基板 / 電子工作】PicopadをベースにRP2350で動かす自作ゲームエミュレータ『PicoPlay2350』の製作② [パーツの実装 〜 完成]

以前、ATtiny85やATmega32U4といったAVRマイコンを使ってミニゲームがプレイできる「Tinyjoypad」や「Arduboy」をベースにして自作ゲーム機を製作したことがあります。

これらはブレッドボード上でも簡単に組むことができ、AVRマイコンの基礎を学びながら簡単なゲーム開発まで楽しめる、とても魅力的なオープンソースプロジェクトでした!

【電子工作】ミニAVRマイコンATtiny85で動かすミニゲーム機『Tiny Joypad』互換ボードを作ってみました!【JLCPCB】
【電子工作 / PCB】100均で売ってそうなミニゲーム機を自作しよう!ATtiny85で動かすミニゲーム機TinyConsoleの製作その①[ケース・基板設計]
【電子工作】Arduino Pro Microで動かすArduboy互換機を作ってみる!

そして最近Tinyjoypadの公式ページに、RP2040(またはRP2350)を使った『Picopad』という新たなプロジェクトが公開されました。

こちらも同様にブレッドボードで手軽に組むことができ、しかもファミコンやゲームボーイなどのゲームエミュレータを動作させることも出来る構成となっています。

今回そのPicopadをベースに、カスタムしたミニゲーム機『PicoPlay2350』を製作してみることにしました。

ディスプレイや操作ボタンをコンパクトにまとめ、昔懐かしいゲームをいつでも楽しめるエミュレータ機として自分なりに最適な形で仕上げてみました。

以前はこうしたゲーム機を自作しようと思っても、自宅の3Dプリンタでケースを作るとなると形状の制約やサポート材の問題から綺麗なものを作ることが困難となり断念することが多かったのですが・・・

しかし最近よく利用しているPCBWayの3Dプリントサービスを使えば、イメージ通りの形状や質感、またカラーリングのケースを高精度で製造することが出来るので、今回の製作にも大いに活用させて頂きました。

【PCBWay】PCBWayの3Dプリントサービスを試してみました![スプレー塗装・透明レジンの染色]

特に透明のカラースケルトンケースとPicopadをベースにした自作カスタム基板を組み合わせることで、今風の形状で昔懐かしのファミコンなどのゲームがプレイ出来る、見た目にも楽しいミニゲーム機として完成させることができました。

このクオリティのものが個人で自作出来てしまうというのは、正直自分でも驚きです!

RP2350で動かす自作ゲームエミュレータ『PicoPlay2350』の製作!

Picopadとは?

Picopadは、Raspberry Pi Pico(RP2040)またはRaspberry Pi Pico2(RP2350)で動作する、Miroslav Nemecek氏によるPicoLibSDKで動作するオープンソースのプロジェクトです。

参考 PicoLibSDKPicopad

ゲームエミュレータというよりは、ファミコン(NES)やゲームボーイ(GB)といったレトロゲームのエミュレータも動かせ、動画や音楽の再生などにも対応した多機能なプラットフォームといった感じのプロジェクトとなります。

これまで多種バージョンのものが公開されているようですが、手持ちのRaspberry Pi Pico(またはPico2)を使いブレッドボード上で組んで比較的簡単に動作させることが出来るので、興味ある方は実際に組んで動かしてみると面白いと思います。

提供されているPicoLibSDKは優秀で、例えばPicopad用にエミュレートされたテスト済みのNES(ファミコン)やGB(ゲームボーイおよびカラー)用データを使えば、500種類以上の懐かしいゲームをプレイすることが出来ます。

以前ESP32を使いNESエミュレータ(NESCAT)を動かしたことがあるのですが、コンパイルを通すのにかなりの時間を費やしたという経験があります。

【電子工作】ESP32でファミコンエミュレータを動かすオープンソースプロジェクトに挑戦![NESCAT]

Picopadではテスト済みのゲームデータ(uf2ファイル)をSDカードに入れるだけなので非常に簡単です!

しかしブレッドボードでの操作では、どうしてもゲームをプレイするのはボタン配置等の問題からなかなか難しく・・・

そして最近、RP2350(Raspberry Pi Pico2で使われているマイコンチップです)を使ったテストボードを製作していたことから、MCUにRP2350を使ったPicopadベースの基板およびケースを設計し、自作ミニゲーム機(PicoPlay2350)として製作してみることにしました。

【自作基板 / 電子工作】RP2350を使った初めての基板設計。最小構成で組むRP2350A/RP2354Aブレークアウトボードの製作![その① 基板設計・発注]

ケースの設計

今回製作したPicoPlay2350は、Picopadをベースにした自作ミニゲーム機として主にNESやゲームボーイなどのクラシックゲームをエミュレートして楽しむことを想定して設計しています。

操作性を重視しつつ今風なデザインに仕上げたいと考え、スイッチ部分の配置やパーツはスーパーファミコンのコントローラーで使用されているパーツを一部流用することにしました。

このSFC風のボタンレイアウトは、手に馴染みやすくレトロゲームをプレイする際に相性が良い構成だと思います。

そして話が前後してしまいますが、現在製作しているカスタムしたスーファミコントローラーのCADモデルも並行して製作していた最中だったということもあり、既にスイッチ操作部分の主要な寸法や取り付け位置などの確認が出来ていたので、今回それを活かすことで操作感は非常にいいものが出来たと思います。

また、ディスプレイと基板との位置関係や、スイッチ周りの高さ調整、USBポートやSDカード・電源ボタンの配置なども、モックを作成し実際のプレイ感を意識して設計していきました。

限られたサイズの中で、どれだけ“遊べる”配置に出来るかをモックを作り何度も検証行い形にしていきました。

 

Threadsで見る

 

このような曲面を多用し内部形状の複雑さから自宅の3Dプリンタで製作する場合、サポート等の問題でどうしても綺麗に出力できない形状のものを設計することはこれまであまりなかったのですが、外注の3Dプリントサービスを利用すれば問題なく綺麗に製造出来ることが最近分かってきたので、自分のイメージする作りたい形状で設計を進めていきました。

今回はファミコンといったレトロゲームをプレイ出来る今風なゲーム機といったイメージで進めていいたので、PCBWayの3Dプリントサービスを利用することを前提で設計しています。

PCBWayでは、PANTONEカラーを指定して透明レジンに染色することが出来るので、イメージしているCADのレンダリングに近いカラー透明ケースを作ることが出来ます。

結果、非常に綺麗な仕上がりになりました!

 

Threadsで見る

 

3D CAD上でイメージするケース形状、そしてケース内部で基板と干渉する部分の確認などが出来たので、これをKiCadの方に持っていき基板の設計に移りました。

基板設計

今回製作した『PicoPlay2350』は、コアにRP2350を採用しPicopadをベースにPicoLibSDKで動作するように設計したカスタムボードです。

コンパクトなケース内にすっきりと収まるようレイアウトを考え、リポバッテリーでの動作やバッテリー充電回路・保護などを追加しています。

ブレッドボードのテストでは2インチのTFTディスプレイを使っていましたが、画面が少し小さすぎゲームをプレイしにくかったことから、CAD設計時に2.4インチサイズのものに変更しました。

このサイズならミニゲーム機としてプレイしやすくなったと思います。

ケースとの干渉部分や配置変更が出来ないパーツの定位置など、3D CAD上であらかじめ確認しておいたデータをKiCad側に取り込んで進めていきました。

基板レイアウトはスッキリとまとまりました。

持ちやすいケースの厚みやPCBとの干渉を考慮して、1cm厚程度までのリポバッテリーが使えるようにケースを設計しています。

また基板にバッテリースペースも比較的広く取ることが出来ました。
厚さ1cmまでのもので、このスペースに収まるものでは1000mAh前後のリポバッテリーを内蔵することが出来ると思います。

800mAhのバッテリーで現在使っていますが、この容量のバッテリーなら連続駆動時間は実測で5時間は稼働することが出来ました。

しかし待機中(電源オフの状態)での電圧低下が、ブレッドボードでのテストの時よりかなり大きくなっているようです。

1週間程度でリポバッテリーのカットオフ電圧付近まで下がってしまうようなので、どこか漏れ電流が発生していると思われるのですが・・・・
この部分だけ原因が分かっていません!(後編記事で詳しく書こうと思います)

こちらが今回製作したボードの回路構成です。

PCBWayに基板・3Dプリントケースを発注

先述のように待機中のバッテリー電圧の低下が大きいという点が気になるのですが、今回発注したものはV1.0バージョンとして製作しています。

今後、原因が分かれば修正したものを再度製作するか?または全く別バージョンとして仕上げるかは分かりませんが、現状のV1.0バージョンの基板データ(ガーバー)とケースデータ(STL)をダウンロード出来るようにしておきます。

何かの参考になればと思います。(原因が分かる方がいらしたらコメント等頂けるとありがたいです)

PCBWayでの発注方法も見ておきます。

基板の発注

PCBWayでの基板発注は、[概算の見積価格の確認(仮発注)] → [データチェック(レビュー)を受け最終価格が決定] という流れで進めていきます。

発注項目の選択は特記すべきところはなく、ほぼデフォルトで選択されている項目を選んでおけば問題ありまが、今回の発注では以下2ヶ所オプションを付けて発注しました。(レジストカラーはお好みで選択して下さい!)

1つ目は、基板製造時に入る製造番号を削除するオプションです。

大きなパーツの直下に隠してしまってもよかったのですが、透明ケースで使うことを想定して[Remove product No.]に[Yes(extra+$1.5)]を選択して完全に削除するオプションを付けました。(1.5ドルのオプション料金がかかります)

2つ目は、表面処理オプションとして[無電解金フラッシュ(ENIG)]オプションを選択しました。

これは通常の有鉛はんだレベラー[HASL]よりも加工料金がかかってしまいますが、本基板で使っているメンブレンスイッチ部分に有効となります。

ENIGは通常のHASLと比べて表面がフラットかつ耐久性に優れています。
今回使用しているメンブレンスイッチといったこのようにパッドがむき出しになったスイッチの接触面と相性が良いとされています。

特に今回のような物理的な押下を伴うパッド構造では、摩耗に強く酸化しにくいENIGが適しています。

そしてパーツの実装はリフローで行うことを想定していたので、メタルマスク(ステンシル)も一緒に発注しました。

手実装となるので、[枠なしメタルマスク]を選択、そして実装面は[裏面のみ]の選択となります。

以上、オプションおよびメタルマスクを選択し基板を発注しました。

ここからガーバーファイルをアップロードしてデータのレビューが行われ、最終価格が決定された後に本発注への流れとなります。

PCBWayでの基本的な基板発注方法は、こちらの記事で詳しくまとめています。
あわせて見て頂ければと思います。

【PCBWay】初めてPCBWayで基板を発注してみました。ユーザー登録から基板発注までの手順をご紹介!

3Dプリントケースの発注

次に3Dプリントケースの発注です。

PCBWayでは、基板製造と3Dプリントパーツの製造といった他のサービスをまとめて発注することが出来ます。
送料も1回分で済むのでお得です!

ケースデータは、[Top_Case.stl] [Bottom_Case.stl] [Display_Parts.stl]の3パーツ構成となっています。

各データ(STL)をPCBWayのサイトにドラッグ&ドロップしてアップロードします。

PCBWayの3Dプリントサービスでは選択出来るマテリアル(材料)やカラーバリエーションが非常に豊富なので迷いますが・・・
CADの設計段階からイメージしていたカラー透明ケースとして今回発注しました。

透明レジン[UTR-8100(transparent)]をベースにして、表面処理オプション(Surface finish)から[染色(Dyeing)]を選択しカラーを指定して、透明カラーケースとして仕上げます。

色味の選択は標準で用意されているベーシックカラー以外に、PANTONEカラーコードから指定することも出来ます。

そのため選択出来る色数は非常に膨大になるため迷いますが、CAD上で色味を確認していれば、そのレンダリングイメージに近い色味のものを製造することが出来ます。

MEMO
PANTONEカラーを指定する場合のオプション料金は、ベーシックカラー(Common Colors)から選択する場合と同価格です!

発注の際に最終的なケースカラーをどうするか、今回も非常に迷ったのですが・・・
エメラルドグリーンを意識して、PANTONE 360Cを指定して発注しました。

PCBWayのカラープレート参考ページでは、この色味のものになります。

トップケースとボトムケースはUTR-8100をベースに上記色指定を行いカラー透明ケースとし、ディスプレイ部分のベゼルパーツはUTR Imagine Blackを選択して発注しました。

以上、基板と3Dプリントケースをカートに入れ発注を行いレビューを受けます。
レビュー後、最終価格が決定されるので問題がなければ決済へと進み製造が開始されます。

PCBWayでの3Dプリントパーツの発注方法は、こちらの記事でまとめています。
あわせて見て頂ければと思います。

【PCBWay】PCBWayの3Dプリントサービスを試してみました![スプレー塗装・透明レジンの染色]

発注していた基板とケースの到着

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

3Dプリントパーツの製造、特に今回利用した透明レジン(UTR-8100)での製造は結構時間がかかります。
今回は発注から12日ほどで手元に届きました!

MEMO
選択するオプションなどにもよりますが、通常7-10日前後の製造時間となるようです!

PCBWayでの3Dプリントパーツの製造は既に何度か試しているので、その仕上がりに関しては分かってはいましたが・・・

透明レジンUTR-8100をベースに染色オプションを付け製造されたカラースケルトンケースは、非常に綺麗な仕上がりです!

個人の製作物でここまで綺麗なケースを自作することが出来るなら、試してみたいことがいろいろと思い浮かびますよね!

ちなみにブログ投稿が前後してしまいますが、今回のこの透明カラーケースの仕上がりを受け、このようなカスタムした自作ファミコンコントローラー型のUSBゲームパッドも先日製作しました。

このクオリティーで作れちゃうのは、ほんと驚きです!

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

トップ&ボトムケースとの嵌め合いや基板とスイッチラバーとの高さや位置関係も狙った設計通りで問題なく、完璧な仕上がりでした!

そして透明ケースを製作する際には、内部が透けて見えるので基板のレジストカラーの選択も結構迷いました。

PCBWayでの基板発注では、他社と比べ多くのレジストカラーが取り扱われています。
そのため、基板発注時にレジストの色味を確認するために以前PCBルーラーセットを入手したのですが・・・

今回のように実際に製造したケースと組み合わせて確認し次回の発注に活かしたり、またCAD上のレンダリングでイメージしやすいので、このようなPCBルーラーセットがあると大変重宝します!

PCBWayのギフトショップで安価で入手出来るので、PCBWayユーザーの方は手元に置いておくと便利だと思います。(人気商品のようです!)

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

最後に!

今回のような自作ミニゲーム機といったものの製作は、以前はイメージしていてもCADスキルが伴わず形に出来なかったり、また自宅の3Dプリンタでの製造では形状的にイメージ通りの綺麗な仕上がりにどうしても出来なかったことから、これまで製作に至らなかったことが多かったのですが・・・

特に今回はPCBWayの3Dプリントサービスを活用することで、自宅の3Dプリンタでの製造では綺麗に造形できない形状にも挑戦でき、見た目にも満足のいく作品に仕上がったと思います!

しかしながら、ハードウェアの問題?でバッテリーの待機電圧の低下が早いなどの問題点も見つかりました!

少し長くなってしまいましたので、そのあたりの話も含めパーツの実装や動作確認、完成までの工程については、後編の記事であらためて詳しくご紹介したいと思います。

【自作基板 / 電子工作】PicopadをベースにRP2350で動かす自作ゲームエミュレータ『PicoPlay2350』の製作② [パーツの実装 〜 完成]

1 COMMENT

コメントを残す