12. September 2022

Pomodoro Timer: Prototype with an ATmega32

The “pomodoro technique” is a simple time management method, however in my opinion completely lacks support from something essential: a robust, simple-to-use timer, which doesn’t distract from the task at hand. Thus, I built a prototype with the ATmega32-based RN-Control v1.4 experimental board.

Go and search for “pomodoro technique” on the Internet. You will find plenty of articles explaining the motivation behind the simple idea , including a Wikipedia article. I like the technique, as it’s a simple and effective tool against procrastination, leveraging the benefits of time-boxing, and assistance for getting into the state of flow.

Yet, what you (or at least I) don’t find on the Internet is a proper tool for the job. All you need for the pomodoro technique is a countdown timer, which you can start and which gently reminds you when the time has run out. You might say: why not use your mobile phone, a kitchen timer, or instruct Google to set a timer for 25 minutes? The reason is that smartphones have the incredible capacity of adding to distraction, which is counter-productive when searching for the state of flow. Kitchen timer often have an annoying, loud alarm sound which is not fit for purpose: all you need is a gentle reminder that the time has run out. Timers set with Google are unobtrusive and easy to set, yet it’s too easy to miss when the timer has run out when speakers are off, and when speakers are on, the sound itself is suffering from the same shortcoming as real kitchen timers.

I went as far as purchasing a purpose-built Pomodoro timer from a company, but the product quality was rather crap (sorry!), the timer lasted less than a year, and the timer was only customizable using software that would not run on my operating system. In short, whilst this company had identified the same problem (a lack of a timer purpose-built for the Pomodoro technique), the implementation was rather disappointing.

When all the off-the-shelf products fail to meet your requirements, what to do? Build it yourself. I dug up an old experimental board (“RN-Control v1.4”) I must have purchased over decade ago during my studies. Fortunately, websites were still around with some example code, and I had some printed manuals (!), which left me with sufficient clues on the kind of programming device, the microcontroller (“ATmega32”), how to use the toolchain (avr-gcc, avr-objcopy, avrdude) such to assemble a simple Pomodoro timer program that would run on the microcontroller.

There are eight LEDs, which I programmed to indicate the timer progress: 12.5%, 25%, 37.5%, 50%, 62.5%, 75%, 87.5%. The board plays brief tunes at the start and at the finish of an interval. Whilst these tunes aren’t exactly “silky smooth” music in your ears, they are much less noisy than a kitchen timer. In addition, the LEDs flash for several seconds at the end of the interval. Four buttons allow to choose from four preset durations: 5m, 25m, 45m, 55m. The fifth button, when kept pressed, allows you to reset the timer. And here you go, the prototype of a Pomodoro timer, built for purpose.