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/assembly-notes.txt
M9 FLAT REAR HOUSING — 09 October 2026
Uniform rear plane Z=15.5 mm, inner ceiling Z=13.5 mm; no antenna/JST bulges.
Reprint rear housing, Light cap and both indicator pipes. Supports are lengthened.
Case screws remain M2 x 16, accessed through deeper 4.4 mm diameter wells;
head tops are 5.7 mm below the back. Use a narrow screwdriver.
PCB M3 mounting, antenna tray, camera stack and electrical routing are unchanged.
M7 UPDATE: front face Z=-17.2 mm (0.8 mm shorter); maximum head depth 32.7 mm.
ANT1 tray, coax and RF plug added; M9 replaces local rear pockets with a flat roof. Refer to antenna-fit-notes.txt.
Earlier M1-M6 dimensions below are revision history where superseded.
LAMP CLIP / COMPLETE ASSEMBLY M5 / 2026-10-07
J2 MATING MISMATCH - RESOLVE BEFORE FABRICATION
The Hirose FH12 catalog (current edition, page 10) recommends 3.5 mm minimum
contact length and 4.5 mm minimum stiffener length. Seeed specifies 2.5 and
4.0 mm respectively; its +/-0.1 tail-width tolerance is also wider than
Hirose's recommended +/-0.07. Matching 24 pins, 0.5 pitch and 0.3 thickness
was insufficient to establish compatibility. The earlier sourcing note's
claim of a mechanical match is withdrawn. J2 has NOT been changed by this
mechanical study. Select/qualify a connector for the actual short Seeed tongue
and repeat mating-height, pin-1 and fold checks before ordering the PCB.
The shown insertion is a PACKAGING PLACEHOLDER, not a verified connection.
https://www.hirose.com/en/product/series/FH12/documents?path=/api/v1/series/FH12/documents/product_series_catalog/content?lang%3DEN
This is a dimensional fit prototype for the existing 60 mm PCB, not a tested
production enclosure. Dimensions are millimetres. Front/page direction is -Z;
rear/button direction is +Z; PCB centre is Z=0.
PACKAGE
72 mm outer diameter, 28 mm shell depth (Z=-18 to +10).
Button caps extend to Z=11.5, giving 29.5 mm overall face-to-cap depth.
Neck socket extends to Y=-43, so the full planar envelope is 72 x 79 mm.
62.4 mm main cavity diameter gives 1.2 mm radial PCB clearance.
Front wall 1.8 mm; rear roof 2 mm; annular wall 4.8 mm.
The stepped locating lip has 0.25 mm radial clearance and a 0.2 mm visible seam.
Three internal case bosses meet at Z=-3 to stop closure at that seam. All case
screws enter from the rear (+Z); the camera/LED face has no case-screw openings.
FILES / MATERIAL
rear-housing.stl: 1 opaque housing with PCB posts, three rear screw counterbores
and stepped neck socket.
front-bezel.stl: 1 opaque cover with camera saddle, lip, microphone passage
and three blind internal screw bosses; uninterrupted face at the screw sites.
camera-retainer.stl: 1 open frame retaining the camera edges around the heatsink.
The 7.8 x 6.8 mm window clears the small heatsink; underside relief clears the flex.
light-cap.stl: 1 captive head button with sun icon. Chat is a panel switch in the base.
The yellow cap is the SW2 Light control for the reading LEDs; color is cosmetic.
diffuser-1.stl through diffuser-6.stl: translucent optical inserts, 1 of each.
indicator-pipe-1.stl, indicator-pipe-2.stl: clear indicator inserts, 1 of each.
Camera, 7 x 6 x 7 mm heatsink, thermal adhesive allowance and folded flex are
separate purchased-part models; none is printable camera hardware. The selected
electrical camera remains Seeed SKU 114993115. See camera-fit-notes.txt.
All 12 head STLs are exported at 1:1 scale, in mm, with their lowest point at Z=0.
STL export uses Manifold 3.5.4 and checks edge closure, single-solid connectivity
and interference. Native tscircuit uses the same dimensions as JSCAD plans in
assembly.cadassembly. The original routed PCB remains the electrical source.
STARTING PRINT SETUP
Use PETG for an initial opaque fit print; tune dimensions to your printer.
A 0.4 mm nozzle and 0.2 mm layers are a reasonable first trial.
Rear housing: turn 180 degrees about X, lay the closed rear face on the bed;
use local support for the horizontal neck socket and side openings as needed.
Front bezel: page-facing flat face on the bed, cavity upwards.
Camera strap: flat. Button caps: broad icon faces toward the bed; check the
small internal retaining flange in the slicer and support if needed.
Diffusers/light pipes: clear or translucent resin gives a useful optical fit
sample; FDM light transmission and scattering need measurement. They may be
replaced by molded or cut optical parts later. Do not assume printed inserts
give the required reading brightness without testing.
ADDITIONAL HARDWARE
4 x M2 x 6 mm screws: PCB to rear housing, through the existing 2.2 mm drills.
3 x M2 x 16 mm screws: install FROM THE REAR into the front bezel's blind pilots.
Select heads no larger than the modeled 4 mm diameter x 1.6 mm height allowance.
The 4.4 mm counterbores are 1.8 mm deep, with seats at Z=8.2. Shank clearance
is 2.3 mm. Three screw axes sit on a 66 mm pitch circle at 90, 210 and 330 deg.
Blind 1.7 mm pilots end at Z=-9.2, leaving 8.8 mm of material before the face.
M2 x 16 screws reach Z=-7.8: 4.8 mm nominal engagement and 1.4 mm tip clearance.
Do not substitute longer screws without rechecking tip clearance.
2 x M2 x 4 mm screws: camera retaining strap (1.7 mm pilot holes).
Tap or use screws appropriate for the printed material; these are pilot holes,
not modeled metal threads or heat-set inserts. Check pilot diameter on a coupon.
Thin nonconductive camera cushions/shims and a compressible microphone gasket.
The three external case screws are included as nominal reference solids with
cross-drive heads. Their buried threads are represented by a 1.6 mm core;
thread mating/strength is not simulated. PCB and camera screws remain internal.
ASSEMBLY
1. Clean and dry-fit the lip, screw pilots, button bores and optical inserts.
Fit the six diffusers from inside the front cover. Their flanges stop them
passing out through the face. Retain with small dots of suitable adhesive
outside the light path. Do not get adhesive on the camera or microphone port.
2. Fit the camera lens into the saddle at X=0, Y=3.5. Add measured nonconductive
shims so the body is supported without pushing on the lens/autofocus barrel.
Fit the open frame around the small heatsink using two M2 x 4 screws. The
frame retains the camera perimeter; never clamp the fins or flex. Allow the
modeled 0.15 mm thermal adhesive layer; measure the supplied adhesive.
3. With the rear housing face-down, place the Light cap through its rear
bore from inside. Fit both indicator pipes with their flanges inside.
4. Feed the eight-wire battery/thermistor/speaker harness through the neck. The
nominal 6 mm neck seats in a 6.5 mm bore and stops at Y=-32, outside the PCB.
A 4 mm wire passage continues into the cavity. Retention is a prototype
bonded socket; choose the actual neck and prove pull-out strength before use.
5. Attach the harness to J3/J4 per base-controls-wiring.csv. Install the PCB using four M2 x 6
screws at (-21,-16), (-20,19), (21,-16), (20,19). Avoid over-tightening the
small posts. Confirm the caps move freely and the Light switch is not preloaded.
6. Connect the camera flex to J2 with the contact orientation in camera-pinout.csv.
The 70.5 mm OVERALL assembly includes the 8.5 mm camera; edge-to-tip flex
length is 62 mm. Follow the two rounded folds shown in camera-fit-notes.txt.
Keep the final 4 mm stiffened tongue straight. R=2.415 mm is a geometric
trial, not a supplier-qualified bend radius. Prove fit on a sample first.
7. Fit a compressible acoustic gasket between the duct and the PCB microphone
drill at (20.7314605,0). The flat duct end leaves a nominal 0.3 mm gap to the
PCB underside; keep the bore open and isolated from the LED cavity.
8. ANT1 is Ezurio 001-0014: mount on the removable antenna tray BEFORE the PCB.
Fit the tray from the open front, secure two internal M1.6 x 3 screws,
and snap the supplied MHF1 plug vertically onto U1. Route coax below the tray.
See antenna-fit-notes.txt for the M7 mounting order and RF clearances.
9. Close the covers while watching the flex and harness. Insert the three
M2 x 16 case screws from the REAR, through the counterbores, and tighten into
the blind front bosses. No screw is inserted through the camera/LED face.
Check USB plug clearance, base power switch access, Light button
release, camera focus, light distribution and microphone response.
MEASURE BEFORE COMMITTING TO A FIT PRINT
The camera uses the published 8.5 x 8.5 x 5.4 mm module envelope and the
7 x 6 x 7 mm small heatsink from the Seeed part list. The original 22 mm head
did not fit that stack; M5 moves the camera/front face 6 mm forward. The new
shell is 28 mm deep. The rear cup, PCB and rear-entry M2 x 16 case screws remain
in their existing positions. Do not reuse the original shallow front cover.
Fin geometry, lens barrel details and thermal adhesive are approximations.
Measure the purchased Seeed revision and check contact-side/pin-1 orientation
against J2 before powering. The 14 x 14 x 7 mm second heatsink is not installed
in this camera stack. Enclosed thermal behavior has not been validated.
The switch models use the selected TL3305 nominal dimensions; the caps provide
0.2 mm initial plunger gap and a 0.5 mm external stop. Tolerance and actual
switch travel must be checked in the first assembly.
The specified neck is only a 6 mm nominal tube assumption. The selected antenna,
flex bend durability, wire strain relief, seals and thermal behavior require a
physical fit check. No waterproofing or production qualification is claimed.
The battery, speaker and book clip enclosure are below the head. The
base/gooseneck additions and their assumptions are documented below.
EDIT AND REBUILD
enclosure-geometry.ts: all dimensions and Boolean construction, no PCB geometry.
lamp-enclosure.tsx: native assembly.device / assembly.cadassembly integration.
controls-parts.tsx: nominal switch models, original footprint and wiring retained.
bun install --cwd mechanical-tools --frozen-lockfile
bun run build
bun export-board-preview.mjs # downloads the existing supplier CAD models
bun extract-board-bounds.mjs
bun export-enclosure.ts # STL / GLB / interference report
bun build enclosure-viewer.js --target browser --outfile enclosure-viewer.bundle.js --minify
bun serve-enclosure.mjs # http://127.0.0.1:3021
bun run dev # native tscircuit assembly on port 3020
REVIEW
geometry-checks.json: per-part mesh and component-envelope intersection results.
pcb-component-bounds.json: measured 3D component bounds used by the fit checks.
parts.json: part names, files, functional groups and exploded-view offsets.
The component-envelope check is conservative and does not replace physical fit.
M3 GOOSENECK AND CLIP BASE
The original head/PCB remain in their existing coordinate system. A hollow
neck exits the socket at (0,-32,3), bends through a 60 mm radius and enters the
base vertically at (0,-130,-169). Centreline length is approximately 244 mm;
outside diameter 6 mm, minimum modeled bore 4 mm. This is a purchased flexible
metal-neck reference, not printable tubing and not a simulation of its spring
construction. Select a neck rated for the measured head weight and lever arm.
The existing 6.5 mm sockets are bonded prototype joints. Add qualified retention
and strain relief after the actual neck/end fittings are selected.
Base outer envelope: 58 x 92 x 26 mm, centre (0,-158,-176). The shown lower jaw
and soft pads provide a 12.6 mm open gap. Overall pose reaches approximately
207 mm below the PCB plane; the camera is aimed down towards the book plane.
This pose is a layout reference; it does not guarantee page coverage or focus.
NEW PRINT FILES
clip-base-tray.stl: upper jaw/body, speaker support ledges, four lid bosses.
clip-base-lid.stl: removable lid, speaker grille, stepped neck socket.
clip-lower-jaw.stl: moving jaw and two hinge ears.
There are 15 printable parts total, including 12 head pieces.
Printed base parts are closed single solids. Print orientation/support needs
slicer review, especially the hinge bores and long neck socket. Use a material
appropriate for a mechanical fit trial, and test joint strength before use.
PURCHASED-PART REFERENCE MODELS
Battery: insulated/protected 1S LiPo pack, 40 x 50 x 8 mm body allowance plus
tab/protection-board space. Capacity cannot be inferred from this envelope;
the BOM's 1500-2000 mAh goal still needs exact pack selection and qualification.
Speaker: 35 x 25 x 7.7 mm enclosed 8-ohm candidate envelope from the existing
BOM; the illustrated circular diaphragm is not an exact manufacturer model.
Thermistor: insulated bead bonded to the cell top at (-12,-155,-176.4).
Hinge: 3.6 mm metal pin in 4.2 mm bores. Select a retained pin/fastener.
Spring: illustrative torsion coil and legs; force/preload are not specified.
Pads: 40 x 40 x 1.2 mm silicone/elastomer, cut or molded and bonded to the jaws.
All of these are reference envelopes, not supplier-certified CAD.
BASE ASSEMBLY SEQUENCE
1. Dry-fit both printed jaws, pin and a selected spring. The spring should close
the padded book end when the rear handles are released. Confirm travel and
pinch clearances with the selected spring; the modeled open pose is static.
2. Bond the soft pads to the gripping faces. Verify book/page marking and slip.
3. Retain the insulated protected pack in the tray using suitable compliant
support and a strap/retention solution matched to the pack. The CAD leaves
floor and side clearance but does not specify swelling clearance or a strap.
Keep screws and the hinge/spring away from the cell; never compress the pouch.
4. Attach the insulated NTC to the cell. Retain the enclosed speaker on the four
ledges above the pack without loading the cell. Add an acoustic gasket under
the grille after confirming the actual speaker outlet; retain the speaker
against vibration using the chosen part's mounting method.
5. Thread the eight flexible insulated conductors through the metal neck before
fixing either end. The modeled jackets are 1.1 mm OD for power and 0.9 mm
OD for signal/speaker. These are geometric allowances, not gauge ratings.
Verify the real insulated wire diameters, allowable current, voltage drop,
neck bore and flex life. Twist the speaker pair in the physical assembly.
6. Wire J3: 1 red = battery +; 2 black = battery -; 3 yellow = NTC;
4 white = NTC return; 5 blue = speaker +; 6 purple = speaker -.
J3.7 green = Chat; J3.8 orange = power control.
Fit SW1 PV5S24011G at (-15,-128) in the 12.2 mm hole, using its nut.
Fit SW3 100SP1T1B1M1REH at (16,-125) in the 6.5 mm hole, with nuts.
Both have solder lugs and require no base PCB. The lid is 2 mm thick.
SW1: one lug to J3.7, other lug to J3.2 battery ground.
SW3: common2 to J3.8, lug1 to J3.2, lug3 unused/insulated.
Share ground via an insulated base splice; meter the actual lever direction
before applying ON/OFF labels. Grounded control = OFF/charge; open = ON.
Speaker - is NOT ground. Crimp eight SXH-001T-P0.6 contacts and insert into
one XHP-8 housing only AFTER feeding the loose leads through the neck.
Disconnect the battery and USB, open the rear head cover, then mate to the
JST B8B-XH-A header J3. Match cavity numbers, not a mirrored viewing order.
The housing is polarized. Pull on the housing, not wires, for service.
Base-side breakouts have separate collision-checked paths.
7. Add strain relief at both neck ends and insulate all terminations. The
model is not a wire cut-length schedule; add service loops and measure the
finished route with the selected neck and connectors.
8. Close the lid with four M2 x 6 mm screws into 1.7 mm pilot holes. Check the
material/screw combination on a coupon and verify actual engagement.
9. Load-test the neck/head and clip on a sacrificial book, then verify light,
camera framing, button access, microphone and speaker isolation/feedback.
M6 EDITING
base-assembly-geometry.ts holds the neck path, base geometry and eight wire paths.
bun run enclosure:export regenerates the 41 mechanical GLBs, 15 STL print
files, mesh/interference report and base-cad-models.ts static imports. Native
tscircuit uses these cached GLBs for the new parts; the head retains its JSCAD
models, including the three rear-entry head screws. This keeps the dev viewer responsive. The PCB/glb need not be regenerated
when only these external mechanical parts change.
M3 BASE CONTROLS
The head Ask cap/opening and SW3 wall opening have been removed. Only the
Light cap remains in the head. Purchased panel controls include threaded
bushings, nuts and solder lugs; no controller or switch PCB is placed in the
base. Their CAD is a simplified dimensional reference derived from E-Switch
PV5 and 100-series drawings, not supplied STEP geometry. Sample-test the gold
contact versions, nut clearances and hole sizes before committing tooling.
The lid speech and I/O marks are shallow engravings. Verify switch orientation
and OFF/ON labeling during assembly. The OFF position leaves charging active;
a disconnected power-control wire defaults ON. J3.7 is a Chat input, not power.
The eight jacket paths are illustrative and have no specified cut lengths.
The 4 mm clear bore has limited packing clearance: measure selected high-flex
wire insulation, strain relief and the real gooseneck before purchasing a batch.
Use service loops so the lid can open without loading solder lugs or the cell.
M6 REMOVABLE HEAD HARNESS
J3 replaces the former J3/J4 solder lands with eight 2.50 mm pitch contacts.
The imported JST C157972 header has a 9.8 mm mated height above the board.
The uniform rear roof reaches z=15.5 mm (PCB surface z=0.8 mm), with 2 mm roof.
The lower plug body mates inside J3; that intentional socket overlap is
excluded only within its documented bounding envelope in the fit checker.
Wire models: 1.1 mm OD battery / 0.9 mm OD other leads, compatible insulation
range for the selected crimp contact. The 4 mm bore is a tight nominal fit;
actual jackets, flexibility, service slack and bend life require a sample.
Light SW2 and its cap are now at (24,-8) mm. Rear-entry screws are unchanged.