# chess-nfc-4x4-matrix v1 — mr.barley lab

## Kas yra šiame ZIP

`chess-nfc-4x4-matrix-v1.zip` — JLCPCB paruošti Gerber/drill failai:
- **2-sluoksnių** FR-4 PCB, 170 × 185 mm, 1.6 mm storio
- 16 planarinių spiralių antenų (35 × 35 mm, 5 apvijos, 0.3 mm plotis/tarpas)
- 4 × SIG pin headeris (J1-J4), 16 × GND test pointas (TP0-TP15)
- DRC švari (0 klaidų, 0 įspėjimų)

## JLCPCB užsakymo parametrai

- Base Material: FR-4
- Layers: **2**
- Dimensions: 170 × 185 mm
- PCB Qty: 5
- PCB Thickness: 1.6 mm
- Copper Weight: 1 oz
- Surface Finish: HASL with lead (pigiausia) arba ENIG
- Silkscreen: White
- Solder Mask: Green

Įkelk `chess-nfc-4x4-matrix-v1.zip` į https://cart.jlcpcb.com/quote

## Ką dar reikia nusipirkti (išoriniai moduliai)

1. **CD74HC4067 16-ch mux breakout** (AliExpress ~$2) — "16CH Analog Multiplexer Module"
2. **PN532 NFC modulis** (jau turi)
3. **82 pF keraminis kondensatorius** (sočiai užtenka 1 vnt., galima pakeisti 100 pF)
4. **Raspberry Pi 4B** (jau turi)
5. **Jumper wires** — reikės ~30 vnt. female-female ir female-male
6. **M3 varžtai + atskirikliai** 4 vnt. plokštės pritvirtinimui

## Antenos pajungimas (kiekvienai iš 16)

Kiekviena antena turi DU galus:
- **SIG (vidinis spiralės galas)** — pin header J1-J4 viršuje
- **GND (išorinis spiralės galas)** — test pointas TP0-TP15 antenos centre-dešinėje

### SIG pinų žemėlapis

Per-kolonos 1x4 pin headeris (iš kairės į dešinę):

| Headeris | Pin 1 | Pin 2 | Pin 3 | Pin 4 |
|----------|-------|-------|-------|-------|
| J1 (COL0) | ch 12 | ch 4  | ch 0  | ch 8  |
| J2 (COL1) | ch 13 | ch 5  | ch 1  | ch 9  |
| J3 (COL2) | ch 14 | ch 6  | ch 2  | ch 10 |
| J4 (COL3) | ch 15 | ch 7  | ch 3  | ch 11 |

(Kanalas = eilutė × 4 + kolona. Eilutė 0 = viršutinė, eilutė 3 = apatinė.)

### Sujungimo schema

```
+--- PN532 ---+       +--- CD74HC4067 breakout ---+       +--- PCB (šita lenta) ---+
|  ANT1 (SDA) +---||--+ Z (COM)                   |       |                        |
|             | 82pF |                           |       |                        |
|  ANT2       +------+ Y0..Y15 (16 ch)           +-------+ J1..J4 pinai (16 SIG)  |
|             |      |                           |       |                        |
|  GND        +------+ GND                       +-------+ TP0..TP15 (16 GND)     |
|             |      | VCC  (3V3)                |       |                        |
|             |      | S0..S3, EN                |       |                        |
+-+-+-+-+--+--+      +----+----+----+----+----+--+       +------------------------+
  | | | |  |              |    |    |    |    |
  GND SDA SCL 3V3          S0   S1   S2   S3   EN
  |  |   |   |             |    |    |    |    |
+-+--+---+---+-------------+----+----+----+----+--+
|    Raspberry Pi 4 GPIO (I2C + ctrl pins)       |
| GND SDA1 SCL1 3V3  GPIO17 GPIO27 GPIO22 GPIO5 GPIO6 |
+------------------------------------------------+
```

### Žingsnis po žingsnio

1. **SIG pajungimas**: 16 jumper wire (female-female) nuo J1-J4 pinų į CD74HC4067 Y0..Y15 pinus pagal lentelę aukščiau.
2. **GND pajungimas**: 16 trumpų laidų nuo TP0-TP15 test pointų į bendrą GND rail (pvz. breadboard GND juosta arba į CD74HC4067 modulio GND).
3. **CD74HC4067 Z (COM) išvadas** → per 82 pF kondensatorių → PN532 ANT1 (SDA kontaktas, NE duomenų linija).
4. **CD74HC4067 GND, VCC, S0-S3, EN**: pagal breakout dokumentaciją į Pi GPIO pinus (paprasčiausia: S0=GPIO17, S1=GPIO27, S2=GPIO22, S3=GPIO5, EN=GPIO6, VCC=3V3, GND=GND).
5. **PN532 SDA, SCL, 3V3, GND**: į Pi I2C (SDA1=GPIO2, SCL1=GPIO3, 3V3, GND). PN532 turi būti I2C režime (SEL0=ON, SEL1=OFF).

### Programinė dalis

Pakeisti `~/chess-board/webapp/app.py` kad prieš kiekvieną NFC skenavimą nustatytų CD74HC4067 kanalą (S0-S3) ir EN=LOW, laukti ~5 ms, tada nuskaityti PN532. Iteruoti per 16 kanalų ir atvaizduoti lentos būseną.

Pseudokodas:
```python
for ch in range(16):
    mux_select(ch)  # S0..S3 = ch bits, EN=LOW
    time.sleep(0.005)
    uid = pn532.read_passive_target(timeout=0.1)
    if uid:
        row, col = ch // 4, ch % 4
        board[row][col] = uid
```

## Antenos parametrai (FYI)

- Induktyvumas L ≈ 1.64 μH (Wheeler's formulė)
- Rezonansinis C prie 13.56 MHz: ~84 pF idealiai
- Su 82 pF: ~13.74 MHz (+1.3 %, NFC dar veikia)
- Su 100 pF: ~12.43 MHz (-8 %, ne)

Užtruksi paskiau pabandyti tiksliau nustatyti — PN532 gali kompensuoti nedidelius nukrypimus.

## Failai

- `chess-nfc-4x4-matrix-v1.zip` — Gerber/drill JLCPCB užsakymui
- `chess-nfc-4x4-matrix-v1-preview.png` — plokštės peržiūra
- `chess-nfc-4x4-matrix-v1-README.md` — šis failas
