Skip to content

組立・検証手順書(ベンチ作業編)

手持ち部品で進められる作業を、図を見ながらそのまま手を動かせる粒度で書く。 在庫の正は Parts Manager(miniArcade)。寸法の正は cad/params.scad。ピン割当の正は firmware/pico-lever/main.py。 図は docs/img/gen_svg.py から生成している(数値を変えたら再生成する)。

作業所要必要なもの得られる判断
A. Pico 2 の準備15 分Pico 2、USB ケーブル、Macファームが動く状態
B. RKJXV の端子確認と配線20 分RKJXV、テスター、ジャンパ端子の実配線・INVERT_X/Y
C. ボタン 4 個の配線15 分タクト赤 2・黒 2連射の動作
D. Dock に接続して NES で操作15 分Dock、現行 bitstreamA/B の実機動作
E. RKJXV の実測15 分ノギスCAD の LEVER_* 確定
F. LCD 3 枚の点灯比較30 分Dock、LCD ×3本番パネルの決定
G. PAM8403 の試聴20 分M8403VD、φ27 ×2スピーカー決定・#4 クローズ
H. インサートの試し圧入10 分試し刷りパーツ、半田ごて下穴径の確定

A. Pico 2 の準備(ファーム書き込み)

やること: MicroPython を入れて、レバー+4 ボタンのファームを自動起動させる。

  1. https://micropython.org/download/RPI_PICO2/ から RPI_PICO2 用 UF2 をダウンロード(Pico H 用ではない。RP2350 と RP2040 で UF2 が違う)
  2. Pico 2 の BOOTSEL を押しながら USB を Mac に挿す → RPI-RP2 ドライブが出る
  3. UF2 をドライブにドラッグ → 自動で再起動しドライブが消える
  4. Thonny を起動 → 右下のインタプリタ表示をクリック → MicroPython (Raspberry Pi Pico) を選ぶ → 下の Shell に >>> が出れば接続 OK
  5. リポジトリの firmware/pico-lever/lever_logic.py を Thonny で開く → File → Save as → Raspberry Pi Pico → 名前 lever_logic.py
  6. 同様に main.py を Pico に main.py として保存(4 ボタン対応は PR #20 のブランチ feature/issue-19-turbo-buttons
  7. USB を抜き差し → Shell に lever: center x=... y=... が出れば自動起動している

何も繋いでいない状態では ADC が浮くので center の値は毎回変わる。これは正常。

判定: Shell に lever: center ... が出る。


B. RKJXV の端子確認と配線

図2 RKJXV の端子確認と配線

やること: RKJXV の 8 端子(X 3 本・Y 3 本・SW 2 本)をテスターで特定してから Pico に繋ぐ。データシートの端子番号は実装向きで変わるので当てにしない。

  1. テスターを抵抗レンジにする
  2. 片側の 3 端子で 10kΩ で一定になる 2 本を探す → それが A・C(両端)。残りが B(中点)。スティックを倒して B–A が変化することを確認
  3. 反対側の 3 端子で同じことをする。倒す方向で変化する側が X(左右) / Y(上下)
  4. 残り 2 端子は SW。押した時だけ導通する
  5. 図2 の表のとおりに配線する(図1 のピン番号を見る)
    • X の A・Y の A → 3V3_OUT(pin 36)
    • X の C・Y の C・SW2 → GND
    • X の B → GP26(pin 31) / Y の B → GP27(pin 32) / SW1 → GP16(pin 21)
  6. USB を挿し直す。起動から 1 秒はレバーに触らない(中立を自動校正している)
  7. 中立で LED 消灯、倒すと点灯、中央を押すと点灯 → OK
  8. Thonny の Shell で main.pyDEBUG = True にして保存・再起動 → x y {'up':..,'down':..,'left':..,'right':..} pushed が流れる
  9. 右に倒して right: True なら OK。left になるなら INVERT_X = True。下に倒して down でなければ INVERT_Y = True
  10. DEBUG = False に戻して保存

判定: 8 方向すべて期待どおり、中立で全て False。→ INVERT_X / INVERT_Y の値を issue #15 にコメント

XH コネクタで作る場合: 4P ハウジング 1=3V3, 2=X-B, 3=Y-B, 4=GND、SW は 2P。コンタクトは購入済み(秋月 112265)。


C. ボタン 4 個の配線

図1 Pico 2 ピン割当

図3 ベンチ配線

やること: 12mm タクト 4 個を Pico に繋ぎ、連射が効くことを LED で確認する。

  1. タクトスイッチの 対角の 2 端子を使う(隣同士は内部で繋がっているので誤動作する)
  2. 片側を全部 GND にまとめる(ブレッドボードの GND レールへ)
  3. もう片側を Pico へ:
ボタンキャップ位置Pico
A手前GP7(pin 10)
B手前GP8(pin 11)
A連射A の奥GP9(pin 12)
B連射B の奥GP10(pin 14)
  1. USB を挿し直す → A を押すと LED 点灯、A連射を押すと LED が 15Hz で明滅(チラつきが見える)
  2. A と A連射を同時に押すと点灯しっぱなし(通常ボタン優先)

判定: 4 ボタンが独立に効き、連射で明滅する。→ 動画か一言を issue #19 にコメント

連射速度を変えたいときは main.pyTURBO_HZ。NES は 60fps なので 15(2 フレーム ON / 2 フレーム OFF)が上限目安。30 だと 1 フレームずつになり取りこぼす作品がある。


D. Dock に接続して NES で操作

やること: Pico の出力を Dock の PMOD に繋ぎ、NES コアで A/B が効くことを確認する(現行 bitstream でできる範囲)。

  1. Dock を USB-C で給電して NES を起動しておく
  2. GND を先に繋ぐ: Pico GND → Dock PMOD0 の GND
  3. 図3 の赤い線を繋ぐ。Dock 裏面シルクの PMOD0 を見ながら:
PicoDock機能現行 bitstream
GP11(pin 15)PMOD0 下段 R8A✅ 動く
GP12(pin 16)PMOD0 下段 T6B✅ 動く
GP2(pin 4)PMOD0 上段 P6#17 待ち
GP3(pin 5)PMOD0 上段 T7#17 待ち
GP4(pin 6)PMOD0 上段 P8#17 待ち
GP5(pin 7)PMOD0 上段 T9#17 待ち
GP6(pin 9)PMOD1 T11Start#17 待ち
  1. Pico の出力はオープンドレインなので Dock の 3V3 に繋ぐ線は無い。Dock 側の内蔵プルアップが HIGH を作る
  2. ゲームで A/B と連射を試す

判定: A/B が効く。レバーは #17 の bitstream 後に再確認。

⚠️ PMOD1 の T12 R11 M14 M15 J14 J16 は LED 出力。ここに Pico の出力を繋ぐと衝突するので触らない。


E. RKJXV の実測(CAD 確定用)

やること: ノギスで 4 つ測って issue #6 にコメントする。これで params.scadLEVER_* と、コンパネ図(図4)を確定できる。

#測るもの測り方反映先
1可動部の最大外径スティックを一杯に倒し、台座の外周が描く円の直径(4 方向で最大値)LEVER_OPEN_D(φ22〜24 の決定)
2本体の高さ基板(or 取付面)から台座上面まで、中立でLEVER_UNDER(14 想定)
3端子の出っ張り基板裏面から端子先端までパネル下の余裕
4固定方法本体のツメの位置 / 小基板に載せるなら穴ピッチM2 ボス の座標

判定: 4 つの数値。→ #6 にコメントすれば CAD+シミュレーターの修正 PR を作る。


F. LCD 3 枚の点灯比較

図5 LCD・音・電源

やること: QT43272B576 ×1 と YXKJ430240 ×2 を順に Dock に挿して、筐体本番に使う 1 枚を決める。3 枚ともピン配・タイミングは同一で bitstream 変更は不要。

  1. Dock の電源を切る
  2. DISPLAY コネクタ(40P FPC)のロックを起こし、FPC を既存パネルと同じ向きで奥まで挿してロックを倒す
  3. 電源 ON → NES 画面が出ることを確認
  4. 同じ画面で比較する:
    • 斜め 45° から見た時の色の反転・白飛び(視野角)
    • 赤・青の沈み、黒の締まり(発色)
    • 10 分点灯後の裏面の温度(BL 発熱)
  5. 3 枚繰り返す

判定: 本番 1 枚・開発機 1 枚・予備 1 枚を決める。→ 私に伝えれば Parts Manager の status を更新する。


G. PAM8403 の試聴(#4)

やること: M8403VD(PAM8403+VR)で φ27 スピーカーを鳴らし、音量とノイズを判断する。

  1. M8403VD の 5V / GND に USB(モバイルバッテリー or Pico の VBUS)から 5V
  2. VR を最小にして電源 ON → スピーカーに耳を当て「サー」音(ノイズ床)を確認
  3. Dock の 3.5mm → 3.5mm ケーブルを切って L / R / GND を M8403VD の入力へ(GND を Dock と共通に)
  4. φ27 SPK27R08BA を L+ L− / R+ R− に繋ぐ(極性はどちらでも鳴るが、2 個の向きは揃える)
  5. NES の音を出して VR を上げる。展示の環境音に負けない音量が出るか
  6. ポップ音・ハム・ジーがあれば、購入済みの 1000uF(高分子)を 5V/GND 間に足して再確認

判定: φ27 で足りる → #4 クローズ。足りない → 秋月 30mm UGSM30A-8-01(¥120 ×2)。


H. M3 インサートの試し圧入

やること: PR #14 マージ後に bezelfront を試し刷りし、ウルトラサート IV を圧入して保持力を確認する。

  1. cd cad && openscad -D 'PART="front"' -o out/front.stl plate.scad → X2D で印刷(PLA・ブリム)
  2. 半田ごてを **200〜230℃**にし、インサートを下穴(φ4.2)の上に置いてこて先で垂直に押し込む。面一で止める
  3. 冷めてから M3×8 を締める。空回り・抜けが無いか

判定: 緩ければ params.scadINSERT_D を 4.0 に、きつくて割れるなら 4.4 に。


コンパネの配置(参考)

図4 コンパネ配置

E の実測が入るまでレバー開口 φ23 とパネル下 14 は仮。ボタン座標は確定(#19)。

進捗の記録先

作業記録先
B の INVERT_X/Yissue #15 コメント
C・D の動作issue #19 / PR #20 コメント
E の実測値issue #6 コメント
F の本番パネル・G の結論issue #4 / Parts Manager