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"
  }
]