LUME Hardware — CAD
> Current-doc warning, 2026-04-30: parts of this README still describe the earlier Jetson/SVPro in-bar architecture. The active build is documented in `LUME_CURRENT_BUILD_SPEC.md` and `PRINT_APPROVAL_QUEUE_CURRENT.md`: K11 rear pod, ZHAOCAILIN top display cradle, centered Femto Mega, and Arducam IMX586 auxiliary camera.
Full Public Reader
LUME Hardware — CAD
> Current-doc warning, 2026-04-30: parts of this README still describe the earlier Jetson/SVPro in-bar architecture. The active build is documented in `LUME_CURRENT_BUILD_SPEC.md` and `PRINT_APPROVAL_QUEUE_CURRENT.md`: K11 rear pod, ZHAOCAILIN top display cradle, centered Femto Mega, and Arducam IMX586 auxiliary camera.
Parametric OpenSCAD source for the LUME v1 soundbar enclosure.
File map
| File | Purpose |
|---|---|
| `lume-config.scad` | Global dimensions, component footprints, toggles. Edit here first. |
| `lume-primitives.scad` | Reusable helpers: `rbox`, `cchamfer`, `hex_grille`, `slot_grille`, `lens_cutout`, `insert_boss`, `insert_boss_gusseted`, `bolt_m3_counterbore`, `rib`, `cable_clip`, `strain_relief`, `lip_tongue`/`lip_groove`. |
| `lume-components.scad` | Proxy volumes for Jetson, Femto Mega, UMA-8, Noctua fan, SVPRO, NeoPixel ring. Swap with vendor STEPs when available. |
| `lume-shell.scad` | Exterior shell. Front/rear cutouts, interior ribs, gusseted corner bolt bosses, split halves (`lume_shell_front` / `lume_shell_rear`). |
| `lume-internals.scad` | Jetson sled (96×96 pattern + heat-set bosses), Noctua fan shroud, thermal baffle, Femto bracket, SVPRO brackets (L+R), UMA-8 mic rail, cable backbone, port bracket anchor posts. |
| `lume-bezel.scad` | Separate printable front bezel insert + blank camera plug (for v1 demo rigs using only 2 cameras). |
| `lume-port-bracket.scad` | Rear port bracket with labeled cutouts: HDMI, USB-A ×2, Ethernet. Screws to interior-rear via 4 corner bolts. |
| `lume-vesa.scad` | VESA 100×100 plate or French cleat (bar-side + wall-side). |
| `lume-main.scad` | Top-level assembly. Shell + internals + proxies + bezel + diffuser + port bracket + VESA. Exploded view supported. |
| `render.sh` | Headless render pipeline. |
Workflow
GUI (interactive)
open /Applications/OpenSCAD.app lume-main.scad
# F5 = preview, F6 = render (slow, for STL quality check)Headless
./render.sh preview # all PNGs to exports/
./render.sh stl # all STLs to exports/
./render.sh all # both
./render.sh clean # wipe exports/Views (lume-main.scad)
Set `VIEW` variable or pass `-D VIEW="..."` to OpenSCAD:
- `assembly` — shell ghosted, internals + components solid
- `shell_only` — just the assembled shell
- `print_front` / `print_rear` — isolate each half for slicer
Pass `-D EXPLODED=true` with `assembly` to offset parts along Y for exploded-view docs.
Iteration loop
1. Edit `lume-config.scad` (or any module)
2. `./render.sh preview` (fast, ~1 min total)
3. Check `exports/assembly.png` + `exports/exploded.png`
4. When fit looks right: `./render.sh stl`
5. Slice in Cura / PrusaSlicer → print
Print plan (9 printable parts)
| Part | STL | Print time (est.) | Material |
|---|---|---|---|
| Shell front half | `shell_front.stl` | ~24h | ASA grey |
| Shell rear half | `shell_rear.stl` | ~20h | ASA grey |
| Front bezel insert | `bezel.stl` | ~4h | ASA grey (or black for contrast) |
| Camera blank plug (v1 demo) | `cam_plug.stl` | ~20min | ASA grey |
| Rear port bracket | `port_bracket.stl` | ~1h | ASA grey |
| LED diffuser | export from `lume-internals.scad` `led_diffuser()` | ~1h | clear PETG |
| VESA plate | `vesa_plate.stl` | ~3h | ASA or PETG |
| French cleat (bar) | `cleat_bar.stl` | ~3h | ASA |
| French cleat (wall) | `cleat_wall.stl` | ~3h | ASA or PETG |
All shell parts fit within the Neptune 4 Max build volume (420×420×480). Bond shell halves with M3×20 bolts through the 4 gusseted corner insert bosses. Print orientation: shell halves on their flat split face (prints open-side-up, no supports needed for interior).
Thermal airflow
- Intake: passive hex-perforated slots on the bottom face (`INTAKE_X_LEFT`, `INTAKE_X_RIGHT`)
- Hot zone: left 180mm of interior (Jetson + Noctua fan + PSU)
- Cold zone: right 320mm (Femto Mega + UMA-8 mic + SVPRO cameras + LED ring)
- Thermal baffle at `BAFFLE_X` separates zones — protects Femto IR sensor from warm air and keeps UMA-8 out of fan turbulence
- Exhaust: Noctua NF-A8 pushes through the rear slot grille at `VENT_X` behind the Jetson heatsink
Material
- Shell + internals: Polymaker ASA, dark grey (color "114", hex #8d8e92). Grey filament is the best sanding indicator since the shell is painted/coated post-print.
- LED diffuser: clear PETG (translucent, prints cleanly, UV-stable)
- Finish: filler primer → wet sand 320 → satin black spray → optional Wheeler Cerama-Coat for matte appliance feel
Heat-set inserts
All fastener bosses are sized for M3 knurled heat-set inserts (4.5mm OD, 6mm deep). Press with a soldering iron set to 220–240°C. Use the `INSERT_BOSS_OD=6.5` bosses — gusseted variants (`insert_boss_gusseted`) are used at the 4 corner locations where front/rear halves bond.
Component reference CAD (drop STEP files here)
references/
jetson-agx-orin-devkit.step
orbbec-femto-mega.step
minidsp-uma8-v2.step
noctua-nf-a8.step
svpro-imx577.stepOnce populated, swap `proxy_*` calls in `lume-components.scad` with `import()` of the real STEPs for precise fit validation.
Known design decisions (open for revision)
1. Wordmark: currently recessed 1.2mm paint-fill. Alternative: laser-etch post-print.
2. Right camera: blank plug in v1 demo (Femto Mega + left SVPRO is enough for depth + RGB overlay). Upgrade to full stereo later.
3. LED count: 24 NeoPixels (fits 52mm ID diffuser). 36 would require larger ring OD.
4. Power: DC barrel jack. Alternative: USB-C PD with Jetson PD controller board.
5. Mount: VESA 100×100 default. French cleat variant available for tool-free demo relocations.
Joinery option
The split plane can optionally use a tongue-and-groove lip (`USE_JOINERY=true` in `lume-config.scad`). Off by default — the 4 corner bolts alone are sufficient, and joinery requires careful clearance tuning per-printer. Enable once you have a calibration print to measure lip fit.
Promotion Decision
Attach run IDs, datasets, metrics, and reproduction commands.
Source Anchor
lume-commerce/hardware/cad/README.md
Detected Structure
Method · Evaluation · References · Architecture