Nicolas Kruchten
is a data visualization specialist
based in Montreal, Canada.
I have a Rancilio Silvia home espresso machine, to which I added an Arduino microcontroller to better control its temperature and to be able to turn it on and off with my iPhone.
This is a screenshot of what I pull up on my iPhone every morning now after its alarm clock wakes me up. That's right, it's an interface to turn on my espresso machine so that it will warm up to a specific temperature by the time I'm done snoozing! I can even look at a real-time plot of the temperature to confirm that it's holding where it should be and doesn't need to bumped up or down a degree.
So I finally got around to working on my Silvia Mod Plan, getting all the way to Step 5! The video above is a demo of the setup I have to show a real-time graph on my iPad of the boiler temperature in the Silvia.
Having installed the thermocouple in the Silvia and played with my TC4 shield, my initial plan was to use the Arduino to transmit data to my iMac using XBee as a wireless serial link, where I would run a NodeJS process which would read data from the USB port and which would communicate with the iPad via a WebSocket over Wifi (phew, mouthful!). Ideally the Arduino would speak Wifi but in the meantime I figured I'd play with this setup. I chose NodeJS because it seemed really easy to set up WebSockets using socket.io, and that seemed like a good way to feed data to Smoothie Charts for real-time graphing. I rewrote the code in CoffeeScript, because it's the best way to write NodeJS code IMO (a discovery I made after writing the first version of this code 4 months ago) and because it's so fitting for this project!
So in October I finally bought the Rancilio Silvia I'd been coveting (after coveting a La Pavoni manual espresso machine first!) with the intention of modding it to add digital temperature control to it, as many have done. This basically involves replacing the stock thermostat with a thermocouple and solid-state relay, plugged into a digital control unit which does PID control. Now being a software guy who likes to tinker with his Arduino, I pretty quickly decided that I wouldn't use a standard industrial controller but I would build a custom one (kind of like this one, but read on for differences). In addition, I decided I didn't want to hang anything from the Silvia or make any externally-visible modifications, partly for esthetic reasons, but mostly because I'm not too good at making good-looking hardware myself. So I decided I would build something I could control wirelessly, from my iPhone for example. "Control" in this case basically means occasionally changing the set point of the controller, and maybe turning it on remotely. One other feature which would be nice would be a timed on/off feature, like "on 30min before I wake up" and "off after 1h of disuse" or something like that.