George Bryant

Designing a less frustrating kitchen timer

A topic that has been bothering me for quite a while is kitchen timers. I've never found one that does quite what I want it to do. Of course, "what I want it to do" isn't easy to describe. There's just always something I don't like about a kitchen timer. The screen of my latest timer recently broke when dropped, so I decided to make this my next project.

Defining the problem

First, I needed to get my thoughts down on paper:

Page of sketched notes, highlighting problems with existing timers
Here's what I sketched out.

I identified 4 problem areas - setting the time, the alarm, placement of the timer and cleaning.

The problems I identified (with many but not all timers):

Using my phone for the timer doesn't really solve a lot of the issues. Depending on the app, it's easier to set the time, but the remaining issues still exist to different extents. The phone being in my pocket doesn't make it easy to stop the alarm quickly, especially with dirty hands, and the dirty hands mean I have to clean my phone!

Ideation

It was time to sketch around each of the problem areas to come up with a few ideas for solutions. If I was making an actual product here I'd probably spend some more time on it, but for now I just want something that'll be work nicely for myself.

Page of sketched ideas about time setting and alarm patterns
Ideas around setting the alarm and the sound of the alarm.
Page of sketched ideas about alarm placement and cleaning
More sketches focusing on alarm placement and cleaning.

Here's a summary of my thoughts:

Setting: Firstly, I'd like to have an up and down button for each quantity - hours, minutes and seconds. An idea I've been mulling over is having a few preset buttons. Each press of the button would add that amount of time to the timer. You could set them to add a few common values to avoid button mashing. I can choose some sensible defaults but they should be adjustable by the user. I like the idea of a dial but I think it'd be difficult to keep clean. Another thing I'd like to try out is multiple timers. Occasionally a second one would be useful - it's rare for me to need more than that.

Alarm: This seems like a fairly easy fix to me. Unless the timer knows whether you're nearby, all it can do is be less annoying and hope you've heard it. There are times when you're out of the room and might miss it, so it should still have "reminder beeps". I think a good place to start would be a few beeps when it goes off, then a silent period, then more beeps if it's not reset. The exact timings can be adjusted as I go, to find something that backs off enough to not be annoying but still alerts you.

Placement: I like the idea of having magnets on the back of the timer and various changeable backs for different use cases. One could attach to a wall, another could just be a stand, another could clip onto the stove hood, etc.

Cleaning: A clear plastic front seems like a good idea to make it easily wipe-able. It'll have to be tested to see how much it affects the tactility. If I can't easily feel the press of a button it's not a very nice solution. Another option would be to have a front cover that's easily removable for cleaning in water, without the electronics. I quite like that.

Button layout

I think there are two groups of controls that a timer needs. The first is to adjust the time, the second is to start, stop and reset the timer. For the latter, the usual way of having a start/stop button and a reset button is fine with me. The bit I have a problem with is the time setting.

Usually there are only two buttons - either "increase" and "decrease" or "hour" and "minute". For the former it's slow to add a whole hour, and for the latter it's slow to reduce the time. For those reasons it'd be nice to have both "increase" and "decrease" buttons for both hours and minutes.

Sometimes you want more resolution than just minutes - maybe you want a 2m 30s timer because you're very particular about your tea. It would be good to have seconds included on the timer. That's another pair of buttons, too, for increasing and decreasing.

Then we get onto the "preset" buttons. I think it makes sense for these to work by adding the set amount of time each time you press them. That means there's no ability to remove the time again if you press one too many times, but I'm hoping that's fairly rare. Only testing will tell. I'm not sure how many presets would be useful, and how many (if not all) should be user-settable. I can see a use for having a standard set with two customisable ones (e.g. "30s", "5m", "10m", "A", "B" where "A" and "B" are user-customisable). To begin with I think they should all be user settable.

Page of sketched ideas for timer button layout
Initial sketches for how the buttons might be laid out.

It ends up being a lot of buttons! I think there's some simplification to be done here, but I'm going to try out the control scheme first. By using a prototype I can see what works and what doesn't.

Touchscreen prototype

The next step was to prototype the user interface and actually try out the timer in the kitchen! I didn't have enough buttons at the time so I rooted through my electronics box and found a Nextion display. It was originally bought years ago for my projects at university but I never ended up using it.

I eventually got it working and created a basic approximation of the timer's UI:

Screenshot of Nextion IDE with timer UI
A basic mockup of the UI to test for the timer. This is what the Nextion editor's UI looks like.

It's not pretty, but it has all the buttons I need for the single-timer version. The microcontroller built in can actually do almost all of what the timer needs (except for beeping a buzzer with a GPIO pin), but it was a pain to program in Nextion's weird language. I decided to use the Nextion as a simple display, and send the button presses to the Arduino over serial. The Arduino could in turn update the numbers on the display.

Basic kitchen timer with a broken screen, next to the initial mockup of my timer - an Arduino and touchscreen held together with cardboard and wires
The prototype, next to the broken timer that triggered the project.

First test

It was time for the first "kitchen test". I used the timer while cooking a soup that had a few different periods that needed timing. At the time of the test, this was the state of the project code.

I found a few things in this first test.

It didn't take too long to fix the alarm issues I found in the test. I changed the beeps from being 100ms on, 50ms off to 50ms on, 100ms off. That seemed to make enough of a difference, at least for now. The buzzer I'm using takes some time to get started, so a different one might allow for shorter beeps that are just as loud. I also set it up to do 2 alarm cycles of 4 beeps each, and then wait 20 seconds before doing it again. Hopefully I find that less irritating!