# Camille LED Nameplate

A USB-C-powered desk nameplate that spells **CAMILLE** in 64 green
0402 LEDs arranged as a 3 × 5 dot-matrix bitmap font. Plug any
USB-C cable in → CAMILLE lights up. No microcontroller, no firmware,
no animation — pure analog charm.

## Live 3D viewer

The interactive viewer above auto-plays a guided walkthrough on load.
Add `?autoplay=off` to the iframe URL to defer firing it.

## How it works

- **Bitmap font.** A 3 × 5 pixel grid per letter, defined as a `FONT`
  const in `lib/index.tsx`. The renderer walks each letter's pixels
  and emits one `<led>` + one `<resistor>` per lit pixel.
- **Letter counts** — C=9, A=10, M=12, I=9, L=7, L=7, E=10 ⇒ 64 LEDs.
- **Per-LED current limit.** Each LED is driven by its own 300 Ω 0402
  resistor (R = (5 V − 2.1 V) / 10 mA ≈ 290 Ω, rounded to 300 Ω E12).
  Independent fusing — one LED dying doesn't affect any other.
- **USB-C handshake.** Two 5.1 kΩ pulldowns on CC1 / CC2 advertise
  the board as a downstream device drawing power, so a USB-C charger
  / laptop will actually deliver 5 V instead of leaving CC floating.
- **Inrush smoother.** A 10 µF X5R bulk cap on VBUS soaks the inrush
  spike when 64 LEDs ignite simultaneously.
- **Total draw** — ~640 mA at 5 V (3.2 W). Within USB-C 1 A budget
  for any modern source.

## Hardware summary

| Block | Part | JLCPCB | Notes |
|---|---|---|---|
| LEDs ×64 | Green 0402 | (any 0402 green) | Vf ≈ 2.1 V, ~10 mA each |
| Series R ×64 | 0402 300 Ω 1 % | C137885 | One per LED — independent fusing |
| USB-C J1 | TYPE-C-31-M-12 | C165948 | South-edge cantilever mount |
| CC pulldowns ×2 | 0402 5.1 kΩ 1 % | C25905 | Required for power-only USB-C handshake |
| Bulk cap | 0805 10 µF X5R | C15850 | VBUS inrush smoother |
| MC1–MC4 | Adom machine-pin medium | (Adom standard) | Workcell-fixturing only — no electrical role |

## Mechanical

- **Board** — 100 × 38 mm, 1.6 mm FR4, 2-layer.
- **Edges** — rounded (default `roundEdges={true}` on the molecule).
- **USB-C placement** — south edge centred, mouth cantilevered off
  the board for cable clearance.
- **Workcell pins** — MC1–MC4 at the four corners (Adom standard
  medium machine-pins). Mechanical-only; no electrical function.
- **Front silkscreen** — title bar above the LED letters, USB-C
  arrow callout, MC pin labels.
- **Back silkscreen** — full documentation panel: HOW TO POWER IT,
  HOW IT WORKS, BILL OF MATERIALS, HOW IT WAS BUILT, WORKCELL
  FIXTURING, IF A LED GOES DARK (repair notes), and footer credits.
  Bake the board surface at **4096 px** to read the dense back-side
  text at zoom (`--texture-resolution 4096`).

## Source layout

```
Camille-LED-Nameplate/
├── lib/
│   ├── index.tsx            ← FONT + LED matrix + USB-C wiring
│   └── UsbCReceptacle.tsx   ← TYPE-C-31-M-12 wrapper
├── package.json
├── tscircuit.config.json    ← displayName + entrypoint
├── tsconfig.json
├── walkthrough.json         ← auto-generated guided tour
└── plan.md                  ← design brief (this page mirrors it)
```

## Build commands

```bash
cd adom-tsci-projects/Camille-LED-Nameplate

# Install deps (only on a fresh checkout)
bun install

# Build (writes dist/lib/index/{3d.glb,pcb.svg,schematic.svg,...})
bunx tsci build lib/index.tsx --glbs --svgs --3d-png --pcb-png

# Preview interactively, with the 4096-px board texture for legible silkscreen
adom-tsci start . --port 8863 --tsci-port 3063 --texture-resolution 4096

# Publish updated viewer + source bundle to this wiki page
adom-tsci export-wiki . \
  --slug camille-led-nameplate \
  --page-type molecules \
  --label "Live 3D viewer" \
  --texture-resolution 4096
```

## Color options / variants

The LED color and series-resistor value are single-constant changes
in `lib/index.tsx`:

```tsx
const R_VALUE = "300"     // bump to ~470 Ω if you want a dimmer (~6 mA) version
const LED_COLOR = "green" // "red" | "yellow" | "blue" | "white" | "pink" | ...
```

Different name? `TEXT = "CAMILLE"` is also a single constant — swap
it for any 7-or-fewer-letter name. For different lengths, also bump
`BOARD_W` proportionally. This template was forked from the Brianna
nameplate by doing exactly that.

## Known issues / lessons learned

- **VBUS / GND fragmentation by autorouter** — tscircuit's autorouter
  splits VBUS and GND into many tiny per-LED nets, so the Nets HUD
  x-ray glow on a single net is short. An explicit unified rail in
  `lib/index.tsx` would make the glow span the whole board.
- **0402 vs 0603 trade-off** — Adom's house default is 0402 (InstaPCB
  respin replaces hand-rework); LEDs at 0402 read as crisp pixels at
  3 mm pitch. 0603 is also fine for this board if you'd rather
  hand-prototype.
- **No power LED** — deliberately omitted. The seven CAMILLE letters
  themselves are the power indicator: lit means 5 V is connected.

## Build provenance

- **Author** — John Lauer (`john@adom.inc`)
- **Tooling** — `adom-tsci` + `tscircuit` 0.1.1317; molecule wrapper
  `@tsci/adom-inc.molecule` 1.1.15; Adom InstaPCB-friendly 0402
  passives.
- **Walkthrough** — auto-generated by `adom-tsci walkthrough-gen`
  from `circuit.json`. Re-run after any edit to `lib/index.tsx`.
- **Date** — 2026-05-07. Designed by Adom in Fort Worth, Texas.

## Files attached

**Source — recreate the molecule**

- `plan.md` — original design brief + refinements
- `camille-led-nameplate-source.tar.gz` — full project (lib/,
  package.json, walkthrough.json, plan.md)

**Build outputs**

- `3d.glb` — board GLB (4096-px baked board surface)
- `pcb.svg` — top-layer SVG
- `schematic.svg` — schematic SVG
