how to add your coffee maker to the Internet of Things
The Internet of Things is an idea that all electronic devices can be uniquely identified and communicated with over a standard medium of communication – the Internet. My foray into the Internet of Things began when I was perusing Wikipedia and stumbled upon HTCPCP, or Hyper Text Coffee Pot Control Protocol. HTCPCP is essentially a standard for communication with coffee pots over the Internet. During some free time this weekend, I built a prototype coffee maker that uses HTCPCP to allow my computer to control the coffee brewing process.
Here’s a video of the coffee maker in action.
Note that this isn’t a true Internet of Things coffee maker yet, because I’m controlling it over the USB connection and not over Ethernet. I ordered an Ethernet shield from Amazon, so once that arrives I’ll be converting it into a true coffee-making web server. Breaking apart coffee makers and adding communication protocols to them is much easier than it sounds – here’s how to do it.
- A coffee maker – any cheap coffee maker will do ($20)
- An Arduino ($22)
- An Ethernet shield (optional) ($34)
- A relay module for the Arduino – choose one that has a relay for each button you wish to control ($12)
So without the Ethernet capability (i.e. you just want to connect your Arduino to your computer, and not have it be on the Internet) you are looking at an additional $34 on top of the cost of your coffee maker. The Ethernet shield is mainly for the sake of principle.
The first step is the most obvious- rip apart your coffee maker (at your own risk), and remove the chip behind the buttons of the coffee maker.
But before you break apart your coffee maker, take a good look at the buttons that you use to turn it on, brew coffee, change the brewing strength, or set a timer. If you want your Arduino to have any of these abilities, you have to enable it to press those buttons. To do this, isolate the buttons you want to control, and solder wires onto the two leads that get joined when the button is pressed. In this case, I only wanted to be able to control the on/off button and the brew strength button, so I soldered wires onto the two leads for each of them.
Then, connect each pair to a relay, ensuring that you hook the correct wire to the correct input on the relay. A relay is just a mechanical switch – I used them in a previous blog post to make them control TV remotes. Once the relay is hooked up, you can reassemble your coffee maker with the new addition. To hold everything in place, I screwed a piece of MDF onto the front of the coffee maker, and attached the relay module to that.
Then, I connected the relay module to an Arduino. Since I didn’t have a socket adapter, I used a mini breadboard to connect the wires to the Arduino, which is the reason for the big taped up black box. I’ll be replacing it with a male-to-female adapter the next time I take a trip to the electronics store.
And there it is! A slightly meaningless invention considering the advent of programmable coffee makers, but this unique device allows you to control the coffee pot from literally anywhere as long as it is connected to an Internet-enabled computer. If you decide to outfit the Arduino with an Ethernet shield, you won’t even need the computer – the coffee pot itself will be a standalone device on your local network.
Although it’s not the most terribly useful thing to have a coffee maker that you can remotely control, the idea of controlling things with microcontrollers has a wide range of applications. There are plenty of electronic devices around us, and giving them a standard medium of communication allows devices to become inherently “smarter”.
For example, I can now SSH into my computer and tell it to brew a pot of coffee right before I leave work, and have a fresh pot waiting for me when I come home. Similarly, you could connect such a device to your thermostat and have it heat up your house before you reach home, or connect it to your lights for a full-blown home automation set up. The possibilities are limitless.