Propose a change
Name Last commit message Last updated
3d.glb Migrate asset from Helium wiki 1mo ago
3d.png Migrate asset from Helium wiki 1mo ago
camille-led-nameplate-source.tar.gz Migrate asset from Helium wiki 1mo ago
index.html Migrate asset from Helium wiki 1mo ago
page.json Remove internal identifiers from page.json 10d ago
pcb.png Migrate asset from Helium wiki 1mo ago
pcb.svg Migrate asset from Helium wiki 1mo ago
plan.md Migrate asset from Helium wiki 1mo ago
README.md Initial commit: component/camille-led-nameplate 1mo ago
schematic.svg Migrate asset from Helium wiki 1mo ago

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

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.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 ([email protected])
  • Toolingadom-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