OpenGrind
OpenGrind copied to clipboard
☕️ Sophisticated Coffee Grinder Timer Firmware
Sophisticated Coffee Grinder Timer Firmware
About
This project is an advancement of my 7_Dollar_Coffee_Grinder_Timer I developed 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 corresponding Instructable, the aim of this firmware is to find a great coffee grinder with as much bang for your buck as possible and to customize it to your needs. This firmware is my way of achieving a more professional and reliable coffee grinder. You can find more information on the new OpenGrind Instructable.
Prerequisites
The getting started section below assumes that you are using the same hardware and configuration as stated in this Instructable.
Getting Started
Make sure you have installed PlatformIO and know the basics on how to use it.
-
Open the OpenGrind Folder in VSCode
-
Choose the correct
upload_portcorresponing to your MCU and OS in theplatformio.inifile. This can be for exampleCOM3on Windows or/dev/ttyUSB0on Mac or Linux. -
Connect your microcontroller and hit the upload button --> enjoy 🎉
Usage
The first screen you see after booting is the default screen which contains the selection for the grinding dosage (one or two cup icons).

From there on you can choose the action to achieve the desired result.
| Desired Result | Action | Possible Result |
|---|---|---|
| Switch between single or double dose | turn rotary encoder | ![]() |
| Set grinding time for selected dose | turn the rotary encoder while pressing it | ![]() |
| Start the grinder | press the start button | ![]() |
| Show statistics | press and hold the rotary encoder for five seconds | ![]() |
| Factory Reset | press and hold the rotary encoder for five seconds while in show statistics | reboot |
Note for the statistics: S stands for the number of single dosages you have ground with this grinder; likewise D stands for the number of ground double dosages.
Customization
If you choose to alter the hardware configuration (IO pins) or you are not satisfied with the behavior of the firmware, you can find all major settings in the src/Definitions.hfile.
Basic Principle of the Firmware
This firmware operates on the principle of a state machine with 4 main states.

Troubleshooting
During the first test runs, I quickly encountered the problem that the Arduino sometimes froze during the operation. This freezing occurred due to the electromagnetic interference (EMI) of the powerful electro motor inside the grinder. There are a lot of possibilities why this occurs but one possible solution is to connect the Arduino GND to mains earth. Keep in mind: a small wire connection to earth may not be sufficient! To achieve the best possible EMI reduction in my case, I had to enclose the whole Arduino in a metal housing (or wrap it with copper/aluminum tape), make the connection from the Arduino GND to the metal housing as short as possible and then connect the metal housing to the mains earth.
Limitations
This App is provided as-is! Please feel free to adapt it to your needs and contribute to the project. I would be very grateful to include your improvements. Thanks for your support!
WARNING: 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 build/improve your coffee grinder! You are doing everything at your own risk!

