muse/book-reading-clip-lamp
A Wi‑Fi/USB‑C ESP32‑S3 reading lamp with OV5640 camera, microphone, speaker amplifier, rechargeable Li‑Po power management, six-LED boost light, USB protection/charging detection, and a clip/gooseneck enclosure with external FlexPIFA antenna.
- Version
- 0.4.3
- License
- unset
- Stars
- 0
mechanical/parts.json
[
{
"id": "rear-housing",
"label": "Rear housing · flat back",
"color": [
0.12,
0.17,
0.18
],
"printable": true,
"group": "rear",
"explode": [
0,
0,
26
],
"note": "Uniform back at Z=15.5 mm with a 2 mm roof; internal antenna and JST clearance. Three M2 x 16 screws enter through recessed rear wells; extended PCB/tray posts, Light plunger and indicator pipes.",
"glb": "rear-housing.glb",
"stl": "rear-housing.stl"
},
{
"id": "front-bezel",
"label": "Front bezel · no external screw holes",
"color": [
0.2,
0.27,
0.27
],
"printable": true,
"group": "front",
"explode": [
0,
0,
-25
],
"note": "Blind internal case-screw bosses; 0.8 mm shallower face; unchanged camera saddle, six LED windows and isolated microphone duct",
"glb": "front-bezel.glb",
"stl": "front-bezel.stl"
},
{
"id": "head-case-screw-1",
"label": "Rear case screw 1 · M2 x 16",
"color": [
0.65,
0.68,
0.7
],
"printable": false,
"group": "hardware",
"explode": [
0,
0,
46
],
"note": "Purchased screw reference; 4 mm head, 1.6 mm height; threaded core only inside blind pilot. Verify actual fastener dimensions and printed fit.",
"glb": "head-case-screw-1.glb"
},
{
"id": "head-case-screw-2",
"label": "Rear case screw 2 · M2 x 16",
"color": [
0.65,
0.68,
0.7
],
"printable": false,
"group": "hardware",
"explode": [
0,
0,
46
],
"note": "Purchased screw reference; 4 mm head, 1.6 mm height; threaded core only inside blind pilot. Verify actual fastener dimensions and printed fit.",
"glb": "head-case-screw-2.glb"
},
{
"id": "head-case-screw-3",
"label": "Rear case screw 3 · M2 x 16",
"color": [
0.65,
0.68,
0.7
],
"printable": false,
"group": "hardware",
"explode": [
0,
0,
46
],
"note": "Purchased screw reference; 4 mm head, 1.6 mm height; threaded core only inside blind pilot. Verify actual fastener dimensions and printed fit.",
"glb": "head-case-screw-3.glb"
},
{
"id": "pcb-mount-screw-1",
"label": "PCB screw 1 · M3 x 6",
"color": [
0.65,
0.68,
0.7
],
"printable": false,
"group": "hardware",
"explode": [
0,
0,
-12
],
"note": "Internal M3 x 6 button-head screw, maximum head 5.7 x 1.65 mm. Tap the 2.5 mm blind printed pilot M3; install before front bezel. Sample-fit and torque qualification required.",
"glb": "pcb-mount-screw-1.glb"
},
{
"id": "pcb-mount-screw-2",
"label": "PCB screw 2 · M3 x 6",
"color": [
0.65,
0.68,
0.7
],
"printable": false,
"group": "hardware",
"explode": [
0,
0,
-12
],
"note": "Internal M3 x 6 button-head screw, maximum head 5.7 x 1.65 mm. Tap the 2.5 mm blind printed pilot M3; install before front bezel. Sample-fit and torque qualification required.",
"glb": "pcb-mount-screw-2.glb"
},
{
"id": "pcb-mount-screw-3",
"label": "PCB screw 3 · M3 x 6",
"color": [
0.65,
0.68,
0.7
],
"printable": false,
"group": "hardware",
"explode": [
0,
0,
-12
],
"note": "Internal M3 x 6 button-head screw, maximum head 5.7 x 1.65 mm. Tap the 2.5 mm blind printed pilot M3; install before front bezel. Sample-fit and torque qualification required.",
"glb": "pcb-mount-screw-3.glb"
},
{
"id": "pcb-mount-screw-4",
"label": "PCB screw 4 · M3 x 6",
"color": [
0.65,
0.68,
0.7
],
"printable": false,
"group": "hardware",
"explode": [
0,
0,
-12
],
"note": "Internal M3 x 6 button-head screw, maximum head 5.7 x 1.65 mm. Tap the 2.5 mm blind printed pilot M3; install before front bezel. Sample-fit and torque qualification required.",
"glb": "pcb-mount-screw-4.glb"
},
{
"id": "camera-retainer",
"label": "Camera retaining frame · open heatsink window",
"color": [
0.27,
0.35,
0.34
],
"printable": true,
"group": "optics",
"explode": [
0,
0,
-8
],
"note": "M2 x 4 screws; window clears the 7 x 6 mm heatsink base, frame retains the 8.5 mm module edge",
"glb": "camera-retainer.glb",
"stl": "camera-retainer.stl"
},
{
"id": "light-cap",
"label": "Light button cap",
"color": [
0.91,
0.79,
0.5
],
"printable": true,
"group": "controls",
"explode": [
0,
0,
38
],
"note": "Captured cap with sun icon; verify switch actuation after printing",
"glb": "light-cap.glb",
"stl": "light-cap.stl"
},
{
"id": "diffuser-1",
"label": "Light diffuser 1",
"color": [
0.97,
0.91,
0.72
],
"printable": true,
"group": "optics",
"explode": [
0,
0,
-32
],
"note": "Translucent insert retained by an internal flange; optical performance needs a print test",
"glb": "diffuser-1.glb",
"stl": "diffuser-1.stl"
},
{
"id": "diffuser-2",
"label": "Light diffuser 2",
"color": [
0.97,
0.91,
0.72
],
"printable": true,
"group": "optics",
"explode": [
0,
0,
-32
],
"note": "Translucent insert retained by an internal flange; optical performance needs a print test",
"glb": "diffuser-2.glb",
"stl": "diffuser-2.stl"
},
{
"id": "diffuser-3",
"label": "Light diffuser 3",
"color": [
0.97,
0.91,
0.72
],
"printable": true,
"group": "optics",
"explode": [
0,
0,
-32
],
"note": "Translucent insert retained by an internal flange; optical performance needs a print test",
"glb": "diffuser-3.glb",
"stl": "diffuser-3.stl"
},
{
"id": "diffuser-4",
"label": "Light diffuser 4",
"color": [
0.97,
0.91,
0.72
],
"printable": true,
"group": "optics",
"explode": [
0,
0,
-32
],
"note": "Translucent insert retained by an internal flange; optical performance needs a print test",
"glb": "diffuser-4.glb",
"stl": "diffuser-4.stl"
},
{
"id": "diffuser-5",
"label": "Light diffuser 5",
"color": [
0.97,
0.91,
0.72
],
"printable": true,
"group": "optics",
"explode": [
0,
0,
-32
],
"note": "Translucent insert retained by an internal flange; optical performance needs a print test",
"glb": "diffuser-5.glb",
"stl": "diffuser-5.stl"
},
{
"id": "diffuser-6",
"label": "Light diffuser 6",
"color": [
0.97,
0.91,
0.72
],
"printable": true,
"group": "optics",
"explode": [
0,
0,
-32
],
"note": "Translucent insert retained by an internal flange; optical performance needs a print test",
"glb": "diffuser-6.glb",
"stl": "diffuser-6.stl"
},
{
"id": "indicator-pipe-1",
"label": "Status light pipe",
"color": [
0.35,
0.83,
0.59
],
"printable": true,
"group": "controls",
"explode": [
0,
0,
28
],
"note": "Clear resin/light-pipe stock; flange seats under rear cover",
"glb": "indicator-pipe-1.glb",
"stl": "indicator-pipe-1.stl"
},
{
"id": "indicator-pipe-2",
"label": "Charging light pipe",
"color": [
1,
0.58,
0.2
],
"printable": true,
"group": "controls",
"explode": [
0,
0,
28
],
"note": "Clear resin/light-pipe stock; flange seats under rear cover",
"glb": "indicator-pipe-2.glb",
"stl": "indicator-pipe-2.stl"
},
{
"id": "camera-reference",
"label": "Seeed OV5640 · 8.5 mm autofocus module",
"color": [
0.15,
0.15,
0.16
],
"printable": false,
"multicolor": true,
"group": "reference",
"explode": [
0,
0,
-15
],
"note": "Seeed 114993115 / 8.5 x 8.5 x 5.4 mm published envelope; optical/barrel details approximate",
"glb": "camera-reference.glb"
},
{
"id": "camera-heatsink",
"label": "Seeed camera heatsink · 7 × 6 × 7 mm",
"color": [
0.14,
0.15,
0.17
],
"printable": false,
"group": "reference",
"explode": [
0,
0,
-8
],
"note": "Published overall size; four fins/base thickness are photo-based nominal details, not a heatsink drawing",
"glb": "camera-heatsink.glb"
},
{
"id": "camera-thermal-pad",
"label": "Camera thermal adhesive allowance",
"color": [
0.52,
0.72,
0.82
],
"printable": false,
"group": "reference",
"explode": [
0,
0,
-12
],
"note": "0.15 mm thickness allowance; measure supplied adhesive",
"glb": "camera-thermal-pad.glb"
},
{
"id": "camera-flex",
"label": "Seeed camera ribbon · two rounded folds",
"color": [
0.86,
0.52,
0.12
],
"printable": false,
"multicolor": true,
"group": "reference",
"explode": [
0,
0,
-5
],
"note": "62 mm edge-to-tip developed length (70.5 mm overall minus 8.5 mm camera); 6 mm flex, 12.5 mm 24-contact tongue; 2.415 mm nominal bend radius is unqualified",
"glb": "camera-flex.glb"
},
{
"id": "antenna-tray",
"label": "Removable antenna tray · 1.5 mm dielectric",
"color": [
0.27,
0.35,
0.34
],
"printable": true,
"group": "controls",
"explode": [
0,
0,
22
],
"note": "Print for fit; prefer 1.5 mm polycarbonate for RF samples. Peel-and-stick ANT1 first, then insert from open front of rear cup and secure two M1.6 x 3 screws before the PCB.",
"glb": "antenna-tray.glb",
"stl": "antenna-tray.stl"
},
{
"id": "antenna-tray-screw-1",
"label": "Internal antenna-tray screw · M1.6 x 3",
"color": [
0.65,
0.68,
0.7
],
"printable": false,
"group": "hardware",
"explode": [
0,
0,
-8
],
"note": "Head faces the PCB; install before PCB. 1.5 mm engagement in blind pilots. Verify purchased screw dimensions and printed pilot fit.",
"glb": "antenna-tray-screw-1.glb"
},
{
"id": "antenna-tray-screw-2",
"label": "Internal antenna-tray screw · M1.6 x 3",
"color": [
0.65,
0.68,
0.7
],
"printable": false,
"group": "hardware",
"explode": [
0,
0,
-8
],
"note": "Head faces the PCB; install before PCB. 1.5 mm engagement in blind pilots. Verify purchased screw dimensions and printed pilot fit.",
"glb": "antenna-tray-screw-2.glb"
},
{
"id": "wifi-antenna",
"label": "ANT1 · Ezurio 001-0014 FlexPIFA",
"color": [
0.91,
0.59,
0.14
],
"printable": false,
"multicolor": true,
"group": "reference",
"explode": [
0,
0,
34
],
"note": "40.12 × 11 × 2.5 mm dimensional reference. Adhesive face on the 1.5 mm dielectric shelf; radiator faces +Z. Antenna is purchased, not printed.",
"glb": "wifi-antenna.glb"
},
{
"id": "wifi-antenna-coax",
"label": "ANT1 · supplied coax and U.FL plug",
"color": [
0.08,
0.085,
0.09
],
"printable": false,
"multicolor": true,
"group": "reference",
"explode": [
0,
0,
18
],
"note": "Nominal 89 mm exposed route for the supplier's 100 mm overall assembly. 1.13 mm OD and 3 mm bend radius are packaging assumptions; measure the sample, retain slack with nonmetallic tape below the shelf.",
"glb": "wifi-antenna-coax.glb"
},
{
"id": "head-harness-plug",
"label": "J3 mating plug · JST XHP-8",
"group": "harness",
"color": [
0.91,
0.91,
0.85
],
"note": "Purchased polarized XHP-8 housing with SXH-001T-P0.6 contacts; dimensioned mating reference, verify sample fit",
"printable": false,
"explode": [
0,
0,
20
],
"multicolor": false,
"glb": "head-harness-plug.glb"
},
{
"id": "gooseneck",
"label": "Hollow flexible gooseneck · reference",
"group": "neck",
"color": [
0.14,
0.16,
0.17
],
"note": "244 mm centreline, 6 mm outside / 4 mm clear bore; purchase a load-rated flexible neck",
"printable": false,
"explode": [
0,
0,
0
],
"multicolor": false,
"glb": "gooseneck.glb"
},
{
"id": "clip-base-tray",
"label": "Battery base / upper clip jaw",
"group": "base",
"color": [
0.12,
0.17,
0.18
],
"note": "Protected pouch cavity, speaker supports and hinge ears; fit prototype",
"printable": true,
"explode": [
0,
0,
-20
],
"multicolor": false,
"glb": "clip-base-tray.glb",
"stl": "clip-base-tray.stl"
},
{
"id": "clip-base-lid",
"label": "Base lid / neck mount / speaker grille",
"group": "base",
"color": [
0.2,
0.27,
0.27
],
"note": "M2 case screws, Chat and power panel cutouts; no base PCB",
"printable": true,
"explode": [
0,
0,
25
],
"multicolor": false,
"glb": "clip-base-lid.glb",
"stl": "clip-base-lid.stl"
},
{
"id": "clip-lower-jaw",
"label": "Lower spring clip jaw",
"group": "base",
"color": [
0.12,
0.17,
0.18
],
"note": "Hinged jaw, shown open with 12.6 mm pad-to-pad gap",
"printable": true,
"explode": [
0,
0,
-38
],
"multicolor": false,
"glb": "clip-lower-jaw.glb",
"stl": "clip-lower-jaw.stl"
},
{
"id": "clip-upper-pad",
"label": "Upper silicone grip pad",
"group": "hardware",
"color": [
0.08,
0.1,
0.09
],
"note": "Cut or mold 1.2 mm elastomer, bonded to the upper jaw",
"printable": false,
"explode": [
0,
0,
-22
],
"multicolor": false,
"glb": "clip-upper-pad.glb"
},
{
"id": "clip-lower-pad",
"label": "Lower silicone grip pad",
"group": "hardware",
"color": [
0.08,
0.1,
0.09
],
"note": "Cut or mold 1.2 mm elastomer, bonded to the lower jaw",
"printable": false,
"explode": [
0,
0,
-35
],
"multicolor": false,
"glb": "clip-lower-pad.glb"
},
{
"id": "clip-hinge-pin",
"label": "Metal hinge pin · reference",
"group": "hardware",
"color": [
0.57,
0.61,
0.63
],
"note": "3.6 mm diameter reference; retention hardware and production pin TBD",
"printable": false,
"explode": [
40,
0,
0
],
"multicolor": false,
"glb": "clip-hinge-pin.glb"
},
{
"id": "clip-torsion-spring",
"label": "Clip torsion spring · reference",
"group": "hardware",
"color": [
0.46,
0.5,
0.52
],
"note": "Illustrative coil/legs; spring force, preload and cycle life unqualified",
"printable": false,
"explode": [
0,
0,
0
],
"multicolor": false,
"glb": "clip-torsion-spring.glb"
},
{
"id": "base-battery-pack",
"label": "Protected 1S LiPo pack · 40 × 50 × 8 mm allowance",
"group": "reference",
"color": [
0.67,
0.71,
0.74
],
"note": "Provisional pack envelope, including protection-tab allowance; exact qualified pack TBD",
"printable": false,
"explode": [
0,
18,
-6
],
"multicolor": true,
"glb": "base-battery-pack.glb"
},
{
"id": "base-speaker",
"label": "8 Ω enclosed speaker · 35 × 25 × 7.7 mm reference",
"group": "reference",
"color": [
0.08,
0.1,
0.11
],
"note": "Existing BOM candidate envelope; verify actual supplier drawing and acoustic outlet",
"printable": false,
"explode": [
0,
-15,
10
],
"multicolor": true,
"glb": "base-speaker.glb"
},
{
"id": "battery-temperature-sensor",
"label": "Battery temperature sensor · NTC",
"group": "reference",
"color": [
0.83,
0.51,
0.12
],
"note": "Insulated thermistor attached to the cell, J3 pins 3/4",
"printable": false,
"explode": [
0,
0,
0
],
"multicolor": false,
"glb": "battery-temperature-sensor.glb"
},
{
"id": "base-chat-switch",
"label": "SW1 · Chat pushbutton · panel mount",
"group": "reference",
"color": [
0.1,
0.12,
0.13
],
"note": "E-Switch PV5S24011G, gold contacts, Off-(On), M12 thread; solder lugs and nut, no PCB",
"printable": false,
"explode": [
-14,
0,
20
],
"multicolor": true,
"glb": "base-chat-switch.glb"
},
{
"id": "base-power-switch",
"label": "SW3 · Power toggle · panel mount",
"group": "reference",
"color": [
0.6,
0.63,
0.65
],
"note": "E-Switch 100SP1T1B1M1REH, gold SPDT solder lugs; 2 common, 1 ground/OFF, 3 unused/ON",
"printable": false,
"explode": [
14,
0,
20
],
"multicolor": true,
"glb": "base-power-switch.glb"
},
{
"id": "harness-wire-1",
"label": "J3.1 · VBAT",
"group": "harness",
"color": [
0.85,
0.1,
0.08
],
"note": "Illustrative insulated lead routing; select flexible wire/current rating and strain relief. Speaker negative is not ground.",
"printable": false,
"explode": [
0,
0,
0
],
"multicolor": false,
"glb": "harness-wire-1.glb"
},
{
"id": "harness-wire-2",
"label": "J3.2 · GND",
"group": "harness",
"color": [
0.07,
0.075,
0.08
],
"note": "Illustrative insulated lead routing; select flexible wire/current rating and strain relief. Speaker negative is not ground.",
"printable": false,
"explode": [
0,
0,
0
],
"multicolor": false,
"glb": "harness-wire-2.glb"
},
{
"id": "harness-wire-3",
"label": "J3.3 · NTC",
"group": "harness",
"color": [
0.96,
0.69,
0.13
],
"note": "Illustrative insulated lead routing; select flexible wire/current rating and strain relief. Speaker negative is not ground.",
"printable": false,
"explode": [
0,
0,
0
],
"multicolor": false,
"glb": "harness-wire-3.glb"
},
{
"id": "harness-wire-4",
"label": "J3.4 · NTC_RETURN",
"group": "harness",
"color": [
0.87,
0.87,
0.81
],
"note": "Illustrative insulated lead routing; select flexible wire/current rating and strain relief. Speaker negative is not ground.",
"printable": false,
"explode": [
0,
0,
0
],
"multicolor": false,
"glb": "harness-wire-4.glb"
},
{
"id": "harness-wire-5",
"label": "J3.5 · SPK_P",
"group": "harness",
"color": [
0.15,
0.46,
0.93
],
"note": "Illustrative insulated lead routing; select flexible wire/current rating and strain relief. Speaker negative is not ground.",
"printable": false,
"explode": [
0,
0,
0
],
"multicolor": false,
"glb": "harness-wire-5.glb"
},
{
"id": "harness-wire-6",
"label": "J3.6 · SPK_N",
"group": "harness",
"color": [
0.64,
0.27,
0.77
],
"note": "Illustrative insulated lead routing; select flexible wire/current rating and strain relief. Speaker negative is not ground.",
"printable": false,
"explode": [
0,
0,
0
],
"multicolor": false,
"glb": "harness-wire-6.glb"
},
{
"id": "harness-wire-7",
"label": "J3.7 · ASK_REMOTE",
"group": "harness",
"color": [
0.12,
0.72,
0.4
],
"note": "Illustrative insulated lead routing; select flexible wire/current rating and strain relief. Speaker negative is not ground.",
"printable": false,
"explode": [
0,
0,
0
],
"multicolor": false,
"glb": "harness-wire-7.glb"
},
{
"id": "harness-wire-8",
"label": "J3.8 · PWR_REMOTE",
"group": "harness",
"color": [
0.96,
0.39,
0.08
],
"note": "Illustrative insulated lead routing; select flexible wire/current rating and strain relief. Speaker negative is not ground.",
"printable": false,
"explode": [
0,
0,
0
],
"multicolor": false,
"glb": "harness-wire-8.glb"
}
]