Propose a change
Name Last commit message Last updated
js Publish BRYAN LED nameplate molecule: source, renders, interactive 3D viewer 1mo ago
viewer Restore readme.html + viewer bundle (repro for Colby: blob octet-stream forces download / blocks viewer) 1mo ago
3d.glb In-plane 180 spin about measured board normal (Y) so BRYAN reads upright, B on the left; stays face up 1mo ago
3d.png Publish BRYAN LED nameplate molecule: source, renders, interactive 3D viewer 1mo ago
adom.css Publish BRYAN LED nameplate molecule: source, renders, interactive 3D viewer 1mo ago
bryan-led-nameplate-source.tar.gz Publish BRYAN LED nameplate molecule: source, renders, interactive 3D viewer 1mo ago
circuit.json Publish BRYAN LED nameplate molecule: source, renders, interactive 3D viewer 1mo ago
favicon.svg Publish BRYAN LED nameplate molecule: source, renders, interactive 3D viewer 1mo ago
index.html Publish BRYAN LED nameplate molecule: source, renders, interactive 3D viewer 1mo ago
page.json Update page: bryan-led-nameplate 1mo ago
pcb.png Publish BRYAN LED nameplate molecule: source, renders, interactive 3D viewer 1mo ago
pcb.svg Publish BRYAN LED nameplate molecule: source, renders, interactive 3D viewer 1mo ago
plan.md Publish BRYAN LED nameplate molecule: source, renders, interactive 3D viewer 1mo ago
readme.html Restore readme.html + viewer bundle (repro for Colby: blob octet-stream forces download / blocks viewer) 1mo ago
README.md Inline rasterized schematic (works around svg blob-mime bug); reword 3D viewer section (iframe stripped by sanitizer) 1mo ago
schematic.png Inline rasterized schematic (works around svg blob-mime bug); reword 3D viewer section (iframe stripped by sanitizer) 1mo ago
schematic.svg Publish BRYAN LED nameplate molecule: source, renders, interactive 3D viewer 1mo ago
walkthrough.json Publish BRYAN LED nameplate molecule: source, renders, interactive 3D viewer 1mo ago

Bryan LED Nameplate

A USB-C-powered desk nameplate that spells BRYAN in 56 individual white LEDs — each letter physically drawn out of the lights. Plug any iPhone USB-C charger into the east edge and the whole name lights up. No microcontroller, no firmware, no setup. Built as an Adom molecule so it fixtures into the standard workcell via four corner machine-contact pins.

For AI handoff: this page is the canonical writeup. Everything needed to continue work — circuit decisions, BOM, build commands, file layout, known issues — is here. Source lives on the container at /home/adom/project/bryan-led-nameplate/.

Live 3D viewer

The 3D Model viewer at the top of this page is the full interactive board — orbit with the mouse, zoom, and inspect the assembled molecule. A standalone copy of the adom-tsci viewer (with the Walkthrough Demo, Components / Nets HUDs, and Inspect / Measure tools) is bundled in the repo at index.html — open it directly for the full toolset.

Assembled board — isometric render

How it works

Each letter is a 5-row dot-matrix of LEDs — one <led> per lit pixel of the B-R-Y-A-N bitmap. The font is a small bitmap embedded in lib/index.tsx as a FONT const; the renderer walks each glyph's pixels and emits one LED + one series resistor per lit pixel, laid out on a 3.7 mm × 4.6 mm grid.

Every LED has its own 180 Ω current-limiting resistor in series, co-located just below it so the anode trace stays ~2 mm short. That keeps the space between letters free for VBUS/GND distribution and gives the autorouter a clean board. All LED+resistor pairs are wired in parallel between VBUS and GND, so a single open LED never darkens its neighbours.

The letters themselves are the power indicator — glowing means 5 V is present. There is no separate status LED.

PCB layout — top + bottom

The schematic mirrors the same grid — each cell is VBUS → 180 Ω → white LED → GND, with the USB-C receptacle, the two 5.1 kΩ CC pull-downs, and the decoupling caps below the array:

Schematic — BRYAN LED grid

Hardware summary

Block Part JLCPCB Notes
LEDs white 0402 × 56 one per lit pixel of the BRYAN bitmap; Vf ≈ 3.2 V
Resistors 180 Ω 0402 × 56 one per LED, sets ~10 mA at 5 V
USB-C receptacle TYPE-C-31-M-12 C165948 east edge, mouth cantilevered off the board
CC pull-downs 5.1 kΩ 0402 × 2 required for a USB-C source to deliver 5 V
Decoupling 10 µF 0603 + 4.7 µF 0402 smooths inrush as all 56 LEDs light together
Workcell pins 4 × machine contact at corners MP1/MP3 = GND, MP2/MP4 = VBUS

Power budget: 56 LEDs × (5 V − 3.2 Vf)/180 Ω ≈ 10 mA each ≈ 0.56 A @ 5 V (~2.8 W) — comfortably inside any modern iPhone USB-C brick (20 W), and fine even on a legacy 5 W (1 A) adapter.

Mechanical

  • Board: 128 × 58 mm, FR4, 2-layer, absolute-sized molecule (round edges off so the large corner pins fit).
  • USB-C: east edge at pcbX = W/2 − 4 per the adom-usbc rule — SMT pads ~6.5 mm inside the edge, plated anchor holes clear of the edge, and only the plastic body/mouth cantilevers ~2.5 mm proud so a cable seats.
  • Workcell-ready: four corner machine-contact pins (MachinePinLargeStandard) wired to power, so the assembly cell can light the board up by its corners.
  • Silkscreen: "BRYAN" caption above the letters, a USB-C power note by the connector, MP1–MP4 corner net labels, and a bottom-side dedication.

KiCad 3D models

Exported to KiCad with a (model …) reference injected for all 121 footprints (tscircuit's KiCad export omits them):

Component Model
LEDs / resistors / caps KiCad standard library (LED_SMD, Resistor_SMD, Capacitor_SMD)
USB-C (J1) Connector_USB/USB_C_Receptacle_HRO_TYPE-C-31-M-12 — shipped as a sidecar STEP because it isn't in the stock packages3D distribution
Machine pins Adom MachinePinLargeStandard.step (sidecar)

Note: the HRO USB-C STEP is missing from a stock KiCad install's packages3D, so a ${KICAD*_3DMODEL_DIR}/… reference renders an invisible connector. Ship the STEP alongside the board and use a relative ./ model path.

Source layout

bryan-led-nameplate/
  lib/
    index.tsx              ← board source — FONT bitmap, layout, traces
    UsbCReceptacle.tsx     ← TYPE-C-31-M-12 wrapper with rotation-aware cadModel
  package.json
  tscircuit.config.json
  tsconfig.json
  walkthrough.json         ← Walkthrough Demo steps (auto-generated)
  plan.md                  ← design brief
  .npmrc
  dist/lib/index/          ← build output (circuit.json, 3d.glb, pcb.svg, schematic.svg)

Build commands

cd bryan-led-nameplate
bun install                                            # once
bunx tsci build lib/index.tsx --glbs --svgs --3d-png --pcb-png
adom-tsci lint                                         # geometry + routing checks
adom-tsci start .                                      # interactive preview

Color options

Rendered in white. Any color works with the same circuit (swap the LED part and retune the resistor for the new Vf):

Color LED Vf Suggested R @ 10 mA
Red ~2.0 V 300 Ω
Green ~2.1 V 270 Ω
Blue ~3.0 V 180 Ω
White (current) ~3.2 V 180 Ω

Edit the <led color=…> and resistor value in lib/index.tsx, rebuild, re-export.

How to power it

  1. Grab any USB-C cable — phone charger, laptop, USB-C wall wart.
  2. Plug it into the east edge of the board.
  3. Plug the other end into a 5 V USB-C source.
  4. BRYAN lights up.

Known issues / lessons learned

  • USB-C GND pad clearance: the two end GND pads of the TYPE-C-31-M-12 footprint sit 0.3 mm apart, which trips a 0 mm pad-clearance DRC note. Both are GND (same net), so it's electrically harmless — inherent to the connector footprint.
  • Schematic machine-pin pile: <Molecule> emits MP1–MP4 at the schematic origin and they can't be placed from the board source, so a schematic-overlap lint flag is expected. Cosmetic only; the PCB is unaffected.

Talk to the AI

  • Open / view: "Open the live 3D viewer", "show the BRYAN board in 3D", "open the PCB view"
  • Inspect: "Click any chip to see refdes + footprint", "measure pin to pin"
  • Run: "Run the Walkthrough Demo", "re-run the autorouter"
  • Fab: "export the gerbers", "open this in KiCad", "run DRC"

Files attached

Source — recreate the molecule:

Build outputs:

Build provenance

Built with adom-tsci, Adom's tscircuit board viewer. Walkthrough auto-generated from circuit.json.

Designed by Adom in Fort Worth, Texas.