Pomodoro Timer for January

Author: Gregory Doran

Published: 16th February 2021

Background

Pomodoro technique is a method of time management developed by Francesco Cirillo, whereby a timer is used to break down work into intervals. Typically these intervals are 25 minutes of focused work followed by a 5 minute break and repeating the 25 minute interval for a total of 4 then a longer break is allowed. This is great when you want to be focused on one thing but allow yourself a breaks and time to catch up on other work items. There's a lot information out there and I recommend reading up on it.

Problem

My partner had been following this process and was having some success whilst revising for an exam. However, one of the greatest enemies to the common procrastinator is a smart phone. She was having to use an app on her phone and during these stressful periods struggled to tear herself away from the distracting influence of notifications.

Observations when using an app

  • Having an app on the smart-phone provides the temptation to get distracted by other notifications and messages on the phone.
  • If you're trying to complete pomodoros in an office environments your colleagues may not be aware and can disrupt the flow . It would be good to make them aware of the technique and how it can help improve productivity.
  • Its a bit of an extra effort to load the app on the phone . It would be nice if it was as easy to use as a chess-clock.

The solution should...

  1. Be a specific device for the job.
  2. Stand out such that it also makes other persons aware of the technique.
  3. Be really simple and quick to use.

Market

I couldn't find anything on the web that functioned as a pomodoro timer specifically. Just a quick Google or a search on Amazon brought up a bunch of Tomato shaped mechanical timers. Nothing jumped out as resolving all of these requirements.

Potentially there could be a market outside for this, but no exhaustive research was done . It just sounded fun and relatively simple project to do. If it gets to a point where a few can be made I'll share them with friends so they can give real feedback. Additionally for the first prototype my partner would be the guinea pig.

An image of the Pomodoro timer rendered in CAD software

The Solution

The initial prototype took about two weeks to complete. Spending most evenings and weekends towards finishing it.

Features

  • Red, Yellow and Green LEDs - This coupled with some resistors and a darlington array (ULN2003AN) providing indicators to the status (working, short break or long break). The darlington array was something I knew would output more current than the pins of the microprocessor.
  • Peizo Buzzer - To sound the start and end of a pomodoro.
  • Two push buttons - One to start or pause the timer, the other to reset it.
  • 3D printed case - This comprised of two parts that could be screwed together with M4 screws. The design for which included intuitive icons related to each of the 3 status LEDs.

This was a very rough prototype which my could be used straight away, that way at least my partner could give some feedback to improve further iterations. It was based around an Arduino Nano 33 IoT, which happened to be lying-around. Certainly a bit overkill as this chip features Wifi and Bluetooth and has a much more powerful microprocessor than needed. The whole thing was powered by a single 9V battery which drained far too quickly with this microprocessor.

Code

The firmware for the device was developed in C++ using Platform IO . Platform IO is a great for those wanting to migrate away from the typical Arduino development environment (IDE) whilst allowing access to the libraries provided through the Arduino tools. It integrates well enough with the CLion IDE from JetBrains. Using that IDE you get much richer inspections as well as the typical syntax corrections, version control and refactoring tools.

The code itself was chucked together quite quickly, but once working I could use the breadboard mounted version of the device at the same time as designing the casing in Autodesk 360. Each of the pomodoro intervals was defined as an implementation of an abstract "State" class. For each the following methods could be defined:

  • update(unsigned long elapsedMS) - which would be ran periodically and passed elapsed milliseconds since the device was reset. For the "working" state this would check whether 25 minutes had passed and if so call for the transition into the "paused" state.
  • activate() - ran on "entering" the state. For example when entering the "working" (green) state this triggers the peizo buzzer to sound.
  • deactivate() - ran when "exiting" the state. This was only really used for tallying up time spent if transitioning to the "paused" state so it could continue where it set off from if "unpaused".

The main() method for the firmware monitors the input from the buttons and triggers the transitioning between the states as that happened as when time had elapsed.

Printing

The casing was printed in PETG. In this case I used "snow white" PETG from Ooznest . Comprising of 4 parts, which were the front, back and two buttons it was printed on a Prusa i3 MK3S using the powdered sheet print bed. The print bed gives a wonderfully bumpy but aesthetically pleasing texture.

Screenshot of development underway

Images

A basic computer aided design (CAD) render of the 3D printed case:

An image of the Pomodoro timer rendered in CAD software

The inner parts of the prototype show some basic soldering and the peizo buzzer:

An image of the Pomodoro timer's back showing circuitry

The prototype with instructions. The other side of the instructions give an explanation of the technique for showing to a colleagues:

Photograph of the timer with instructions

Next Steps

I'm working on a new prototype which is a bit more stripped back using an ATMega8, for this the plan is to order a small batch of printed circuit boards (PCBs) and make 5-10 that I can give to people.

One of the first issues the new version will address is power. The 9 volt battery would drain very fast, partly due to the development board used but also due to the low capacity of these batteries. For the newer version I might opt for three "AAA" batteries. Additionally the new version will be "configurable". Using small switches on the back of the PCB will allow different presets for the interval durations. I currently like using a shorter pomodoro but more frequent to limit the time I look at emails and instant messages whilst at work.

I'll hopefully remember to post more information about that new version here and perhaps on social media. Contact details here if you'd like to comment or discuss .

An image of the Pomodoro timer's prototype breadboard