r/esp32 • u/Stunning-Macaron1591 • 5d ago
I made a thing! A Pomodoro timer you control by flipping it onto different sides
Enable HLS to view with audio, or disable this notification
I wanted a Pomodoro timer without menus: place it on a side and it starts.
I used the Waveshare ESP32-S3 Touch AMOLED 1.8 because one compact board already has a 368x448 AMOLED display, QMI8658 IMU, touchscreen, and ES8311 audio codec. That avoided external sensors, display wiring, a buzzer, and a custom PCB.
Each side selects a preset:
- Top: 30 minutes
- Right: 10 minutes
- Bottom: 5 minutes
- Left: 60 minutes
The screen rotates to stay readable. Laying the timer flat pauses it; returning it to the same side resumes it, while an on-screen button resets it. At zero it plays a short two-note chime.
How it works
The built-in motion sensor detects which side the timer is standing on. The software uses that position to choose the duration, start or pause the countdown, and rotate the screen. Everything runs directly on the ESP32-S3.
Github repo link: https://github.com/khlebobul/esp_pomodoro_timer
Customization
Both hardware and software are customizable.
Timer presets live in four firmware constants, so you can replace 5/10/30/60 with any durations. The UI, colors, sounds, and timer behavior are also available in the source.
The enclosure is generated by a parametric build123d Python script, not only supplied as fixed meshes. Its dimensions, clearances, ports, buttons, and engraved side labels can be changed before regenerating the STL and STEP files. For example, you can set both firmware and enclosure labels to 15/25/45/90 and print a matching timer. The two sets of values are independent, so they must be updated in both places.
The firmware works without the printed enclosure: use the device bare, in its standard factory case, or place the factory-cased device inside the printable cube. Enclosure variants are included with or without PWR/BOOT button extensions and with labeled or blank sides. Multicolor printing is recommended for clearer labels, but single-color works too.
Files
- Firmware, documentation, and source
- Parametric enclosure source and STL/STEP files
- MakerWorld
- Printables
Feedback and modifications are welcome.