Desk Pal Maker — Build a Desk Pet Around the ESP32-S3 Round Screen
Tools AI Generator
Loading 3D engine...
1. Head
2. Screen
Turn on Move screen, then click or drag on the head to place the face. The board cavity, bezel, USB-C channel and snap-together split are cut in for you.
Board fit0.20 mm gap
Snug suits most printers. Unsure? Print the first.
3. Export
Two snap-together shells
4. Flash & build

Desk Pal Maker — Design a 3D Printed Desk Pet Around the ESP32-S3 Round Display

The PrintPal Desk Pal Maker is a free browser tool that designs the printable head of a Desk Pal: a tiny desk pet with a pair of big animated robot eyes on a round 1.28″ touch screen. A Desk Pal is all head — no body, legs or feet — so it sits low on the desk with the face right in front of you. Pick a cute cat, dog, bear, cow, robot or mochi head, recolor it, or describe any creature and let the AI generate a full-color 3D head. Place the 38.5 mm ESP32-S3 screen puck on the head, watch the eyes blink and react, then download a two-part snap-fit shell as a multi-color 3MF or print-ready STLs. The display cavity, 1.5 mm bezel, USB-C channel, connector recess and locating ring are all cut in for you — no CAD needed.

Built for a real board

Every head is cut for the Waveshare ESP32-S3-Touch-LCD-1.28: a Φ38.5 mm puck with a 240×240 GC9A01 round display, capacitive touch, a QMI8658 IMU and a Li-ion charger. The tool keeps the screen opening at the real 32.4 mm viewing area behind a thin bezel.

Presets or AI

Nine hand-built animal and robot heads with three recolorable zones, or generate a one-of-a-kind creature head from a text prompt as a full-color 3D model whose texture is reduced to 2–8 filament colors.

Snap-together shells

The head is split into a face shell that holds the puck and a back shell that presses onto its keyed locating ring and snap nubs (it only fits one way round). The face shell prints bezel-down with the cavity open upward, the back shell on its flat split face — no supports needed for most shapes.

Live eye preview

The same eye renderer that runs on the device draws on the screen in the 3D preview: nine looks, moods like happy, sleepy, surprised and love, blinks, glances, pokes and shakes.

How to make your own Desk Pal

  1. Pick a head. Choose a preset and recolor the head, face plate and accents, or open the AI tab, click a creature chip or type your own description, and generate a full-color head. You can also upload your own STL, OBJ or GLB.
  2. Place the screen. Turn on Move screen and click or drag on the head to put the face where you want it. The face plate, cavity, bezel, USB-C channel and back access are rebuilt live.
  3. Watch the eyes. The screen in the preview runs the same eye renderer as the board and cycles through its looks and moods on its own, so you can see how your pal will feel on the desk.
  4. Export. Download the Color 3MF for Bambu Studio or OrcaSlicer (filament colors pre-assigned) or the STL ZIP with both shells in print orientation.
  5. Print, flash, assemble. Print both shells, plug the puck in over USB-C and flash the robot-face firmware from this page (Chrome or Edge), drop it into the face shell with the USB-C port in the channel, and press the back shell onto the locating ring.

Assembly & flashing guide

Parts

Print settings

Flash the firmware

  1. From this page (easiest): plug the puck into your computer with a data-capable USB-C cable, open this tool in Chrome or Edge (not Safari), and click Flash to board in the Build section. Pick the serial port when the browser asks. Windows and some Macs need the WCH CH34x driver before the port appears.
  2. If no port shows up, hold BOOT, tap RESET, release BOOT and click Flash again.
  3. Arduino / PlatformIO fallback: download the robot-face source ZIP. It contains robot_face.ino, a ready TFT_eSPI_Setup.h and a platformio.ini. Arduino IDE: Espressif ESP32 core + TFT_eSPI; copy the defines into TFT_eSPI’s User_Setup.h (or pick Setup302 and add #define USE_HSPI_PORT). Board: ESP32S3 Dev Module, OPI PSRAM, 16 MB flash, USB CDC on boot. PlatformIO: cd firmware && pio run -t upload.
  4. A black screen after a source-ZIP flash almost always means USE_HSPI_PORT is missing. The browser image already has that set.

Assemble

  1. Slide the puck into the face shell from the back, glass toward the bezel, with the USB-C connector pointing down into the channel. Five small ribs grip the black frame, so expect a firm push until the glass sits flat on the bezel.
  2. Route the USB-C cable (or tuck the battery into the back shell’s pocket) and press the back shell onto the face shell. Two keys in the groove line up with two notches in the ring, so it only goes on one way and cannot twist afterwards; the ring centers it, the small nubs click into the groove, and six pads on the back shell’s face land on the rim of the PCB and hold the screen against the bezel.
  3. Tap, swipe, tilt, shake or flip your pal: it reacts with more than ten moods and falls asleep when left alone.

What the tool cuts into your model

FeatureSizeWhy
Face plateΦ47 mm, rounded edgeGuarantees a flat, flush bezel on any head shape
Screen openingΦ33.6 mm through a 1.5 mm bezelShows the full 32.4 mm viewing area with no tunnel
Puck cavityBoard silhouette + 0.1 / 0.2 / 0.3 mm (Tight / Snug / Loose), 5.15 mm deepTraced from the Waveshare STEP: Φ38.5 round, 45° chamfers down to the frame’s flat bottom 19.3 mm below centre, then a drafted pocket for the glass tail and lip to 21.2 mm with an extra 0.3 mm on its sloped sides. Depth is exactly glass-to-PCB-back plus 0.15 mm
Grip ribs5 half-round ribs, Φ1.2 mm, crest 0.05 mm inside the frame outlineTop, both sides and both chamfers of the cavity wall. They take up the wall clearance so the frame sits without side play whatever fit you pick; tapered at the entrance
Rest pads6 pads on the back shell’s split face, 0.15 mm behind the PCBLand on parts-free arcs of the PCB rim (from the STEP) and hold the screen flat against the bezel when the shells click together, so it cannot rock front-to-back
Locating ring1.6 mm wall, 4.5 mm tall, notched to the same silhouetteThe board slides in from behind straight through the ring, so its opening matches the cavity instead of being a plain circle
USB-C slot13 mm wide, open at the split, runs to the bottomThe receptacle on the back of the PCB slides in from behind; the cable exits under the pal
Component pocketBoard outline inset 0.4 mm, 4.5 mm deep, in the back shellRoom for everything on the back of the PCB (buttons, FPC and battery connectors, USB-C) and the battery plug
Locating ring + nubs1.6 mm ring, 4.5 mm tall, 0.2 mm clearanceSelf-centering press fit that clicks the two shells together
Alignment keys2 notches in the ring (3 mm) with matching teeth across the groove, 120° apartThe back shell only closes in one orientation and cannot rotate against the face shell. Two keys at 120° because a single key could still drop into the ring’s USB opening in a wrong position

Frequently asked questions

Is the Desk Pal Maker free?

Yes. Presets, screen placement, eye preview and both exports are free and run in your browser. Generating a custom head with AI uses PrintPal AI credits or a Pro / Studio subscription, like our other AI generators.

Which board does it fit?

The Waveshare ESP32-S3-Touch-LCD-1.28 (ESP32-S3R2, 16 MB flash, 2 MB PSRAM, GC9A01 240×240 round LCD, CST816S touch, QMI8658 IMU). Other 1.28″ round display boards with a Φ38–39 mm outline generally fit too, but the USB-C channel and firmware are made for this one.

Can I use my own 3D model?

Yes. Upload an STL, OBJ, GLB or a textured OBJ ZIP — ideally a head or bust with a flat bottom. The tool scales it to your chosen height, lets you spin it to face forward, and cuts the face plate and puck cavity wherever you place the screen. Textured models are reduced to your chosen number of filament colors for the 3MF.

How does the multi-color 3MF work?

Each triangle is tagged with a filament slot using the same painting scheme Bambu Studio and OrcaSlicer use for MMU painting, and the file carries a project profile with your palette, so the shells open with the right colors already assigned. You only map the filaments to your AMS slots.

Does it need supports?

Rarely. The face shell prints bezel-down with the cavity opening upward and the back shell sits on its flat split face, so most heads print support-free. Long ears or horns that stick out sideways may want tree supports.

Can I flash the board from this page?

Yes. Plug the Waveshare ESP32-S3 puck in with a data USB-C cable and click Flash to board in Chrome or Edge. We ship a precompiled image; your browser writes it over USB serial. Safari and iPhones cannot do this. The source ZIP is still there if you want to compile it yourself.

Where do I find the firmware source?

It is in the source ZIP linked in the tool: a single Arduino sketch that draws the eyes with a signed-distance renderer into a TFT_eSPI sprite, reads the touch controller and IMU, and keeps a per-device look in flash. Serial commands let you puppeteer the face from a computer.

Want a custom head?

Pick a preset and recolor it, or upload your own STL, OBJ or GLB and place the screen on it.

Design a Desk Pal head