Wednesday, April 02, 2008

Arduino and Silvia: Two Italians, One Tangled Affair

Arduino knew the two of them could make sweet coffee drinks together!

In this precisely hot affair, the Italian born microcontroller board, Arduino, has won the heart of a sensuous piece of Italian engineering named Silvia, an espresso machine by Rancilio. Silvia, after an earlier stint with a microcontroller named PIC (those Harvard Architectures are all such squares), felt she could do better.  She was looking elsewhere for someone to add brains to her great body. Arduino was a great match. He is easy to talk to, isn't too fancy or expensive, but has the hardware she requires. For his part, Arduino respects Silvia for her sturdy simplicity. She opens up easily, and isn't difficult to get intimate with. Simplicity comes naturally when you are a water heater, pump, and solenoid. Sure, she's got some switches too, but Arduino knew the two of them could make sweet coffee drinks together! 

In courtship, Arduino gave many gifts to Silvia. One of the first was a fine real time clock featuring calendar, sleep timer, and wake-up alarm! He also decorated her boiler with a thermometer he vigilantly monitors to help regulate her temperature.  When she makes espresso, it's most delicious when her temperature is precise and steady. He also keeps a stop watch so he can time her pushing as she pumps water through the cake of ground coffee. "Egads," he says, "It is simply not espresso if she take not between 25 and 35 seconds!" Arduino holds all of Silvia's switches, even her main power switch.  Anyone who wants to talk to Silvia talks to Arduino first. Certainly, it's old fashioned, but it makes Silvia feel safe. With his fine manners and protocol, she prefers that he, not any old stranger with a finger, pass her messages.

Arduino doesn't just manage Silvia's connection to switching fingers. With the end of a wire dipped into her reservoir, Arduino can raise an alarm if she is about to come to a gurgling halt in her endless thirst for water. Perhaps the greatest extravagance Arduino allows is a connection to a nunchuck controller. He relays messages to Silvia from the nunchuck, and she adores it as it makes her feel like the wildly entertaining Wii. No doubt, given all the connections that entwine them, this relationship will continue a good long time to come. Together the two lovers will enjoy many magical mornings making delicious espresso.

Want a closer look under the hood? Ready to build? Check out the CoffeeTronics section on the Arduino wiki.


Anonymous said...

Gorgeous, truly gorgeous. Its love affairs like these that inspire others to seek the same passion and affinity that these two share. What new couples will be born from witness to such a tantalizing love affair?

Karl Patrick Gruenewald said...

Tim! Excellent work! The film is truly a classic. Look out Bertilucci and Fellini.
Also, GREAT work on the project. I am truly impressed with your virtuosity with the hard/soft wares.

Unknown said...

Saw this on Make's blog. That is truly a thing of beauty!

ben said...

nice project :)

what is the name of the song you used as backing for the movie? (and what album was it from?)


Tim Hirzel said...

Thanks all for your kind words.

Anomalous, that song is 'Elisir.' I got it from The Best of Paolo Conte: I not sure when it was released originally. link to album info:

Anonymous said...

An absolutely magnificent update to the NES controller based interface. Brilliant!

admin said...

Absolutely Fantastic! And nicely written, I must say.

You put a fair amount of electronics under the hood there. Does the arduino trick the machine into thinking a button has been pressed, or did you have to write the control stuff your self?

I'll give it a go if get hold of an espresso machine.

I can think of a number of way it could be extended as well: It would be fairly easy to make the tank fill automatically with a solenoid valve or something. You could even hook it up to some sort of clock and get it to make you a coffee when you wake up (after ensuring a cup was in place).

Hmm... I want one now!

Unknown said...

I am such a dork, but that might be the coolest thing I have seen in years. Hope you're doing well, Tim!

Claus Ladekjær Wilson said...

Dear Tim! What a nice work! I am not sure my own Silvia will end this way. But I would like to implement at least some water level warning. I went so far as to have a running Arduino that compiles my programs nice and quick. Is there anywhere to ask questions? I have a compile problem with your eeprom functions (eeprom_read_block() and eeprom_write_block() ). These are my errors: In function ‘float readFloat(int)’:
error: ‘eeprom_read_block’ was not declared in this scope In function ‘void writeFloat(float, int)’:

Tim Hirzel said...

Thank you very much. Since I did this, Rick Singer has improved the design of the water level sensing a lot. He agreed to share some of that info here, and point to a forum where discussion may continue.

Rick Singer said...


First, I want to compliment you on using Arduino to modify your own Silvia... as you have seen from Tim, they make beautiful music together!

The first thing I would do if you are having compile problems is try compiling using Arduino 0010 (the code is not happy on 0011 or 0012 as of yet)

Second I want to refer you to 3 references. The first two are good informational sites for this modification:

1. Arduino Playground CoffeeTronics Wiki


2. My blog:

Silvia and Arduino

3. The third reference is a great forum for discussion with many who are interested or in various stages of executing this modification (and it's a lot of fun too!) It's the CoffeeGeek esspresso machine modification forum related to this particular modification:

New Silvia Mods

Start with these sites... feel free to comment there, ask your questions... or you can contact me too!

Good Luck!!


Claus Ladekjær Wilson said...

Dear Tim!
Could you suggest where I can get the design of the DC1307 chip? I have a PCF8583F here from Philips which probably does the same as yours. But I have to compare and possibly rewrite the code - when I am going to take use of dd/mm//yyyy. It seems both chips are doing the same work but in different locations of the memory.

Tim Hirzel said...

Hi Claus,
Sure. The clock module I am using is from sparkfun here:

That page has a link to the DC1307 datasheet as well as some PIC sample code.
Hope that helps. I've also seen some libraries for the DC1307 and other RTC chips floating around on the forums, so you might dig up a better library there, and possibly code for you Phillips chip. good luck,

Claus Ladekjær Wilson said...

Trying to understand your code (RealTimeClock.pde).
Having few questions:
line 15:
Wire.beginTransmission(0x68); // ??? what defines the address 0x68 - is that a pin on the Arduino board?
Hours, minutes and seconds have different positions here because control and micro-seconds addresses the first two parts of the memory. So I guess it is fairly easy to track down the numbers and change them accordingly. Anyway now I have both datasheets.