will be read-only starting December 31st, 2018. For more info please look at this Forum Post

:: CoffeeTronics ::
Information about electronic modifications to coffee related appliances.


An evolving Arduino PID controller for espresso machines. Successfully tested on Rancilio Silvia

  • Energy-aware capsule-based coffee-maker connected to the Internet through Twitter (Social Coffee):
    • Switch On- Swith Off & Standby (current sensor)
    • Water level sensor
    • RGB LED strip as Actuator
    • Twitter account through ThingSpeak @Social_Coffee

  • CREMA: ControlleR for Espresso MAchines (
    • Two P.I.D. controlled boilers
    • PT100 Temperature Sensors with 24-bit resolution providing 0.05°C temperature accuracy
    • Single PWM based pump control (allows for pressure profiling)
    • Realtime clock with two alarms
    • Bluetooth or Wifi connectivity

  • A 3 station pour-over machine controlled by Sanguino:

  • Russian arduino based mod of Saeco Aroma espresso machine По Русски!!!

There is a lot out there: google any combination of "mods modding coffee pid home roasting espresso machine silvia" (please add other useful) and find a ton of great stuff.


  • Barebones PID for Espresso This project is just the essentials for PID'ing your espresso machine. Especially for first timers, this is where you want to start. This provides the base from which you can go crazy with more features.

  • SVN with code from Tim's coffee projects You can either check that out, or (since its pretty small) just use your browser and cut and paste the parts you want. That directory points to three folders. SilviasBrain has all the code for the large scale project. BBCC_Core is what is also available above, and BBCC_Plotter is the Processing code for the tuning application. (If you are following the BareBones code, use the code published on the wiki as the SVN code may have some small incompatibilities between the Core and Plotter code).

  • SBB with code from Rick's espresso project The code here is called Silvia's Button Brain, and is based upon Tim's SilviasBrain code. The main differences are that I used a 6-button interface in place of the Wii nunchuck, and added some functionality. The added functionality includes: two settable wake-up times, a forced sleep function, shot timer reset to zero function, all of the face panel switches (and indicator lights) function as in a virgin Silvia, and there is an external probe for the water level sensor. My blog pretty much discusses these issues. Note: this required a re-write of several sections of Tim's excellent code (major kudos to Arnold for his programing expertise!), and a change to the libraries as well... all is there. Modifications to the plotter are just about complete too. Oh yeah.................this code compiles under Arduino 0010.

Find Parts

Solid State Relays There are many out there, and it can be difficult. I used to like ebay, but I find it difficult at times to sort through all the wrong kinds. I've also accidently ended buying the wrong ones too!

Here are some nice surplus ones for $9 (april 08): Item CY3303 (update: I actually don't really like these (just rxd them in the mail). They are cheap, and work, but don't come with screws, or wiring labels, or anything. I would instead splurge on some nicer ones in better condition. The best have LEDs that turn on when they are switched on)

Temperature Sensors Two easy ways to get temperature are with devices that can be plugged into the arduino's analog inputs and provide a voltage with a linear correlation to temperature. One is a thermocouple and an AD959, both available at Sparkfun. The other is to use an LM34 (Fahrenheit) or LM35(Celsius) from National. These can be had at digikey. There are two basic packages. One looks like a standard black transistor (TO-92), is good to 250F, and is about 6 bucks ( The other is a metal package (TO-46) and is good to 300F, and is about $14 (

Display There are a bunch of options around for this. Choosing a display that allows serial control will make life much easier for you. If you are adding a lot of features, it might even be necessary as you may start running out of program memory with a display requiring more control code. This one, or any other color option:

Real Time Clock This little board from sparkfun is nice because it includes a backup battery, and crystal required by the clock.

Water level sensing The capacitive sensor IC (which you might not even need as Arduino can do capacitive sensing right off the board...) is a QT114 QT113 from Quantum. The trick to use it for water level sensing is to set it to never time out when its sensing the water (from datasheet: set pin3 to GND, pin4 to Vdd). That is available at Saelig. Here is a tutorial for it. and the datasheet. Then for the sensing electrode, get an insulated wire with a cm or so left unshielded at the end, and put that down into the water reservoir. When that unshielded tip goes dry, it will trigger the sensor. Alternatively, it is possible to make a sensing electrode that is external to the water tank, using "de-soldering" braid glued to the tank. This requires careful selection of the reference capacitance, Cs. When , installed this is one way to set it up.