基板マップ — どこに何が付くか
抵抗 → コンデンサ → ヒューズ → IC → M5Stamp → 60 ピンスロット。低い部品から付けると基板が机に安定して置け、大きな部品が作業のじゃまになりません。この手順書もその順に並んでいます。
工具と部品を机に並べる
工具
- 温調はんだごて(280〜320 ℃、細い C 型 / D 型こて先)
- はんだ φ0.6 mm ヤニ入り。鉛入り Sn60/Pb40 が溶けやすく初心者向け
- フラックス(ペースト or ペン)— IC の成功率が段違いに上がる
- はんだ吸い取り線 — ブリッジ修正に必須
- ピンセット(先細)
- テスター(導通ブザー付き)
- あると楽: ルーペ / 基板固定具 / こて先クリーナー / フラックス洗浄剤 / UEW 線 0.16 mm(嵩上げ配線用)
部品表(BOM)
| Ref | 部品 | 数 | 見分け方 | |
|---|---|---|---|---|
| R1 | 10 kΩ 0603 | 1 | 印字 1002 | 任意 |
| R2 | 20 kΩ 0603 | 1 | 印字 2002 | 任意 |
| C1–C8 | 100 nF 0603 | 8 | 印字なし・薄い色 | 任意 |
| C9 | 10 µF 0603 | 1 | 印字なし。C1–C8 と混ぜない | 任意 |
| F1 | ポリヒューズ 500 mA 1812 | 1 | 大きめ黄緑の角チップ | 任意 |
| U2–U5 | 74HCT595 SOIC-16 | 4 | 16 ピン、「595」の刻印 | 必須 |
| U6, U7 | 74LVC245 SOIC-20 | 2 | 20 ピン幅広、「LVC245」 | 必須 |
| U8 | 74HCT541 SOIC-20 | 1 | 20 ピン幅広、「HCT541」 | 任意* |
| U1 | M5Stamp S3 | 1 | オレンジの筐体 | 必須 |
| — | ピンヘッダ(嵩上げ用) | 適宜 | 2.54 mm / 1.27 mm どちらでも可 | 必須 |
| J1 | FC 60 ピンスロット | 1 | 2 列 × 30 ピン | 必須 |
*U8 が無くてもジャンパ線で代用できます(手順 5 の末尾)。「任意」の部品は無くても吸い出しは動きます。パーツがそろっているなら全部付けるのが一番楽です。
刻印を確認して、袋やテープごとに「245」「541」とメモしてから作業を始めてください。取り違えると動きません。
チップ抵抗 R1 / R2 を付ける
いちばん小さい部品(1.6 × 0.8 mm)です。ここで「チップ部品の付け方」を身につけると C1–C9 も同じ手順で付けられます。
| Ref | 値 | 印字 | 位置 |
|---|---|---|---|
| R1 | 10 kΩ | 1002 | 右下、上側 |
| R2 | 20 kΩ | 2002 | 右下、R1 のすぐ下 |
こて先には「ほんの少し」だけはんだを付ける。多いと部品が立ち上がる(墓石現象)。片側を固定した後、ピンセットで押さえながら再溶融すると平らに座ります。
チップコンデンサ C1–C9 を付ける
| Ref | 値 | 場所(基板マップ参照) |
|---|---|---|
| C1 | 100 nF | U2 と U3 の間 |
| C2 | 100 nF | U3 と U4 の間 |
| C3 | 100 nF | U4 と U5 の間 |
| C4 | 100 nF | U5 と U6 の間 |
| C5 | 100 nF | U6 の右横(基板右端) |
| C6 | 100 nF | U7 の左横 |
| C7 | 100 nF | U8 の右横 |
| C8 | 100 nF | 左下、F1 の上 |
| C9 | 10 µF | 左下、C8 の右下・F1 の右上 |
袋から出す前に 100 nF(8 個)と 10 µF(1 個)を別の小皿に分ける。まず 100 nF を C1→C8 の順に 8 個付け、最後に 10 µF を C9 に付けると混ざりません。
C1–C9 は無くても読み出しは動きます。ただし付けた方が動作が安定するので、パーツがあるなら付けることを推奨します。
ポリヒューズ F1 を付ける
1812 サイズ(4.5 × 3.2 mm)で抵抗より大きいので付けやすいです。手順 2 と同じ「片側予備はんだ → 置いて固定 → 反対側」で付けます。熱容量が大きいので、こて先を 2〜3 秒当ててはんだを流します。
F1 の 2 つのパッド間を短い線(抵抗の足など)でつないで短絡すれば動きます。保護が無くなるだけです。
ロジック IC U2–U8 を付ける(向きが最重要)
| Ref | 部品 | 形 | 位置 | 役割 |
|---|---|---|---|---|
| U2 | 74HCT595 | SOIC-16 | 上段 左から 1 番目 | CPU アドレス A0–A7 |
| U3 | 74HCT595 | SOIC-16 | 上段 2 番目 | CPU アドレス A8–A14 |
| U4 | 74HCT595 | SOIC-16 | 上段 3 番目 | PPU アドレス A0–A7 |
| U5 | 74HCT595 | SOIC-16 | 上段 4 番目 | PPU アドレス A8–A13, /A13 |
| U6 | 74LVC245 | SOIC-20 | 上段 右端 | CPU データバッファ(PRG) |
| U7 | 74LVC245 | SOIC-20 | 右中段、U6 の下 | PPU データバッファ(CHR) |
| U8 | 74HCT541 | SOIC-20 | 左中段 | 制御線 3.3V→5V バッファ |
SOIC の付け方(ドラッグはんだ)
ルーペで ①隣同士がつながっていない ②ピンが全部パッドに乗っている ③1 番ピンの向き — を見る。ピンとパッドの間で導通ブザーを鳴らすとより確実。
U8(74HCT541)が無い場合 → ジャンパ線で代用する
U8 は制御信号のレベル変換バッファですが、無くても読み出しは動きます。U8 のパッド上で「入力→出力」のピン同士を 8 本、斜めに直結します。
| 下段 | ↔ | 上段 |
|---|---|---|
| 2 | ↔ | 18 |
| 3 | ↔ | 17 |
| 4 | ↔ | 16 |
| 5 | ↔ | 15 |
| 6 | ↔ | 14 |
| 7 | ↔ | 13 |
| 8 | ↔ | 12 |
| 9 | ↔ | 11 |
ピン 1・10・19・20 には何もつなぎません。配線後、2↔18 などをテスターで導通確認し、隣同士がショートしていないことも見ておく。
M5Stamp S3 を嵩上げして付ける
基板側の穴の配置・サイズが Stamp の実物と合っていません(設計上の不具合、v0.2 で修正予定)。そこで基板の穴列にピンヘッダを立て、その上に Stamp を載せて、各ピンを短い線でつなぎます。
手順
- 基板の Stamp 用の穴列(左 17 / 右 11)にピンヘッダを差し、表側から はんだ付け。まず両端の 1 本ずつ付けて垂直を確認してから残りを付ける。
- Stamp を USB-C が下向きになるようにヘッダの上に載せ、ずれないよう仮固定(両面テープ or 数本先に配線)。
- Stamp の各パッドと、対応するヘッダピンを UEW 線(または細い線)で 1 本ずつつなぐ。左列を上から G1, G2 … の順に、次に右列。1 本付けるごとに表でチェック。
- すべて配線後、テスターで数本(例: Stamp の
G4↔ 基板のG4穴、GND↔ MH のメッキ部)の導通を確認。
最低限必要なのは 5V, 3V3, GND, G1–G15, G39, G41, G42, G46。G0, G40, G43, G44, EN は v0.1 では未使用ですが、迷ったら全部つないでおくのが無難です。
| 信号 | GPIO | 役割 |
|---|---|---|
| MD0–MD7 | G4–G11 | データバス(入力) |
| SR_DATA / CLK / LATCH | G12 / G13 / G14 | 595 シフトレジスタ制御 |
| OE_PRG_N / OE_CHR_N | G15 / G39 | U6 / U7 の出力許可 |
| /ROMSEL, M2 | G41, G42 | CPU 側制御 |
| R/W, PPU /RD, PPU /WR | G1, G2, G3 | 制御線 |
| CIRAM A10 | G46 | ミラーリング判定(入力) |
FC 60 ピンスロット J1 を付ける
▼ FRONT のシルク側。スルーホール実装。- コネクタを基板表側から差し込む。ピン 1(角パッド)は左下。カセットの挿入口が基板の上辺を向く。
- 基板を裏返し、両端の 2 ピンだけはんだ付け。
- 表から見て、コネクタが基板に密着して傾いていないか確認。傾いていたら片側を溶かしながら押し付けて直す。
- 残りの 58 ピンをはんだ付け。5〜10 ピンごとにフラックスを塗り直すとスムーズ。
- ルーペで裏面の 60 箇所にブリッジがないか確認。
こて先をパッドとピンの両方に当てて 1 秒温め、はんだを供給、こてを離す。合計 2〜3 秒。はんだが穴に吸い込まれて裏側まで富士山型になれば OK。
通電前チェック — USB を挿す前に必ず
- 5V ↔ GND が導通しない(ブザーが鳴らない)
測る場所: Stamp の 5V ヘッダピン ↔ MH1 のメッキ穴(GND) - 3V3 ↔ GND が導通しない
測る場所: Stamp の 3V3 ヘッダピン ↔ MH1 - 5V ↔ 3V3 が導通しない
- U2–U8 の 1 番ピンが全部左下(ルーペで再確認)
- U6/U7 = 245、U8 = 541 の刻印になっている
- J1 裏面 60 箇所にブリッジなし
- Stamp の USB-C がノッチ側(下)を向いている
いちばん怪しいのは IC の電源ピン付近のはんだブリッジ(595 は 8-GND / 16-VCC、245・541 は 10-GND / 20-VCC)。次に J1 の隣接ピン、Stamp の配線。フラックス + 吸い取り線で直してから再測定。
ダイヤルを「•)))」(導通)に合わせ、赤黒の棒を 2 点に当てる。ピーと鳴る = つながっている。電源とGND の間で鳴ったらショートです。※10 µF(C9)があると一瞬だけ鳴ることがある。鳴り続けなければ OK。
ファームウェア書き込みとテスト
A. 書き込み
Stamp を USB-C ケーブル(データ通信対応のもの)で PC につなぎ、リポジトリの firmware/ で:
cd firmware
pio run -t upload
成功すると Stamp の LED が緑に点灯します。
| LED | 意味 |
|---|---|
| 緑 | 待機中(正常) |
| 青 | 吸い出し中 |
| 赤点滅 | エラー(不正コマンド / セルフテスト失敗) |
B. セルフテスト(カセット不要)
- Chrome で goroman.github.io/nes-rom-reader/web/ を開く
- 接続 → シリアルポートを選択
- ⚙ セルフテスト(T) → 各ピンが約 1 秒ずつ検査され
SELFTEST PASSが出れば OK
セルフテストは ESP32 側の配線を見るもので、スロットまでの配線は確認しません。
C. 実カセットで吸い出す
- USB を抜いた状態でカセットを奥までしっかり挿す
- USB 接続 → Web UI で接続
- NROM なら PRG
32/ CHR8を指定して吸い出し、.nesを保存 - PRG-CRC / CHR-CRC を控えて、同じカセットで 2〜3 回吸い出す
吸い出した .nes をエミュレータ(Mesen など)で起動できれば完璧です。
うまくいかないとき
| 症状 | 疑う場所 | やること |
|---|---|---|
| Stamp が PC に認識されない | USB ケーブル / Stamp の配線 | 充電専用ケーブルでないか確認。5V・GND・G43/G44 は不要だが USB は Stamp 直なので嵩上げ配線は関係なし。LED が点かないなら 5V/GND ショートを再確認 |
| PRG の CRC が毎回変わる | カセット接点 → /ROMSEL(G41 → U8 → J1 ピン 44)→ CPU データ(J1 36–43 → U6) | カセットを数回抜き差し(接点復活剤があればなお良い)。直らなければ U6・U8 のピンを再溶融 |
| CHR だけ不安定 | PPU /RD(J1 ピン 17)、PPU データ(J1 26–29, 57–60 → U7) | U7 のピンを再溶融、J1 該当ピンの導通確認 |
| PRG も CHR も全部ダメ | 電源、U8(またはジャンパ)、シフトレジスタ U2–U5 | 5V が J1 ピン 30/31 に来ているか。U2→U3→U4→U5 の向き、各 IC のピンブリッジ |
ミラーリングが ? | R1/R2 未実装、接触不良、4 画面カセット | 吸い出し自体は可能なので無視して OK |
| LED が赤点滅 | 不正コマンド / セルフテスト失敗 | Web UI のログで失敗したピンを確認 → そのピンの Stamp 配線・IC を見る |
J1 ピン早見表(切り分け用)
| ピン | 信号 | ピン | 信号 | ピン | 信号 | ピン | 信号 |
|---|---|---|---|---|---|---|---|
| 1 | GND | 16 | GND | 31 | +5V | 46 | (未接続) |
| 2–13 | CPU A11…A0 | 17 | PPU /RD | 32 | M2 | 47 | PPU /WR |
| 14 | CPU R/W | 18 | CIRAM A10 | 33–35 | CPU A12–A14 | 48 | (未接続) |
| 15 | (未接続) | 19–25 | PPU A6…A0 | 36–43 | CPU D7…D0 | 49 | PPU /A13 |
| 26–29 | PPU D0–D3 | 30 | +5V | 44 | /ROMSEL | 50–56 | PPU A7–A13 |
| 45 | (未接続) | 57–60 | PPU D7…D4 |