Not in a “burnout culture” kind of way. Just the very ordinary modern-human problem of staring at a screen for way too long until my eyes started hurting and my shoulders felt like concrete.
So I made a tiny thing that interrupts me.
The original inspiration was the Pomodoro Technique. I liked the idea of working in focused periods and taking intentional breaks, but also want a tiny desk companion that gently reminds me to drink water, rest my eyes, and maybe blink for a second.
I know I probably should’ve designed the enclosure and UI around an actual tomato. But somewhere along the process, I became more interested in making it feel calm rather than playful. Not with productivity guilt, but just with a quiet reminder.
The deviceThe hardware itself is tiny. Built with Seeed Studio XIAO ESP32S3 + Round Display for XIAO, this became a tiny desk companion that sits beside my keyboard and politely tells me to stop being a goblin.
The entire build is surprisingly mall. The round display ended up becoming the entire personality of the project. (The circle made it feel softer somehow)
Firstly I followed the official getting-started guide of Seeed Studio for the round display to install the environment and the libraries as required:
- https://wiki.seeedstudio.com/get_start_round_display/#introduction
- https://wiki.seeedstudio.com/xiao_esp32s3_getting_started/#software-preparation
The two wiki are very helpful and easy to follow, walking through Arduino IDE setup, board support, and adding the libraries that talk to the display driver and graphics layer.
- https://github.com/Seeed-Studio/Seeed_Arduino_RoundDisplay
- https://github.com/Seeed-Studio/Seeed_GFX
- https://github.com/limengdu/Seeed-Studio-XIAO-Round-Display-lvgl8.3.5/tree/main
- Need to search and install the RTC library in the Arduino Library Manager.
With the necessary environment being set up, I then tried to design the UI for the 240×240 round screen, fitting timers, buttons, icons, titles and readable typography.
I should probably mention this: I did not know embedded systems before this project. No firmware background. No ESP32 experience. No real understanding of Arduino development. Honestly, barely any understanding of the code itself when I started.
Most of this project was created through a weirdly conversational process with ChatGPT:
- describing behaviors in plain English
- testing outputs
- fixing visual bugs
- repeatedly asking: “why is the tree disappearing?”
In some ways, this became my first experience with “vibe coding” hardware.
The device has four states:
- Working: Focus timer runs one hour. You’ll see a circular progress indicator and the remaining time until break.
- Reminder: After the focus interval finishes, the reminder screen appears. You have three choices: Start Breaks — begins a 2-minute rest session; Skip — returns to focus mode and resets the work timer; Snooze — delays the reminder for 5 minutes.
Because I wasn’t writing firmware traditionally, debugging became strangely design-oriented.
One problem was that a tree icon kept disappearing during the break screen. Then there was the "flicker." Every time the timer updated, the whole screen would flash like a dying lightbulb. It was the opposite of "restful." I had to figure out how to tell the code: Don't redraw everything, just change the numbers.
Most of my debugging process involved describing visual problems in plain English and then iterating with AI until the interface behaved correctly.
After this, I looked for enclosure ideas and eventually found a publicly shared 3D model that fit the XIAO and the Round Display well. (Special thanks to Koogar)!
What surprised me mostThis project is small. It’s just a tiny round screen reminding me to blink, but it changed how I think about building things. A few months ago, I would’ve assumed hardware was inaccessible without years of technical experience.
Now I think the barrier has changed. Increasingly, you don’t necessarily need to begin with traditional engineering knowledge to start making interactive objects, which is both exciting and slightly surreal.
Anyway.
The tree finally works now.











Comments