Coming Soon

This project is being tested and polished. Check back soon!

Intermediate2-4 hours each13+3 parts needed

Parent info

Cost: ~$227
Time: 2-4 hours each
Age: 13+
Difficulty: ●●●
Soldering: No soldering needed
What they'll learn: Microcontroller programming

Parts you need

Affiliate links — we may earn a small commission

ESP32-S3 Dev Board
3D Printer (any FDM)
PLA Filament 1kg

5 ESP32 + 3D Printer Projects That Look Like Real Products

Most maker projects die on a breadboard. The wires go everywhere, the components fall out, and the whole thing sits in a drawer after a week. The fix is simple: put it in a case.

A 3D-printed enclosure transforms your project from “experiment” to “gadget.” It protects the electronics, makes buttons and screens easy to reach, and — most importantly — makes you proud to show it off.

These five projects each combine an ESP32 with a custom-printed case. You do not need to be a 3D design expert. Every project here uses TinkerCAD, which is free, runs in your browser, and takes about 20 minutes to learn. You will find existing STL files online to start from, then tweak them to fit your parts exactly.


What You Need for All Projects

Part Price Link
ESP32-S3 Dev Board ~$12 Buy
3D Printer (Bambu Lab A1 Mini or similar FDM) ~$200 Buy

Bambu Lab A1 Mini 3D Printer | PLA Filament 1kg (any brand, white or black) | ~$15 | Buy |

No 3D printer? Check if your school has one, or find a local makerspace at makerspaces.com. Many public libraries also have printers you can book for free.


Universal Print Settings

Use these settings for all five projects unless noted otherwise:

  • Material: PLA (easiest to print, available everywhere)
  • Layer height: 0.2mm (good balance of speed and detail)
  • Infill: 20% (light enough to print fast, strong enough for electronics)
  • Supports: Only where noted per project
  • Print speed: Default for your slicer (45–60mm/s works well)
  • Bed temp: 60°C, Nozzle: 215°C

Project 1: M5Stack Cardputer Wrist Mount

M5Stack Cardputer

What it is: The M5Stack Cardputer is a credit-card-sized computer with a tiny keyboard and screen built in. It runs MicroPython or Arduino code and can connect to WiFi, run a terminal, or even send SMS. It is already impressive on a desk — but attach it to your wrist and it becomes a wearable pocket computer.

What You Need

  • M5Stack Cardputer (~$30)
  • 2x M3 screws (10mm)
  • Watch strap or nylon webbing (25mm wide)

Find the STL

Search Printables.com for M5Stack Cardputer wrist mount. Several community designs exist — look for one with a four-screw attachment pattern and a slot for a standard watch strap. Alternatively, search Thingiverse for Cardputer arm mount.

Customize in TinkerCAD

  1. Go to tinkercad.com and create a free account.
  2. Import the downloaded STL (click Import in the top right).
  3. To widen the strap slot: select the slot cutout shape, change its width dimension to match your strap exactly.
  4. To add your name or a logo: use the Text shape tool, set height to 1mm, and place it on the back panel. Export as STL when done.

Assembly Notes

Print the mount flat-side down, no supports needed. Slide the strap through the slots before screwing the Cardputer in — you cannot reverse this order. Tighten the M3 screws finger-tight only. Over-tightening will crack the PLA.

Level Up

Flash the Cardputer with a custom MicroPython script that shows your name, current time (synced over WiFi), and a mini game you can play while wearing it.


Project 2: DIY Smartwatch Case

Waveshare ESP32-S3 Touch LCD 1.28” Round Display

What it is: We have a full smartwatch tutorial that walks you through building a working watch face with the Waveshare ESP32-S3 1.28” round display. The missing piece in that guide is a proper case. This project gives you that case.

What You Need

  • Waveshare ESP32-S3 Round Display 1.28” (~$20)
  • 3.7V 250mAh LiPo battery
  • 2x M2 screws (6mm)
  • 22mm watch strap

Design Concept

This is a two-part snap-fit case: a front shell that frames the round display, and a back plate that clips onto it. No screws are visible from the outside.

Key dimensions to model in TinkerCAD:

  • Display cutout: 32.5mm circle (the display itself is 32mm — leave 0.25mm clearance on each side)
  • Battery compartment depth: 5mm (the 250mAh LiPo is 4.5mm thick)
  • Strap slots: 22mm wide, 2mm tall, on the north and south of the case
  • Snap-fit lip: 1mm overhang around the perimeter of the back plate

Search Printables.com for ESP32 round watch case 1.28 for an existing starting point. The Waveshare GC9A01 display form factor is common enough that several designs exist.

Print the front shell with the display face pointing down so the circular opening prints cleanly without supports. Print the back plate flat side down. Use 3 perimeter walls instead of the default 2 — this makes the snap-fit clips stronger.

Assembly Notes

Solder a JST 1.25mm connector to your LiPo if it does not have one. Tuck the battery under the board before snapping the case shut. The board mounts with double-sided foam tape against the back of the display.

Level Up

Add a small tactile button through the side wall, wired to a GPIO pin, to cycle through watch faces without opening the Arduino IDE.


Project 3: Desktop Weather Station Enclosure

What it is: An ESP32 connected to a BME280 sensor and a 0.96” OLED display makes a capable weather station. The code is in our weather dashboard tutorial. The problem is it looks like a pile of wires on your desk. This enclosure turns it into something you would actually leave out.

What You Need

  • ESP32-S3 Dev Board
  • 0.96” I2C OLED display (SSD1306)
  • BME280 temperature/humidity/pressure sensor
  • USB-C cable for power

Design Features

The enclosure has four key cutouts that you will add in TinkerCAD:

  1. Display window: 27mm × 15mm rectangular opening on the front face
  2. Sensor vent: A 10mm × 10mm grid of small holes (3mm each) on the left side wall — lets air reach the BME280 without letting dust in
  3. USB port slot: 10mm × 4mm opening on the back wall, aligned with your board’s USB-C port
  4. Desk stand: A 15-degree angled wedge fused to the bottom. This tilts the display toward you when sitting on a desk.

Search Printables.com for ESP32 OLED weather station enclosure or SSD1306 desktop case for base designs.

TinkerCAD Tip

Use the Hole shape type (red shapes) to cut the ventilation grid. Place a 3mm cylinder, mark it as a hole, duplicate it in a 3×3 grid using the Duplicate + Move method, then group everything to cut through the wall.

Print the enclosure with the front face pointing up. Add supports only if your printer cannot bridge the 27mm display opening (most modern printers can bridge 30mm with no supports). Print the stand separately and glue with super glue or use a snap joint.

Assembly Notes

Hot-glue the OLED display behind the window opening from the inside. Use double-sided foam tape for the BME280 — it must not be pressed against the ESP32 board or it will read higher temperatures from chip heat.

Level Up

Add a second OLED on the top face of the enclosure showing only the outdoor temperature, pulled from an Open-Meteo API call. Now it shows indoor vs. outdoor at a glance.


Project 4: Line-Following Robot Chassis

What it is: Instead of buying a pre-made robot chassis kit, you print your own. This gives you complete control over where motors, sensors, and batteries sit — and you can redesign individual parts as your robot improves without reprinting everything.

What You Need

  • ESP32-S3 Dev Board
  • 2x N20 gear motors with encoder (3V–6V, 100RPM)
  • L298N or DRV8833 motor driver module
  • 3x TCRT5000 IR line sensors
  • 18650 battery holder (2-cell) + batteries
  • M3 screws and heat-set inserts (optional but recommended)

Modular Chassis Design

The chassis is built from four printable modules that bolt together:

  1. Motor mounts: L-bracket style holders sized for N20 motors. Print 2.
  2. Main deck: A flat platform ~150mm × 100mm with bolt holes for the ESP32, motor driver, and battery holder at defined grid positions.
  3. Sensor bar: A front crossbar with three sensor slots spaced 15mm apart, pointing downward at a 10-degree angle.
  4. Battery bay: A removable tray on the underside that slides in and clicks into place.

Search Printables.com for N20 motor robot chassis modular or Makerworld for line follower 3d print.

Weight and Balance

Keep the battery as central and as low as possible — it is the heaviest part. If the robot tips forward, add a small drag wheel at the rear. Keep total weight under 250g for smooth sensor response on typical line-following tape.

Print motor mounts with 40% infill — they take the most mechanical stress. The main deck and battery tray can stay at 20%. Print motor mounts with the bolt holes vertical (not horizontal) for the strongest layer orientation.

Assembly Notes

Use M3 heat-set inserts in the motor mounts instead of screwing directly into PLA — PLA threads strip quickly under vibration. Press the inserts in with a soldering iron set to 200°C. Let each one cool for 60 seconds before moving.

Level Up

Add a second deck layer printed with standoffs to hold a Bluetooth module or an OLED status display, showing current speed, sensor readings, and lap time.


Project 5: Retro Game Console Shell

What it is: A handheld game console with an ESP32-S3, a 2.4” TFT display, six tactile buttons, and a small speaker. The shell is inspired by the classic GameBoy form factor — wide grip, landscape screen, two rows of buttons. It feels like a real handheld the moment you hold it.

What You Need

  • ESP32-S3 Dev Board
  • 2.4” ILI9341 TFT display (240×320px)
  • 6x 6mm tactile push buttons
  • 0.5W 8-ohm speaker
  • 3.7V 1000mAh LiPo battery
  • TP4056 charging module

Shell Design Features

The shell splits into two halves — front and back — joined by M3 screws through recessed holes (so no visible screw heads on the outside).

Key cutouts to add in TinkerCAD:

  • Display window: 46mm × 35mm (matches the 2.4” ILI9341 active area)
  • D-pad holes: 4× 7mm circles in a cross pattern, 13mm center-to-center
  • Action buttons: 2× 7mm circles on the right side
  • Start/Select: 2× 5mm circles centered below the display
  • Speaker grille: A 20mm × 10mm rectangle filled with 1.5mm holes in a grid pattern
  • USB-C charging slot: 10mm × 4mm on the bottom edge (for the TP4056 module)
  • Ergonomic grips: Extend the left and right edges by 12mm and round them — your palms rest here

Search Makerworld for ESP32 gameboy handheld case or Printables for DIY handheld console 2.4 TFT. Many community designs exist with pre-sized cutouts for common displays.

TinkerCAD Tip

Use Workplane to build each internal mounting post separately. Each button needs a 6mm round post with a 0.5mm shorter height than the button stem — so the button sits flush with the shell surface.

Print both shell halves with the inside face pointing up (outside face down). This puts the best surface finish on the visible outside. Use 3 perimeter walls for strength around the button holes. Print a small test piece with just the button holes first — 6mm tactile switches have almost no tolerance and you may need to go to 6.2mm or 6.4mm for a smooth press.

Assembly Notes

Solder wires to the buttons and display before installing them — there is no room to solder inside the shell. Install the TP4056 module first (it sits at the bottom), then the battery, then the ESP32 board, then the display. Route all wires before closing the shell — there is no going back easily.

Level Up

Flash the ESP32 with an open-source game engine like Odroid-Go Arduino or write your own Snake or Pong clone in Arduino. The ILI9341 display is fast enough for smooth sprite animation.


Quick Reference: Where to Find STL Files

Site Best For Free?
Printables.com ESP32 and electronics enclosures Yes
Thingiverse.com Large older library, lots of remixes Yes
Makerworld.com Bambu Lab ecosystem, newer designs Yes
Cults3d.com Higher quality, some paid Mixed

Designing in TinkerCAD: The 10-Minute Setup

  1. Go to tinkercad.com — no download, runs in Chrome or Firefox
  2. Sign up with your email (free forever for personal use)
  3. Click Create new design
  4. Watch the built-in 5-minute tutorial — it covers everything you need
  5. Import any STL from the sites above as your starting point
  6. Change dimensions by clicking a shape and editing the numbers on the handles

The most important concept in TinkerCAD: red shapes are holes. Turn any shape red (using the object type menu on the right), overlap it with a solid, then click Group — and it cuts a hole. Every cutout in every project above works this way.


Next Steps

Once you have printed one of these, the next skill to learn is parametric CAD with Fusion 360 (free for students and hobbyists). It is more complex than TinkerCAD but lets you define dimensions that update automatically — so when you switch from one ESP32 board to another, you change one number and the whole case updates.

For the code side of these projects, see our other tutorials:

Affiliate disclosure: Some links on this page are affiliate links. If you buy through them, we may earn a small commission at no extra cost to you.