The $14 Sophisticated Coffee Grinder Timer




Introduction: The $14 Sophisticated Coffee Grinder Timer

This project is an advancement of my $7 Coffee Grinder Timer Instructable I published a few years ago. As the time goes on, so does the need for a more sophisticated coffee grinder. Similar to what I stated in the last Instructable, the aim of this project is to find a great coffee grinder with as much bang for your buck as possible and to customize it to your needs.

Total cost
I managed to build my timer for about $14 because I had a lot of stuff at home, but even if you buy everything new you could expect a total cost of about $14 to $30 depending on where you buy the parts. But all in all, these expenses are nothing against buying a new professional coffee grinder with a built-in timer.

Things to keep in mind
I am showing you how I customized my coffee grinder, I am not telling anyone that he/she should do the same with their coffee grinder! Everyone is responsible for what he/she is doing! I am not responsible if you hurt yourself, torch your house or anything that kind trying to create your own coffee grinder timer! You are doing everything at your own risk!

Also, keep in mind, that the prices of the parts change frequently - this means that the information in this Instructable could get off-track over time.

Step 1: Baseline

This time I opted for used commercial coffee grinder as a starting point. Since I found a few of them in my local area, I chose the Schärf X-Mill Protect (also called Mazzer Stark).

To be able to use this grinder at home in an economic way, I had to convert it to a single dosage mechanism. This process is straight forward and you can find a lot of great tutorials online.

Now the only thing left is to build an appropriate grinder timer to achieve consistent dosages.

Step 2: Materials

Step 3: Circuit

OLED SDA --> Arduino A4
OLED SCL --> Arduino A5
Rotary Encoder CLK --> Arduino 2
Rotary Encoder DT --> Arduino 3
Rotary Encoder SW--> Arduino 4
Start Button --> Arduino 5
SSR --> Arduino 6

If you like you can simply solder all the connections to the Arduino or you can do it the way I did with one of those cheap prototyping PCBs and some terminal blocks.

Step 4: Programming

To simplify the process of developing a reliable grinder timer firmware, I crated a the OpenGrind project on GitHub. There you can find detailed instructions on how the software works, how to use it and how to upload it onto your Arduino.

But in a Nutshell:

  1. Open the OpenGrind Folder in VSCode
  2. Choose the correct upload_port corresponding to your MCU and OS in the platformio.ini file. This can be for example COM3 on Windows or /dev/ttyUSB0 on Mac or Linux.
  3. Connect your microcontroller and hit the upload button --> enjoy 🎉

Step 5: Usage

Depending on your input, the results stated above will be executed.

Step 6: Conclusion

I think I found another useful solution to create consistent espresso results without spending a fortune on equipment.

Please feel free to adapt my idea and code to your needs. I would be very grateful to include your improvements!

If you like my work, I would really appreciate if you support my work with star on GitHub!

Thanks for your support! :)

Other Stuff
Thanks to Nathan Dumlao for the great conclusion image!

Remix Contest

Participated in the
Remix Contest

1 Person Made This Project!


  • Rice & Grains Challenge

    Rice & Grains Challenge
  • Lamps Challenge

    Lamps Challenge
  • CNC and 3D Printing Contest

    CNC and 3D Printing Contest



Question 5 months ago

Thank you for the detailed description!
In a similar project, the SSR has an additional varistor in parallel on the AC side.
Is the used SSR robust enough to work reliably without this additional protection?


9 months ago

Great project! Simple and straight forward. I just ordered the necessary items :-)

One question/suggestion, though: Would you be able (and so kind) to adjust the code to allow, in addition to the options for "One cup" / "Two cups", for the selection of a third option ("Manual") in which the SSR is energised as long as the button is pressed? This would allow to grind flexibly on demand such other amounts that may become necesary from time to time, e.g. a small extra amount on top of the programmed portion. It would be great to have that option - but I'm afraid, I don't have the skills to adjust the code by my own :-((

Otherwise I could probably implement a (hardware) alternative with a second button to temporarily energise the relais, thereby overriding the Arduino (a diode should probably be used to ensure that no current flows back into the controller - not necessary if such second button has not only a NO function but also a NC function by which the connection between the SSR and the Arduino which can be disconnected for the same time). But a software solution, if possible, would of course be much nicer :-)


9 months ago on Step 3

Is the VCC connection on the rotary encoder correct on the diagram? I couldn't understand why you had 2 grounds and no VCC? Would help to add the arduino supply input to the diagram to show how its powered from the 5v power supply you specified. I assumed that VIN pin or 5v pin would be fine with that powersupply if its regulated . Great effort , hopefully my Mazzer super Jolly will be running with your opengrind mods soon.


Reply 9 months ago

Hi, yes this depends on the type of rotary encoder you are using. In the case of the breadboard diagram above, the encoder is kind of a "bare" encoder which needs this kind of wiring (I think in Fritzing there was only this encoder available at the time). If you are using a rotary encoder on a breakout board you are totally right! Maybe the schematic on this Arduino Forum post will clear things up:


12 months ago

Hey, Thanks for posting this. I'm a complete newbie but I've wanted one of these timers for years so I'm trying my hand at it. In trying to follow the circuit diagram, I'm a little stuck on the SSR. My SSR is the one shown in the picture which only has two connectors whereas the diagram shows three. +ive, -ive and a connection to Arduino 6. What am I missing? Thx. Added, further reading suggests I'm getting a PWM output which the SSR will read as a +ive so I just need to run this to the +ive of the SSR and a -ve from the other terminal - I hope. Not sure what the other +ive on the diagram is but I'll test it this way.


Reply 11 months ago

Yes, the SSR in the schematic is a smaller one which has three input pins. Nevertheless, the bigger one like in the photo is even simpler to use. You don't need pwm, you can just connect (-) to Arduino GND and (+) to the output pin directly. Imagine the SSR is a LED - it works in the same way (kind of).


Question 1 year ago

Great work!! one question, how many amps is the 5v power supply?


Answer 1 year ago

Thank you! Just enough to handle the low voltage electronics - I think this was a 2A power supply.