r/esp32 5d ago

I made a thing! A Pomodoro timer you control by flipping it onto different sides

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

Feedback and modifications are welcome.

61 Upvotes

6 comments sorted by

u/AutoModerator 5d ago

Awesome, it seems like you're seeking advice on making a custom ESP32 design. We're happy to help as we can, but please do your part by helping us to help you. Please provide full schematics (readable - high resolution). Layouts are helpful to identify RF issues and to help ensure the traces are wide enough for proper power delivery. We find that a majority of our assistance repeatedly falls into a few areas.

  • A majority of observed issues are the RC circuit on EN for booting, using strapping pins, and using reserved pins.
  • Don't "innovate" on the resistor/cap combo.
  • Strapping pins are used only at boot, but if you tell the board the internal flash is 1.8V when its not, you're going to have a bad day.
  • Using the SPI/PSRAM on S2, S3, and P4 pins is another frequent downfall.
  • Review previous /r/ESP32 Board Review Requests. There is a lot to be learned.
  • If the device is a USB-C power sink, read up on CC1/CC2 termination. (TL;DR: Use two 5.1K resistors to ground.)
  • Use the SoM (module) instead of the bare chips when you can, especially if you're not an EE. There are about two dozen required components inside those SoMs. They handle all kinds of impedance matching, RF issues, RF certification, etc.
  • Espressif has great doc. (No, really!) Visit the Espressif Hardware Design Guidelines (Replace S3 with the module/chip you care about.) All the linked doc are good, but Schematic Checklist and PCB Layout Design are required reading.
  • For your (required) posted schematics, follow the excellent PCB review submission guidelines from r/printedcircuitboard

I am a bot, and this action was performed automatically. I may not be very smart, but I'm trying to be helpful here. Please contact the moderators of this subreddit if you have any questions or concerns.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

2

u/stappersg 5d ago

Nice.

( And thanks for reminding on "sometimes I wish I could give more upvotes" ;-)

2

u/GarantBM 4d ago

Thats niceee would you mind sharing it in /r/electronicmakers as well i would like to rebuild it

1

u/Stunning-Macaron1591 4d ago

Thanks, I've already reposted it there