When my Keurig coffee maker stopped working in late 2018, I decided to take it apart like I do with most things that I own. Once I was inside of the machine, I got to thinking about how to connect it to the IoT. I did some Googling and found a few posts that set me on my way.

The first thing that I did was to take the Keurig apart again and find the control pcb. Once I uncovered that, I formed my idea. I purchased a 4-channel, 5v relay and used it to tap into 3 of the control buttons and the lid-latch sensor. The buttons I wired to be normally-open and just soldered onto the button contacts on the control board.

The examples that I saw online all either neglected to integrate the lid-latch, or deleted it completely, which meant that you still had to lift the lid to make coffee. I didn’t like this idea. I wanted to be able to set the Keurig at night and have it auto-brew the next morning. To do this, I needed to be able to trick it into thinking that I had lifted the lid right before brewing. I also wanted to keep the functionality of being able to make coffee without IoT use. To manage this, I used the fourth relay in series with the lid-latch sensor in a normally-closed configuration.

Once the relay was set up, I used an esp8266 development board to control it. I set it to host a simple webpage and set in some times that I wanted it to make coffee each day. For power, I just expanded the hole where the power cord comes in and ran a USB cable beside it. This allows me to connect it to my computer when I want to update my code. To power the relay board, I had to use a voltage step-up converter due to the fact that the esp8266 only supplies 3.3v and the relay module needed 5v.

Eventually I will make a real webUI for my Keurig that allows the user to change scheduled times and I will put it on Github. I’ve been meaning to do this for about a year, so I don’t anticipate it being soon. I also have pictures somewhere that will be posted as soon as I remember where I saved them…