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
FONTconst inlib/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
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:
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.tsxwould 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 (
[email protected]) - Tooling โ
adom-tsci+tscircuit0.1.1317; molecule wrapper@tsci/adom-inc.molecule1.1.15; Adom InstaPCB-friendly 0402 passives. - Walkthrough โ auto-generated by
adom-tsci walkthrough-genfromcircuit.json. Re-run after any edit tolib/index.tsx. - Date โ 2026-05-07. Designed by Adom in Fort Worth, Texas.
Files attached
Source โ recreate the molecule
plan.mdโ original design brief + refinementscamille-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 SVGschematic.svgโ schematic SVG