Coffee machine with open source code – how to make (almost) from scratch

Short description

An engineer has built an open-source espresso machine using parts from an old Espresso Gaggia machine and hardware and software provided by the Gaggiuino community. The Gaggiuino community uses computer control and a graphical interface to modify Gaggia Classic Pro machines to give full control over the brewing process. The hydraulic subsystem of the open-source machine consists of a pump with a pressure sensor, boiler with a temperature sensor, and overpressure valve, while the framework uses a 2020 aluminum extrusion chassis with 1/8″ acrylic panels bolted to it to hold the electronic components.

Coffee machine with open source code – how to make (almost) from scratch

Espresso machines are complicated, mysterious things that are difficult to maintain. And they are very expensive. But for those who cannot live without coffee, there are no obstacles. For example, you can make such an espresso machine:

Where did the idea come from?

I have a nice Gaggia Classic Pro home espresso machine that I use every day. It replaced the Espresso Gaggia, which had worn out a lot over the years. It is not the fanciest and not the most expensive unit, but it is reliable and, most importantly, familiar.

On the other hand, I keep hearing experts talk about other machines, other methods of creating the perfect drink. And I’m constantly getting advice on how to modify my car. But the last thing I wanted was to break the machine that makes my morning coffee every day.

After my old Espresso Gaggia commanded a long life, I took it apart to see what was wrong with it.

It turned out that the problem was only scale on the boiler, which blocked the water supply. The pump was still pumping, the boiler was still boiling, and I had an idea. I’ve got a bye for experimentation on my hands to try out some of the crazy stuff seen on YouTube and the internet.

We try Gaggiuino

One of my favorite espresso project sites is run by Zer0-bit and is called Gaggiuino. They take the Gaggia Classic Pro machine and add computer control and a graphical interface to give you full control over the espresso brewing process.

Since I didn’t want to mess up the new machine and the body of the old one was quite worn, I started thinking about how I could make a new machine using a few parts from my old Espresso Gaggia, as well as hardware and software provided by Zer0-bit and the community Gaggiuino.

Gaggiuino is distributed under a Creative Commons license, which allows the software to be used for non-commercial purposes, and I thought how practical it would be to create an open source espresso machine based on this software. As a result, this project appeared.


I haven’t come up with a name for the machine, so let’s just call it “Project, v.0.1” since this is the pen’s first test. Also, this project is designed to identify proprietary parts, hoping that free counterparts will appear in the future.



The hydraulic system consists of:

  • Pump with pressure sensor. These are publicly available parts that can be obtained from any manufacturer.

  • Boiler with a temperature sensor. Boiler removed from my Espresso Gaggia espresso machine.

  • Overpressure valve. It is also part of Gaggia.

  • A brewing unit that allows you to attach a standard 58mm portafilter and includes a manifold for even distribution of hot water over the tamped coffee. These are mainly Gaggia parts, although the screen, brass screen holder and other parts are sourced from third parties.

  • Portafilter 58 mm and basket for it. This is a universal part, although again I’m using parts from the old Gaggia.

  • PTFE tube for connecting components.

  • Pneumatic quick-disconnect connections for connecting the pressure sensor to the line between the bypass valve and the boiler.

The Espresso Gaggia does not have a three-way solenoid, so it is not included in this build, however it can be added as it is supported by the software.


I used standard 2020 aluminum extrusion profiles to make the chassis, as I knew them from building 3D printers and CNC milling machines. These chassis are inexpensive and are available from many suppliers in the US and China. The chassis was assembled using stiffener plates and #5 metric screws.

The only non-standard part was the plate that holds the pump and brewing unit. The Espresso Gaggia had a nice plastic plate that held all the components and it fit the chassis well so I decided to use that instead of cutting something new. A non-standard plate can be easily made from aluminum or heat-resistant plastic.

Conducting high voltage

I decided to place all the electronic components on 1/8″ thick acrylic panels bolted to the chassis. They were cut by hand, but in the future, for more accuracy, I would do these on a CNC machine.

A lot of the modules didn’t have mounting holes, so I used goo, a 3mm thick elastic that has always worked for me. It holds the parts in place, but allows them to be removed for replacement or programming.

To neatly place the wires, I used a distribution strip for the white and black AC wires, but it was too wide for the plastic plate. I was hoping to mount this panel on the inside of the frame and then place a second clear panel over the 120 ac high voltage wiring. Also for added security I plan to add a cover at least in this build. Next time I will make the frame larger so that a larger panel will fit.

All wiring on this side was crimped using high quality silicone heat shrink connectors and a professional crimping tool.

The 5-volt power supply (on the right in the picture) is already morally outdated, but it still worked well for me.

Power connector

I removed the 3-pin power connector and cord from the old power supply and installed them in a custom 3D printed bracket that bolted to the case.

This protects the user from contact with 120 volt wiring and provides relief from the power cord.

Conducting low voltage

Like the high-voltage wiring, the low-voltage components are mounted on an acrylic panel. They are attached with screws where possible, but not all components have mounting holes, so the part is attached with adhesive.

I made a +5V and ground distribution shield from punched board and Dupont pins.

All wiring was custom crimped and shrink wrapped for safety. Dupont connectors are not particularly reliable, but they allow for easy rewiring. Having a proper socket crimping tool is very helpful for the project.

Control panel

Since I threw away my old case, I had to make a new touchscreen control panel for the chassis and replace the old switches.

I used sealed tumblers, with the largest one on the left for power and the next two for brewing and steaming. The touchpad fits particularly well.

Additional reinforcing panels were used to attach the panel to the chassis, and cable ties were used to route the wires. Low voltage in one direction and high voltage in the other.

Brewing unit

The portafilter is attached to the brewing unit.

The rest of the work

I intend to build a body for the car. Keep in mind that in its current form it suffers from several shortcomings:

  • It has an open boiler, so there is a risk of burns.

  • I have secured the high voltage wiring as much as possible, but really it should all be inside the case and protected from any human contact. A solid-state relay is particularly vulnerable.

  • Dupont crimp connectors are used in the low-voltage wiring, which are not very strong, but very convenient for experiments. In a production environment, I would suggest a more secure way to connect the microprocessor.

  • There is currently no drip tray or cup holder, making room for scales and other future features.

Gaggiuino now manufactures the PCB for the components used here. I hope to implement it in my next version.

So it works

After several false starts and failed gaskets, it did work.

Turns out I assembled the boiler and pump a few months ago without adding new gaskets and o-rings. Unfortunately this caused a bit of flooding when I first plugged in and started the car. When I replaced everything, the car was completely waterproof and steamproof, and all the sensors worked perfectly.

My first batch of coffee came out a little fast and underextracted. The grind needs to be finer and it might be worth adjusting some of the settings in the software. Oddly enough, this grind is perfect for my regular Gaggia Classic Pro, which works at a much higher pressure.

Either way, the machine works and is mostly made up of replaceable hardware and 3D-printed parts. Proprietary parts, primarily the brew unit, boiler and steam tube, can be purchased from any Gaggia parts supplier, or pulled from an old machine like I did.

Related posts