Breville Cafe Roma Arduino control & mods


New member
Jan 26, 2023
Quebec, Canada
Visit site
Howdy! as they say.

For some time now, I have been tinkering with my Breville Cafe Roma in search of better brew. Maybe I should disclaim right from the start that I still haven't found it in this machine hehe. Well, after much time and efforts I believe that I was able to get a bit more consistent brew temperatures thus resulting in more consistent shots. I just wanted to write about my journey to either stimulate the modding community - which is rather weak for the CafeRoma - or strongly discourage people who think that a few bits and pieces here will lend them pro-level espresso machine coffee with a, honestly, cheap ass machine.

Welp, here's the beast:

The first thing I had in mind was getting repeatable and preferably precise brew temperatures. The way I go about this is with two TMP36 temperature sensors mounted on the thermoblock. Each going into a separate analog input of the Arduino and then averaged in software. The sensors are mounted using the left over hardware of the old thermoswitches that come stock with the CafeRoma.

If you think the wiring is a mess already, wait until we get to the Arduino enclosure........

Obviously, there are two pressure sensors/gauge right next to the temperature sensors. These bad guys have had holes drilled and tapped into the thermoblock. The analog gauge is often used to mod the Gaggia Classics. Can be had for around 30USD I believe. The pressure sensor is from Amazon. It's a 300PSI sensor with 1/8NPT threads (nightmare) which outputs supposedly 0.5-4.5V depending on the pressure. However, as I found out, this 25CAD sensor likes to free-run above around 80C and outputs a bunch of gibberish voltage. Since in the programming of my Arduino the pump stopped when the sensor saw 9bar+, when the sensor got into crazy mod and stuck at 18bar+, I couldn't get the pump to run at all. This sensor has been bypassed and replaced by a simple potentiometer seen on the front side of the machine, with a big knob (big knobs are koooool).



So as for user inputs there are:
  • The main knob/valve switching between steam and brew modes
  • The pump duty cycle control knob
  • The temperature target knob
I like seeing things so I made sure to have plenty to look at. Here's the 16x2 display:

On the two lines, I display the current temp, and the target temp. I have some trouble with the custom characters in these shots but there's a coffee mug that should appear when the current and target temperatures are close. Anyhow, it's pretty nifty to see these parameters change over time...
The second line shows a "progress bar" depending on the position of the pump control knob. And a custom character to reflect the current mode.

Since there is no OPV in this machine, the goal is to target 9bar modulating the pump duty cycle. With the big knob it's rather easy to stay between 8 and 10 bars. The arduino is responsive enough and it's quite pleasant to use.

And here's a shot of the analog pressure gauge as seen when the machine is closed:

And here comes the mess:

Target Temp:
Simply a 10k potentiometer connected to VCC/GND and to an analog input of the Arduino.

Arduino Uno:
Out of the box Arduino Uno. Still many IO available.

Heater Relay:
This is a pretty neat solid state relay. It's about 30CAD? on Amazon. Rated at 480VAC and 40A, it is more than enough for the heater. I was actually going for the 20A relay when I saw that this 40A was 1-2$ cheaper soooooo.... Works like a champ. The back of the relay is bolted with thermal paste to the stainless steel case of the CafeRoma, there's a hole cut into the plastic box to accommodate this. These relays usually need a heatsink to stay happy but sinking it's thermal output into the stainless steel enclosure seems more than enough.

This is a small terminal strip to accomodate the many 5V and GND wires coming and going in all directions. The current PSU of the Arduino (plugged in the VccIN) is a 9V wall brick (off shot).

VAC stuff:
Simply a higher VAC rating terminal block for splitting the VAC stuff. There's AC120V coming in from the wall that need to go to both the pump relay and heater relay. Both have a neutral coming back. This could have been done with soldering and shrink but I wanted the flexibility and serviceability of a terminal block. And I had one lying around sooo...

Pump relay:
This is a much cheaper solid state relay. I believe that it is only rated at 120VAC/2A. This is plenty enough for the pump. However, the main drawback of this particular relay is that it only closes when the sinus crosses a 0VAC point. So this gives a rougher resolution of ON/OFF. Anyhow, with the vibratory pump of the CafeRoma, it doesn't make much difference anyway since it's pretty rough the way it operates anyway.

This is my first writeup kind of post so I don't quite know what I should add more or less. I attached my Arduino files so that if anyone's interested exploring this avenue with either a CafeRoma or another machine they'll have a starting point...

Feel free to ask questions and tell me that this heresy shall be punished by fire and stoning lol.


    4.6 KB · Views: 23


New member
May 24, 2023
Visit site
Hey there!!
Its awesome to find someone else who's so into coffee as well as modification! Thank you so much for the detailed post about your project. More specifically thanks for working with the Breville Cafe Roma since information about the machine is very much lacking, its really inspiring me to push further with my own modifications to my Cafe Roma.
My project is very similar to yours, however I am using slightly different hardware. I am using an ESP32 for the "brains" currently its just a dev c kit version however I will be specifically using the Seeed esp32 model (not a typo) as per its size. As well as since the esp32 is WiFi/Bluetooth capable using a 5V One Channel Relay Module with OPTO Isolation High Low Level Trigger from HiLetgo to be able to wirelessly turn the machine on and off. The relay is capable of a maximum load of AC 250V/10A, DC 30V/10A, which for me in America that should be fine.

I am also working on implementing a high precision built in load cell into the drip tray using an HX711 and 100g load cell. I am using web-sockets and HTML endpoints for the real-time data transmission through Arduino (although I can switch over to micro-python if I want). I also have a front-end Dashboard Application as a companion software to the program. I plan to attach this to the ESP32 to have it be served by the ESP32 itself. As well as be a standalone electron based app.

Regarding the temperature sensors, I'm interested in how you implemented them. If its not too much to ask could you share a bit more on how you did this? Are the props inside of thermo-block? If so how did you go about modifying the thermo-block and keep the integrity of it intact? The same questions applies to the pressure sensor. As well as, an additional question of it seems as though you were unhappy with your choice of pressure sensor, do you have another one you may recommend? Once you drill something into the thermo-block, is this a "permanent fixture"?

Given that this is my first time working with AC power (besides a bit during my courses) safety is my top priority for the machine and after which for me (just kidding, other way around obviously). I am concerned about what can happen to both me and the machine, especially as I am as they say treading in unfamiliar waters. Any advice you can share on the matter would be greatly appreciated!
Thank you for sharing all of the info youve currently already shared! No doubt not just me, but the coffee world as a whole (modding community too) will find it extremely useful!


New member
Nov 20, 2023
Visit site
Are you guys still in the projects on that little machine? I just got one recently, I am new to espresso and I am having fun with it.

I would like to know if someone could help me on lowering the pressure to 9bar either by installing the dimmer knob on it or dealing with that coil story which I don't know if is possible.

I have naked portafilter with a non-pressurized basket, hence the idea on lowering pressure in order to have less channeling which is bothering me atm.

I will appreciate if I can get that help.