This is an enclosure I designed for an angled desktop notification display with a Metro ESP32-S3 and a 2.8" TFT display shield. I'm using this as an IRC client to run my irc-display-bot code for LoRa temperature monitoring, but the same hardware build would easily work for other CircuitPython IoT projects where you want a little desktop status display.
I designed this in Blender using geometry nodes to build up a model of the negative space for the Metro, display shield, and cutouts for the viewable screen area and cable ports. The only mildly tricky thing about it was that it's important to use the "Mesh Boolean" node with the "Exact" algorithm to join objects. If you use the Geometry Join node, or a different algorithm, the resulting geometry will be messed up and not usable as a cutting tool with the boolean difference modifier.
To learn about the code I'm running for the IRC display bot, check out my IRC Display Bot Playground guide.
3D Printing & Assembly
I printed this in Bambu Lab PLA Basic on a Bambu Lab P1S with a slightly modified 0.2mm layer height standard preset (I turned the maximum acceleration down to 5000 mm/s^2, set the infill to lines, and calibrated the X-Y hole compensation).
Before slicing the STL files:
- Orient the bezel so its top face is against the build plate (2mm screw holes pointing up)
- Orient the base so its 2mm holes are against the build plate (4.5mm countersink holes pointing up)
Assembly Notes:
- The enclosure clearance is meant to work with adhesive rubber bumpers attached to the bottom of the Metro ESP32-S3. Your Metro board should come with a set of rubber bumpers.
- Update CircuitPython to the latest release version BEFORE attaching the display shield. It's very difficult to access the Boot button once the display is attached.
- When screwing the base onto the bezel, first thread the screws into the base's 2mm holes so just a little bit of the screws stick out. Use the screw tips to align the base with the bezel. If the screws cause a gap between the base and the bezel, back the screws out slightly until the gap closes. To prevent new gaps, pinch the base and bezel together as you tighten the screws.
These are my Blender design file, STL files, Blender screenshots and build photos:
This page (3D-Printed Enclosure for IRC Display Bot) was last updated on December 01, 2025.
Text editor powered by tinymce.