Deco Time – Angular Timer



This project as with many, began with a cup of tea, an over brewed one. To start my day I always brew a cup of tea, usually a green tea but always a tea that is sensitive to how long it is brewed. Normally I would just time it with my Pebble, or the tea timer I wrote for my phone(Tea Pal!), but I go to the kitchen to make the tea before I even pick those things up. So I wanted a nice timer for the kitchen. I had analog ones that I liked the look of, but they were just to imprecise for tea timing. Some of my favorite teas only brew for 30-90 seconds. Instead of buying a new one, I decided this would make a great project, so I decided on a few “needs” for this timer.

  • Analog Display:  While a digital display would be more straight forward, I wanted the aesthetic and feel of something more analog. My morning tea is a time to meditate and prepare for the day, I don’t usually look at my phone or computer until the second cup.
  • Multi Use: I wanted to be able to use this for cooking, and games as well.
  • Portable: I wanted to be able to have it on the game table, in the kitchen or where ever.
  • Stand alone: Unlike a phone, I wanted it to be able to stand on it’s own where I left it for others to see, be readable and not falling asleep when I am not there.
  • Easy to read at a glance: I should be able to tell the time remaining in less then a second. I also should be able to get a feel to how much time has passed.
  • Easy and fun to set: I wanted it to be very quick and easy to set. Many high tech timers are down right annoying to set. For example a phone timer. You have to unlock the phone, launch the app, go through a touch interface, etc. With this I wanted to be able to set the timer in less then 3 steps and find it fun.
  • 3-D printable: I wanted the over all size to be able to be printed on a makerbot.
  • Look great: I wanted it to compliment my kitchen, and be an item to enjoy looking at.


After much more thinking and discussing with friends then a simple timer should ever need, I started to have an idea of what I wanted in my head. The best way to convey the time was still eluding me. My friend Steve had a really fun idea, why not use speedometer stepper motors? They are super cheap, and work great with Arduino. So that’s what I ended up doing, using one for minutes and another for seconds.

To show the progress, I decided to use LED’s like a level indicator, when “finished” it would light a top LED that would blink to indicate it is done. It also will ring a bell when finished. For inputs and setting, I wanted a very analog feel as well, so I went with two rotary encoders, that each have a push buttons. I picked ones that have no detents(clicks), so it would feel continuous. Then to make setting even easier, I added “pre-sets” buttons like a car radio might have. To set the time for 3:30 sec, just hit button one, for 5 min, hit button 4.

For power I designed a simple AAA battery box that can take ether rechargeable or regular lead acid batteries. The box is interchangeable though, so later I could change to a LiPo pack if I wanted too. I also wanted the USB port available for long term outlet use, and easy programing updates.


I went with an extra Arduino I was not using (UNO) and a proto board I had picked up at radio shack on the cheap. The steppers are x27 168 originally used in GM cars and very cheap. They are small, fast, and have 600+ steps in there 315 degree sweep. They also are very low power and 5v, making them ideal for an Arduino.
I will try to include a full parts list, many parts I used or designed around because that is what I had already laying around.

– (1) Arduino (uno is what I used)
– (1) Proto board for Arduino
– (2) x27 168 stepper motors or switec X25 (older version)
– (9) LEDs
– (2) Bourns PEC11R Digital rotary encoders with push buttons.
– (1) MCP23S17 I/O expander //I went with the SPI version vs the I2C because of it’s higher refresh rate. I wanted to rotary encoders to “feel” as smooth as posable. The MCP23017 would probably be just as good, and use two less digital pins, but I wanted to be sure.
– (10) 300 ohm resistors
– (8) 10k ohm resistors
– (4) .1uF capacitors (104)
– (5) push buttons(I used small tactile switches 6×6), or micro switches
– (2) switches, on for power and another for sound
– (1) Pololu 5V Step-Up/Step-Down Voltage Regulator S7V8F5 //used for efficient battery power
– (1) Mini 5v Solenoid from Sparkfun
– (1) Diode //any will do, just to prevent solenoid kick back voltage.
– (1) Mosfet transistor, N-CH 30V 90A IPS040N03L  //Cheap and very efficient!
– (1) RJ9 Jack, 4P4C  Molex made in USA //aka phone headset jack, this is for the I2C expansion port

Wiring Diagram:

Click for full size schematic.

This is an early rough sketch of my Arduino shield layout.

Early breadboard layout for testing code.

Early breadboard layout for testing code.

Button Detail

Button Detail

Wiring in progress, and test fitting.

Wiring in progress, and test fitting.

Inside you can see it is a bit cramped in the finished version.


The code is for the most part fairly strait forward. I found some really great libraries that took out most of the grunt work.
MCP23S17 library
– UP/Down Timer library
– SPI library
– Switec X25 library  (His site has a TON of great info about these, including wiring and such!)

Here is the Arduino code


With the case I really wanted to make it more interesting then a simple box. I happen to love art deco designs and thought this would be an ideal fit for that style. I came up with a number of designs and drawings that I really like, and honestly would kind of like to make a few other timers. I used Tinkercad for all of the design from scratch. I know some others criticize Tinkercad for its simplicity, but it works great and is free!

Although I tried to keep 3D printability in mind while it worked on the design, I did not let it dictate the design ether. This leads to it requiring support material on many printers unfortunately, but thats ok with me. I tried to follow the golden ratio when ever I could in its elements as well so it should be pleasing to the eye.

You can view the case top, bottom and battery box at the following links.
Top: TinkerCad or Thingiverse
Bottom: TinkerCad or Thingiverse
Battery Box: Thingiverse

Top CAD view.

Building required supports on test print.

Building required supports on test print.

An early test print of the top.

An early test print of the top.

The finished version.

Back done, from outside.

Battery box, later version has taps to mount to case bottom.

Battery box, later version has taps to mount to case bottom.

Battery box, wires can just be looped through.

Battery box, wires can just be looped through.

Inside bottom details

Inside bottom details. Battery box in red.

Back done, from outside.


I decided to add a kickstand, so it could be angled up to face me when on my counter. I put very small neodymium magnets in the end of it, and another in the base of the case. It keeps it in just enough and when it falls back down the opposing magnets keeps it from going back in unless you want it too.

Bottom CAD, notice kickstand and bell mount.

Bottom CAD, notice kickstand and bell mount.

Kickstand and battery compartment detail.


Finding the right bell was very tricky. I wanted a very distinct and calming sound, that would still get my attention. It had to sound very analog in emotion if that makes sense. I originally experimented with singing bells, Tibetan bells, and other unique types I could find. Ultimately I went with a somewhat common old Bell Telephone bell. They usually have two in them, and I used one of them. The bell is rang by a very small cheap solenoid from sparkfun. It is controlled by a very efficient mosfet transistor with a diode added for kickback protection. Kickback is referring to the current generated by the solenoid as it returns to its original position. Not that a solenoid this small would need that kind of protection, but hey why not. You can see the solenoid in the above inside case CAD detail, it is held in by the blue piece. 

Expansion Port

I decided I wanted a good way to add peripherals or add ons to the timer. For example I want to add a temperature monitor for tea, maybe let it control a sous vide setup, maybe have a second display, IoT, network, a board game effect, or time controlled lights. So to do all that and more, I wanted to make the I2C pins, and power available via some kind of SMALL port. I put a lot, err to much thought into this. In the end I went with a RJ9 jack, the same kind used in telephone handset cords. This also lets me use a nice curly cord.


Face and dial details

I played with this for a long time, and will probably change it more later for fun. Here are the ones I currently went with(click for a larger file), and the Adobe Photoshop .PSD files so you can have a starting point if you want to make your own.

Another version I did not use.


Minute Dial Face PSD

Seconds Dial Face PSD


Count Down LEDs and finished LED.

I wanted to have a way to tell the progress of the whole time from the start. A progress bar or percent complete of sorts. So I made this LED count down, so I can quickly tell when the timer is about half done. When it is all done, the top LED under the dome light will blink and let me know. I made it this way so I could have it muted and still know when it’s done visually.



Again for the needles/hands I came up with a few while playing around. I uploaded a number of them to Thingiverse.

A rough test of the thick version.

This is the hand I decided to use. It is painted and behind the glass.

Knob design details

I have also uploaded a few test knobs to Thingiverse as well:
Here is what I ended up going with though.

Finished timer

Ultimately I like how it came out. I ended up coating the buttons, and knobs in XTC resin to make them a little more shinny and help them hold up longer. I might later do the whole case, but I don’t think I want it that shinny. I tried many colors, but I decided I liked the emerald green and orange colors. They fit in with the Art Deco motif I was shooting for. 



Back done, from outside.



As with all my projects it will never be done. I have a number of things I think can be improved and and plan to make some expansion modules to use that expansion port.

Other Links and info

X25 Data sheet 1

Strip Board Layout Worksheet

Rotary Encoders explained video

MCP23017 tutorial

DIY dash cluster info

Beverage-o-meter using x25

Gaugette Blog again  //great info

X27 on board with diode protection. //$19 each tho

Another rotary encoder tutorial

SPI vs i2c

Peignot Font used for dial faces

Art Deco Analog thermometer  recently released, uses nice deco font Grenadier 


Useful reference, Arduino Uno R3 Pinout: