first-pass 3D-printable enclosure in OpenSCAD
The assembled nightstand unit gets a printable shell. `make enclosure`
renders three STLs to `enclosure/build/`: the chassis (open-bottom shell
with integrated top), a separate bottom plate that screws on with four
M3 self-tap screws, and a translucent snooze cap. The chassis houses
the Atom Echo press-fit onto a daughterboard via M5's 5+4 "Atom Stack"
header pattern, a MAX98357A I2S amp, and the Adafruit 1314 speaker.
Snooze cap on the front-top half presses the Atom's button via a
captive plunger; speaker fires up through a perforated grille on the
rear-top half; USB-C exits a cutout in the back wall.
Layout decisions worth flagging for future archaeology:
* Speaker fires up — less directional, more room-filling for a
nightstand. Snooze cap on the near (front) half of the top, grille on
the far (rear) half.
* No internal divider between the snooze and speaker zones — single
shared chamber so the USB-C cable can route from the front-mounted
Atom straight to the rear cutout. White noise through a 3" driver
doesn't need a sealed speaker chamber.
* Press-fit on the 5+4 side headers as the only Atom mount — no screws
on the Atom itself. M5's mechanical drawing shows two M2 mounting
holes on the bottom face, but they aren't externally accessible on
the actual unit (covered by the label sticker).
* Bottom plate screws into corner bosses with M3 self-tap into PLA;
four register tabs on the plate keep it laterally aligned during
assembly before the screws snug.
* 1.5 mm fillet on visible top + side edges; cap top has a 1.5 mm
spherical dome for tactile cue in the dark.
* Daughterboard is hand-soldered protoboard, not a custom-fab PCB.
Standoffs at the four corners of a 38 × 38 footprint for now; will
re-tune once a real piece of perfboard is on the bench.
The reference docs needed several corrections that fell out of measuring
the actual hardware (photos of the bottom, back, and top-right faces
added under `reference/atom-echo/`):
* Bottom face has the 5+4 press-fit headers + a male HY2.0-4P GROVE in
the middle.
* USB-C is on the back face, not the top.
* The onboard NS4168 speaker grille shares the top face with the
button, not the front.
* Planned MAX98357A wiring: I2S DIN moves from G21 (which isn't exposed
on the Atom's external pins) to G25.
* Stale PAM8302 references in the Adafruit 1314 doc updated to
MAX98357A — that path was the rejected analog-amp architecture.
References:
* https://docs.m5stack.com/en/atom/atomecho
* https://www.adafruit.com/product/3006 (MAX98357A breakout)
* https://www.adafruit.com/product/1314 (3" 4Ω speaker)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This is a binary file and will not be displayed.
This is a binary file and will not be displayed.
This is a binary file and will not be displayed.