A 3D-printed cold-storage case for PSA-graded Pokémon cards that embeds a Meshtastic mesh node and generates a 3-layer Solana wallet private key — so the crypto is physically locked to the card.
| Parameter | Value |
|---|---|
| Outer dims (LWH) | 109 × 80 × 22 mm (sleeved PSA slab + 1 mm clearance) |
| Inner slab pocket | 106 × 74 × 10 mm (0.2–0.4 mm tolerance each side) |
| Electronics bay | 70 × 30 × 8 mm (behind slab, snap-in PCB tray) |
| Shell material | PETG (primary) or ABS with TPU bumper ring |
| Front lens | 98 × 66 × 2 mm clear acrylic / polycarbonate press-fit |
| Corner pads | TPU 70A, 4× wedge 8 × 8 × 3 mm — EVA foam backup |
| O-ring channel | AS568-028 (optional dust/splash seal on clamshell seam) |
| Fasteners | 4× M2 × 6 mm security Torx T6, recessed heads |
| Approx. weight | ~85 g printed + electronics; ~15 g PCB/battery tray |
| Setting | Value |
|---|---|
| Layer height | 0.15 mm (quality) — 0.20 mm acceptable |
| Infill | 40% gyroid (shell halves); 80% grid (latch bosses) |
| Perimeters | 4 (for wall strength around lens channel) |
| Orientation | Shell halves flat face-down; layer lines run around card perimeter |
| Supports | Tree supports for electronics bay lid; none needed for shell halves |
| Snap-fit clear. | 0.10–0.15 mm on PETG; 0.18 mm on ABS |
| Mating clear. | 0.20 mm on guide pins; 0.25 mm on PCB tray rails |
| Post-process | Light sand inner slab pocket to 400-grit; prime + paint outer optional |
| Lens press-fit | 0 mm clearance (light interference fit); freeze lens before pressing |
| Part | Qty | Note |
|---|---|---|
| PETG filament | ~60 g | 1.75 mm, any brand; matte black recommended |
| Clear acrylic 2 mm | 1 pc | 98 × 66 mm laser-cut or scored |
| TPU corner pads | 4 | Print in TPU 70A or cut from 3 mm EVA foam |
| AS568-028 O-ring | 1 | Buna-N, optional |
| M2 × 6 Torx T6 | 4 | Security head; countersunk |
| M2 heat inserts | 4 | 3.2 mm OD × 4 mm; press in with soldering iron |
| Pogo pad strip | 1 set | 4-pin magnetic pogo for external power/prog (optional) |
| Logo plate | 1 | Swappable; print in accent color or engrave |
| Component | Part | Est. Cost |
|---|---|---|
| MCU module | Seeed XIAO nRF52840 or custom PCB | ~$8 |
| LoRa module | HopeRF RFM95W (optional add-on) | ~$6 |
| Accelerometer | ST LIS2DH12 (SOIC-8) | ~$1 |
| Reed switch | SPST NC 5 mm, through-hole | ~$0.20 |
| NFC tag IC | NXP NT3H2111W0FT (SOIC-8) | ~$1.50 |
| NFC antenna | PCB trace coil or Molex 2129590100 | ~$0.50 |
| e-ink display | Waveshare 1.02" GDEW0102 (optional) | ~$10 |
| Battery holder | Keystone 3002 CR2450 SMT | ~$0.40 |
| PCB (2-layer) | Custom 68 × 28 mm, JLCPCB ~5 pcs | ~$5/5 pcs |
| Misc passives | Decoupling caps, resistors, LED | ~$1 |
| Total (BLE only) | per unit, DIY PCB | ~$17 |
| Total (BLE+LoRa) | per unit, DIY PCB | ~$23 |
tampered=1, ts=<unix>. Any nearby scanner picks this up within seconds.| State | Current | % Time |
|---|---|---|
| Deep sleep (MCU) | 2 µA | 97.5% |
| BLE beacon (0.5 Hz) | ~4 mA peak, avg ~0.08 mA | 2% |
| Active / tamper burst | ~6 mA | 0.5% |
| Avg total | ~0.12 mA | — |
| CR2450 capacity | 560 mAh | → ~194 days (6 mo) |
| CR2450 (low duty) | 0.05 mA avg | → ~466 days (15 mo) |
| Attack scenario | Protection |
|---|---|
| Steal the card slab | Missing node ID (still in case) + HW RNG token (offline). 2 of 3 missing → no key. |
| Steal the case | Missing PSA cert # (still on physical slab) + HW RNG token (offline). 2 of 3 missing. |
| Find the offline RNG token | Missing PSA cert # + node ID. Neither piece alone is sufficient. |
| Open the case (tamper) | Reed switch fires tamper flag immediately. Beacon alerts owner. Physical frangible tab broken visibly. |
| Copy the NFC / QR | NFC stores only the vault URL + case serial. Contains no key material. |
| Replay beacon | BLE payload is signed with MCU private key at runtime. Spoofed beacons fail signature check. |
| Delimiter ambiguity | Demo uses || separator (PSA certs and hex IDs never contain ||). Production firmware uses length-prefixed byte concatenation to eliminate any boundary ambiguity. |
| Event | Trigger | Action |
|---|---|---|
| TAMPER | Reed switch opens | Beacon flag + burst rate + flash log |
| MOTION | Accel threshold exceeded | Log + optional push alert |
| BATTERY_LOW | <15% ADC | Beacon field + push notification |
| OFFLINE | No beacon seen >1 hr | Gateway alerts owner (cloud-side) |
| LOCATION_CHANGE | RSSI gateway fingerprint changed | Push alert with last-seen gateway ID |
{
"case_id": "GV-000123", // laser-etched serial
"node_id": "A3F72C1B", // MCU-burned (never transmitted plain)
"psa_cert": "●●●●●●●●", // NOT stored here — physical only
"card_id": "poke-charizard-1st-10", // vault reference
"owner_id": "solana-wallet-addr", // ARAYA Energy Vault account
"tampered": false,
"tamper_log": [],
"battery_pct": 87,
"last_seen": "2026-04-09T13:47:00Z",
"last_rssi": -68,
"gateway_id": "home-pi-gateway-01",
"location_fingerprint": "home-vault"
}