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

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

こちらの記事の後編となります。

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

前回の記事では、PicopadをベースにRP2350で動かす自作ミニゲーム機『PicoPlay2350』の構想や設計過程、またPCBWayへ発注していた基板とケースが届いたところまでをご紹介しました。

今回はその続きとして、届いた基板のパーツ実装から組み立て、動作確認までの工程を中心にご紹介していきたいと思います。

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

パーツの実装

それでは、いよいよパーツの実装に入っていきます。

今回の基板での実装で難しくなってくる部分は、コアとなるRP2350Aチップの取り付けだと思います。(左のチップです)

QFN60パッケージ(7mm×7mm)となりピンピッチがかなり狭く、手はんだでの取り付けでは位置合わせが非常に難しくなるので、リフローやヒートガンを使った実装になります。

リフロー時にセルフアライメントにより正規の位置にさえ決まってくれれば、ブリッジする箇所が発生しても修正はそれほど難しいものではないのですが・・・

RP2350Aの実装はこれまで何度か行ったことがありRP2040と同サイズのチップなのですが、ピン数が増えているので若干ブリッジしやすい印象を受けます。
そのためチップ周辺のパスコン等の配置に少し余裕を持たせ、コテが入るクリアランスを開けています。

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

綺麗にはんだペーストを塗布することが出来ました。
RP2350のパッド部分も完璧ですね!
このレベルで塗布出来ていれば、ピッチの狭いType-C端子といったパーツもブリッジすることはあまりないと思います。

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

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

以前RP2350の実装を行った際に、はんだ付け不良があり特定のGPIOピンが正常に動いたり動かなかったりと挙動が不安定になったことがあり、原因特定に時間がかかったことがありました。

今回のリフローでは、RP2350Aのパッドがしっかりと接合されるようにリフローモードを使い実装しました。
MHP50では温度を段階的に上げていくリフロープロファイルを使った実装が行えるので便利です!

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

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

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

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

あと基板表面の4つのインジケーターLEDも取り付けておきます。
背面にパーツを配置していないのでリフローで実装も出来ますが、手はんだで取り付けました。(LEDカラーはお好みで!)

この後、電源スイッチやディスプレイ、拡張端子、スピーカーなどのスルーホールパーツを取り付けて完成させますが、取り付けてしまうと不具合等がある場合に再リフローするのが面倒となるので、先に動作チェックを行い問題がなければ残りパーツを取り付けて完成させたいと思います。

ディスプレイが接続されていないと最低限の動作確認が出来ないため、ひとまずテストワイヤーを使って接続しました。

テストワイヤーはスルーホールにはんだ付け無しで固定出来るので、簡易テストを行う際にあると便利です!

それではこの状態でPicoLibSDKを導入し、動作テストを行い問題がなければ残りのパーツを取り付けて完成させたいと思います。

PicoLibSDKの導入 & 動作確認

本ボードは、PicopadをベースにRP2350AをコアにしてPicoLibSDKで動作する構成となっています。
PicoLibSDKについて詳しくは、以下本家サイトをご覧下さい!

参考 PicoLibSDKPicopad

SDカードの準備

本ボード(PicoPlay2350)での動作テストがすぐに行えるように、SDカード内に格納するデータを以下からダウンロード出来るようにしておきます。

ライブラリには56のサンプルプログラムとゲームなどが含まれています。(NESおよびGBのゲームデータは含まれていません!)

MEMO
ライブラリは主にRaspberry PiおよびMark Owen氏の著作物であり、作者のライセンス条件が適応されます!

上記ダウンロードしたファイル(ZIP形式で圧縮)を解凍後、フォルダ内の全ファイルをSDカードのルートへ書き込みます。

ローダー(LOADER.UF2)の書き込み

次にローダーファイルを本ボードに書き込みます。

本ボードをPCと接続し、[BOOT]スイッチを押した状態で[RESET]スイッチを押すとDFUモードで起動します。

PCにUSBマスストレージとして認識されるので、先ほどダウンロードしたファイルの中にある[LOADER.UF2]をドラッグ&ドロップして本ボードに書き込みます。(初回起動時はDFUモードで自動的に起動すると思います)

これで完了です。
先に用意しておいたSDカードを差し込むと、このようなメニュー画面が表示されます。

動作確認

まだケースに組み込んでいないので操作しにくいと思いますが、スイッチラバーを乗せて上下左右、そして他の4つのスイッチが正常に動作するか確認します。

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

またリポバッテリーの充電動作も確認しておきます。

USBケーブルを繋いだ状態でリポバッテリーを接続するとインジケーターLEDが点灯します。
バッテリー充電中は[CHG]LEDが点灯、充電が完了したら[FULL]LEDが点灯します。

ちなみに本ボードに搭載している4つのインジケーターLEDは、それぞれ以下機能が働いている時に点灯します。

インジケーターLED機能
USR設定したバッテリー下限電圧になると点灯
SDSDカードへのアクセス時に点灯
FULLバッテリーの充電が完了したら点灯
CHGバッテリー充電中に点灯

リポバッテリーの取り扱いには十分に注意して下さい!

特に1セルリポバッテリーの極性(+ / -)は間違いやすく、私も充電や稼働時間などのテストをしている際にいくつかのバッテリーを使って行っていたのですが、極性を間違えて接続してしまい・・・

幸い回路内にヒューズを入れていたので大事には至りませんでしたが、くれぐれもリポバッテリーの扱いは慎重に行って下さい!

バッテリーは基本的にボード備え付けで使用し、頻繁に取り付け・取り外しを行うことは想定していないため極性保護までは入れていませんでしたが、今回を機に以後自作ボードでは極力入れておこうかと考えています。

MEMO
1セルのリポバッテリーに使われているPHコネクタ(2ピン)は、製品によって+(プラス)と−(マイナス)の極性が逆になっている場合があるので十分注意して取り付けて下さい!
注意
リババッテリーの扱いには十分注意して下さい!
当方では本記事の情報や配布データを使用したことによって生じたいかなる損害や事故についても一切の責任を負いかねますので、あらかじめご了承ください。

以上、最低限の動作テストをして問題がなければメインパーツの取り付けは大丈夫なので、残りのパーツを取り付けます。

残りのパーツを取り付ける

残りのパーツを取り付けていきます

まず基板背面(実装面)に拡張端子(ピンソケット 2×6ピン)を取り付けます。
拡張端子のパッドはディスプレイに隠れるので、先に拡張端子の方を取り付けておきます。

次にその背面(基板表面)にディスプレイを取り付けます。

ケースに乗せた状態ではんだ付けすると、真っ直ぐ取り付け出来ます。

あとは電源スイッチ、スピーカーを取り付けて基板は完成です。

スピーカーは直径16mm前後のものがサイズ的に取り付けやすいと思います。
秋月電子で扱われている縦長(短方向16mm)のスピーカーもちょうどいい感じです。

組み立て

最後にケースに組み込んで完成させます。

トップケース側にインサートナット(M2×4mm OD3.2mm)を接着し4ヶ所取り付けます。

スイッチパーツは、本家スーパーファミコンのコントローラーから流用しました。(完全にフィットするように設計しています)

AliExpressでこのような互換スイッチラバーパーツが安価で販売されているので、これを使うのもいいかと思います。

リポバッテリーは、ボトムケースまたは基板側に両面テープで固定します。

ちなみに搭載出来るバッテリーサイズは、厚さ9.5mm以内で最大サイズが以下サイズくらいのものまでケース内に格納することが出来ます。

ディスプレイまわりのベゼルパーツを接着し、トップケースとボトムケースをM2×10mmビス(4ヶ所)で固定して完成です!

ゲームをプレイする

スイッチの操作感も良く、可愛い自作ミニゲーム機に仕上がったと思います。

ファミコン(NES)やゲームボーイ(GB)といったPicopad用にエミュレートされたゲームデータ(uf2)をSDカード内に入れれば、500種類以上のゲームを楽しむことが出来ます。

データサイズが大きいので本ブログから直接ダウンロード設定が出来なかったのですが、上記のようなクラシックゲームをプレイしたい方は、本家サイトを参考に試してみて下さい!

また、Raspberry Pi Pico(またはPico2)を使いブレッドボード上でも動かすことが出来るので、試してみると面白いと思います。

MEMO
上記テスト用にダウンロード出来るようにしているPicoLibSDKのデータは、Pico2ではそのまま使えます!

バッテリー電圧のキャリブレーション

PicoLibSDKでは、バッテリー下限電圧の設定や正確な電圧レベルを取得するためのダイオードドロップ電圧の設定を、[CONFIG]ライブラリで行えるようになっています。

リポバッテリーを使用する場合、3V以下のセル電圧になると過放電となるので、3.2Vに設定して使っています。
バッテリー電圧が3.2Vを下回ると、[USR]インジケータLEDが点灯します。

また本家PicopadではバッテリーからRaspberry Piボードへの供給は、ショットキーバリアダイオードを挟んで充電時に逆流を保護する構成で組まれています。

そのため[Diode drop]電圧はデフォルトで0.3Vが設定されていますが、本ボードではドロップ電圧は発生しない構成としているので、0mVに設定して使用します。

待機時のバッテリー電圧の低下

基本動作に関しては特に問題ないのですが・・・

前回の記事でも少し触れたのですが、待機中(電源OFFの状態)でのバッテリー電圧の低下が早いようです!

ブレッドボード上で主要部分の回路を組みテストした時は問題なかったのですが・・・、どこか漏れ電流のようなものが発生しているのかな?
考えられるのは、DW01とFS8205を使ったバッテリー保護回路部分、または3.3V LDO部分だと思いうのですが。

電源のON/OFFは3.3V LDOのENピンを使っています。
MOSFETで5V(USBケーブル接続時)を優先し、通常時ではバッテリーから駆動するようにしています。

電源ON状態では、LDOのENピンを100kΩ抵抗でプルアップさせて、OFFにする際はGNDレベルに落としています。
電源OFF時、バッテリーからこの100kΩ抵抗を通りGNDに流れますが、計算上40μA程度なので実質的に問題はないかな?

以前同様な接続で製作したものでは、半年以上バッテリー電圧の低下は問題ないレベルでした。

だとするとバッテリー保護回路部分だと思うのですが、これも以前同様な回路を組みテストしたこともあるので・・・

この待機中のバッテリー電圧の低下が、想定より大きい部分がまだ未解決です!

・・・と本記事を書きながら、バッテリー直でスピーカーを鳴らしているので、電源OFF時にトランジスタのコレクタ – エミッタ間の漏れなのかなと思ったり・・・?

使用パーツ一覧

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

パーツ定数入手先
コンデンサ
(0603)
C1/C2 15pF
C3/C4/C5/C7/C20/C24 4.7μF
C6/C8/C9/C10/C11/C12/C13/C14/C15/C16/C19/C21/C23/C25 100nF
C17/C18 1μF
C22/C26/C27 10μF
AliExpress
ダイオード
(SOD-123)
D1/D2 1N5819WAliExpress
ヒューズ
(1206)
F1 500mAAliExpress
端子J1 Type-C端子(16P)AliExpress / 秋月電子
J2 ピンソケット L型(2×6)秋月電子
SDカードスロットJ3 MicroUSB(9P)AliExpress
TFTディスプレイJ4 GMT024-08-SPI8P
※2.4inch(240×320) ST7789V SPI(8P)
AliExpress
バッテリー端子J5 JST-PH2.0(2P)AliExpress
インダクタ
(0806)
L1 3.3μHAliExpress
LED(0603)LED1/LED2/LED3/LED4AliExpress
MOSFETQ1 CJ2301 S1AliExpress
Q2 IRLML6344TRPBFAliExpress
トランジスタ
(SOT-23)
Q3 S8050 J3YAliExpress
抵抗
(0603)
R1/R2 5.1kΩ
R3/R4 27Ω
R5/R8/R9/R18/R19/R20/R27/R29/R30 1kΩ
R6 33Ω
R7/R11/R22/R23/R24/R25 10kΩ
R10 5.6kΩ
R12/R13/R14/R15/R16/R21/R28 100kΩ
R17 2kΩ
R26 200Ω
AliExpress
スイッチSW1/SW2 3×4×2.5mm(4P SMD)AliExpress
SW11 SS12D06AliExpress
MCUU1 RP2350A(QFN-60)AliExpress / 秋月電子
フラッシュU2 U3 W25Q128JVPIQAliExpress
LDOU3 ME6211C33AliExpress
充電ICU4 MCP73831(SOT23-5)AliExpress / 秋月電子
デュアルMOSFETU5 FS8205A(SOT23-6)AliExpress
バッテリー保護ICU6 DW01A(SOT23-6)AliExpress
クリスタル
(3225)
Y1 12MHzAliExpress / 秋月電子
スピーカーSP1 スピーカー ※直径16mm程度Amazon / 秋月電子
その他インサートナットM2×4mm(OD3.2mm) ×4AliExpress
M2×10mmビス ×4ーーー
リポバッテリー
※1000mAh程度
Amazon
SFC用 スイッチ & ラバーAliExpress

 

最後に!

以上、自作ミニゲーム機『PicoPlay2350』の基板実装から完成までの流れをご紹介しました。

構想から基板やケースの設計、そして最終的な組み立てまで全てを自分の手で進めることでひとつのプロダクトを形にする楽しさと達成感を感じられた、今回もとても楽しいプロジェクトになりました。

特に今回は、PCBWayの3Dプリントサービスを利用して製造したカラー透明ケースの仕上がりが非常に良く、これまでイメージしていても自宅の3Dプリンタでは造形が難しく製作に踏み切れなかったようなものでも、しっかりと形に出来るということが分かったので、今後製作するものにも大いに活かせそうです!

電源OFF時のバッテリー電圧低下の問題については今後もう少し検証を重ねる必要がありますが、それも含めて自作ならではの試行錯誤の楽しさだと感じています。

またPicopadはオープンソースで公開されているプロジェクトとなっており、今回のように基板を自作しなくても手元にあるパーツで手軽に始めることが出来る点も大きな魅力です。

興味ある方は、まずはブレッドボードで試してみるだけでも面白さを十分に体感でき楽しいと思います。

ここまでお読みいただき、ありがとうございました!

コメントを残す