Evan — Adom Molecule LED Nameplate
Public Made by Adomby adom
Evan's name in 66 green 0603 LEDs on a 5x7 dot-matrix grid, USB-C powered off the east edge. A real Adom molecule: four corner machine pins, 96x44 mm absolute, every part from the Adom Basic Parts catalog.
23c1d5e
2mo ago
Plan — Evan's LED Nameplate
Original prompt
can you make a nameplate for Evan with 0603 led's where you spell out Evan's name, cuz he's always wanted his name in lights. put a usbc connector on the right side so he can plug it into his iphone charger. use adom-tsci.
Refinements during the build
- Font. The first pass used the 3 × 5 bitmap font inherited from the BRIANNA nameplate. At three columns wide the N degenerates into a filled blob that reads as H or M. Moved to a proper 5 × 7 dot-matrix font so the N gets a real diagonal, walking column 1 to 2 to 3 down the glyph, and the V gets a real point. 66 LEDs instead of 42.
- USB-C. The first pass used the BRIANNA-era
UsbCReceptacle.tsx, whose footprint puts anchor holes on both sides of the pad row. Replaced with the corrected wrapper fromadom/alex-nameplate(2026-08-07), which keeps all holes on the mouth side under the shell, then re-derived the body offset. See below. - Parts. Every line of the BOM is now an Adom Basic Part carrying its real MPN, not a generic tscircuit footprint.
The USB-C body offset fix
The upstream wrapper's BODY_FORWARD_MAG = 2.5034 left the shell
floating 2.09 mm forward of its own pad row and hanging 2.5 mm off the
board edge. The cause is that tscircuit anchors cadModel.positionOffset
at pcb_component.center, the bounding box of pads and holes, rather
than at the pad row. Every hole in this footprint sits on the mouth side,
so that centre is 2.7366 mm forward of the pads and the offset inherits
the error. adom-tsci lint does not catch it, because it derives the
mouth vector from cad.rotation.z and the error cancels out of the
check.
Re-derived in lib/UsbCReceptacle.tsx as
BODY_FORWARD_MAG = MODEL_ORIGIN_TO_BACK − FOOTPRINT_CENTER_FROM_PADS
USB_C_MOUTH_FROM_PADS = MODEL_ORIGIN_TO_BACK + MODEL_ORIGIN_TO_MOUTH
with the model numbers measured off the J1 node of a built 3d.glb, the
artifact that actually gets rendered, so it cannot disagree with what you
see. The result: shell back face exactly on the pad row, mouth 0.4 mm
proud of the board edge, easternmost copper 1.68 mm inside it.
scripts/check-usbc.mjs re-runs that measurement against the GLB and
fails the build if either lands outside tolerance. Run it after any
change to the receptacle or the board size.
Hardware decisions
- 66 green 0603 LEDs,
IN-S63BTGfrom Inolux: InGaN 527 nm, Vf 3.2 V typ at 20 mA, 560 mcd, 25 mA max. One per lit pixel of a 5 × 7 bitmap of "EVAN". - 330 Ω 0402 per LED,
CR0402-FX-3300GLF. (5 − 3.0) / 330 works out to about 6 mA each, so 66 LEDs draw roughly 400 mA total at 2.0 W, inside what a source advertising Default USB Power will hand out. These are bright parts, so 6 mA is a comfortable desk brightness rather than a dim one. - USB-C
TYPE-C-31-M-12(LCSC C165948) on the east edge, mouth 0.4 mm proud so any cable seats. Adom part page:wiki.adom.inc/adom/type-c-31-m-12. - 4.7 kΩ CC pulldowns, two of them,
CR0402-FX-4701GLF. Rd tells the charger to enable VBUS. 4K7 rather than 5K1 because that is the Adom stocked value, it sits inside the spec's tolerance band, and it is whatadom/alex-nameplatealready ships. - 10 µF 0805 bulk plus 100 nF 0402 HF,
CL21A106KOQNNNGand0402B104J160CT, for inrush when 66 LEDs light at once. - 96 × 44 mm 4-pin molecule,
MachinePinMediumStandard, absolute sizing so the real outer edge is 96.4 × 44.4 with the nominal wing. The USB-C needs a known edge to work back from.
Layout notes
- Resistors sit 1.65 mm below their LED. That exact offset is load
bearing: at 1.5, 1.55 or 1.6 mm the autorouter puts a via inside a
pad's clearance, 0.053 to 0.083 mm against a 0.1 mm minimum. 1.65 mm
routes clean. If you change the pitch, the board size, or the part
placement, sweep this again and re-check
circuit.jsonforpcb_pad_pad_clearance_error. - The east 16 mm or so is reserved for J1 and its support parts, so the letters sit left of centre rather than centred on the board.
Out of scope (deliberate)
- No microcontroller, no firmware, no animation, no PWM. It lights up when you plug it in.
- No power LED. The letters are the power indicator.
- No ground pour. Each LED is fed by its own resistor and returns through autorouted GND, so one LED dying does not affect the others.
Build and preview
cd ~/project/evan-led-nameplate
bun install
bunx tsci build lib/index.tsx --glbs --svgs --3d-png --pcb-png
node scripts/check-usbc.mjs # USB-C geometry, measured off the GLB
adom-tsci lint # DRC, routing, schematic overlap
adom-tsci start . --texture-resolution 4096
adom-tsci stop # when done, so tsci dev processes do not leak
Future work
- Different name.
TEXTplus the glyphs inFONTare the whole design. A different four-letter name is a one-line change. A longer one needsBOARD_Wgrown to keep the 16 mm USB-C reservation. - Different colour. Swap
LED_MPNfor another Adom 0603 LED (IN-S63BTAamber,IN-S63BT5Bblue,IN-S63BTRred,IN-S63BT5UWwhite) and re-deriveR_VALUEfor that part's forward voltage. Red and amber are roughly 2.0 V parts, so they want about 470 Ω, not 330 Ω. - Fab. Not quoted yet.
adom-tsci export --format kicad-ziporgerbersproduces the fab package. - Wiki page. Published as a molecule alongside the rest of the
nameplate family at
wiki.adom.inc/adom/evan-led-nameplate.
# Plan — Evan's LED Nameplate
## Original prompt
> can you make a nameplate for Evan with 0603 led's where you spell out
> Evan's name, cuz he's always wanted his name in lights. put a usbc
> connector on the right side so he can plug it into his iphone charger.
> use adom-tsci.
## Refinements during the build
- **Font.** The first pass used the 3 × 5 bitmap font inherited from the
BRIANNA nameplate. At three columns wide the N degenerates into a
filled blob that reads as H or M. Moved to a proper 5 × 7 dot-matrix
font so the N gets a real diagonal, walking column 1 to 2 to 3 down
the glyph, and the V gets a real point. 66 LEDs instead of 42.
- **USB-C.** The first pass used the BRIANNA-era `UsbCReceptacle.tsx`,
whose footprint puts anchor holes on both sides of the pad row.
Replaced with the corrected wrapper from `adom/alex-nameplate`
(2026-08-07), which keeps all holes on the mouth side under the shell,
then re-derived the body offset. See below.
- **Parts.** Every line of the BOM is now an Adom Basic Part carrying its
real MPN, not a generic tscircuit footprint.
## The USB-C body offset fix
The upstream wrapper's `BODY_FORWARD_MAG = 2.5034` left the shell
floating 2.09 mm forward of its own pad row and hanging 2.5 mm off the
board edge. The cause is that tscircuit anchors `cadModel.positionOffset`
at `pcb_component.center`, the bounding box of pads **and** holes, rather
than at the pad row. Every hole in this footprint sits on the mouth side,
so that centre is 2.7366 mm forward of the pads and the offset inherits
the error. `adom-tsci lint` does not catch it, because it derives the
mouth vector from `cad.rotation.z` and the error cancels out of the
check.
Re-derived in `lib/UsbCReceptacle.tsx` as
```
BODY_FORWARD_MAG = MODEL_ORIGIN_TO_BACK − FOOTPRINT_CENTER_FROM_PADS
USB_C_MOUTH_FROM_PADS = MODEL_ORIGIN_TO_BACK + MODEL_ORIGIN_TO_MOUTH
```
with the model numbers measured off the J1 node of a built `3d.glb`, the
artifact that actually gets rendered, so it cannot disagree with what you
see. The result: shell back face exactly on the pad row, mouth 0.4 mm
proud of the board edge, easternmost copper 1.68 mm inside it.
`scripts/check-usbc.mjs` re-runs that measurement against the GLB and
fails the build if either lands outside tolerance. Run it after any
change to the receptacle or the board size.
## Hardware decisions
- **66 green 0603 LEDs**, `IN-S63BTG` from Inolux: InGaN 527 nm, Vf
3.2 V typ at 20 mA, 560 mcd, 25 mA max. One per lit pixel of a 5 × 7
bitmap of "EVAN".
- **330 Ω 0402 per LED**, `CR0402-FX-3300GLF`. (5 − 3.0) / 330 works out
to about 6 mA each, so 66 LEDs draw roughly 400 mA total at 2.0 W,
inside what a source advertising Default USB Power will hand out.
These are bright parts, so 6 mA is a comfortable desk brightness
rather than a dim one.
- **USB-C `TYPE-C-31-M-12`** (LCSC C165948) on the east edge, mouth
0.4 mm proud so any cable seats. Adom part page:
`wiki.adom.inc/adom/type-c-31-m-12`.
- **4.7 kΩ CC pulldowns, two of them**, `CR0402-FX-4701GLF`. Rd tells the
charger to enable VBUS. 4K7 rather than 5K1 because that is the Adom
stocked value, it sits inside the spec's tolerance band, and it is what
`adom/alex-nameplate` already ships.
- **10 µF 0805 bulk plus 100 nF 0402 HF**, `CL21A106KOQNNNG` and
`0402B104J160CT`, for inrush when 66 LEDs light at once.
- **96 × 44 mm 4-pin molecule**, `MachinePinMediumStandard`, absolute
sizing so the real outer edge is 96.4 × 44.4 with the nominal wing.
The USB-C needs a known edge to work back from.
## Layout notes
- Resistors sit 1.65 mm below their LED. That exact offset is load
bearing: at 1.5, 1.55 or 1.6 mm the autorouter puts a via inside a
pad's clearance, 0.053 to 0.083 mm against a 0.1 mm minimum. 1.65 mm
routes clean. If you change the pitch, the board size, or the part
placement, sweep this again and re-check `circuit.json` for
`pcb_pad_pad_clearance_error`.
- The east 16 mm or so is reserved for J1 and its support parts, so the
letters sit left of centre rather than centred on the board.
## Out of scope (deliberate)
- No microcontroller, no firmware, no animation, no PWM. It lights up
when you plug it in.
- No power LED. The letters are the power indicator.
- No ground pour. Each LED is fed by its own resistor and returns
through autorouted GND, so one LED dying does not affect the others.
## Build and preview
```bash
cd ~/project/evan-led-nameplate
bun install
bunx tsci build lib/index.tsx --glbs --svgs --3d-png --pcb-png
node scripts/check-usbc.mjs # USB-C geometry, measured off the GLB
adom-tsci lint # DRC, routing, schematic overlap
adom-tsci start . --texture-resolution 4096
adom-tsci stop # when done, so tsci dev processes do not leak
```
## Future work
- **Different name.** `TEXT` plus the glyphs in `FONT` are the whole
design. A different four-letter name is a one-line change. A longer one
needs `BOARD_W` grown to keep the 16 mm USB-C reservation.
- **Different colour.** Swap `LED_MPN` for another Adom 0603 LED
(`IN-S63BTA` amber, `IN-S63BT5B` blue, `IN-S63BTR` red,
`IN-S63BT5UW` white) and re-derive `R_VALUE` for that part's forward
voltage. Red and amber are roughly 2.0 V parts, so they want about
470 Ω, not 330 Ω.
- **Fab.** Not quoted yet. `adom-tsci export --format kicad-zip` or
`gerbers` produces the fab package.
- **Wiki page.** Published as a molecule alongside the rest of the
nameplate family at `wiki.adom.inc/adom/evan-led-nameplate`.