The Kegerator project is nearing completion. Really all that’s left is to do a better job with the cabling and find better housing for both the LCD and for the main board. I also plan to mount an Industrial Light Tower on the fridge, but that’s still down the road a bit.

So here’s the scoop. The Kegerator has a scale for both the keg and the CO2 tank, a flow meter on the tap line, a temperature sensor, all running on two systems: an Arduino Pro Mini and an ESP8266 NodeMCU board.

Lets start with the scales. The scales themselves are just load cells taken from 2 basic digital bathroom scales. Each scale has 4 3-wire load cells, each feeding into its own HX711 load cell amplifier board.

The flow meter, while kind of redundant with a scale in place, is probably the more accurate way to measure how much beer I’ve poured drank. In the code, for both the two scales and for the flow meter, I have it run calculations to determine approximately how much beer or CO2 is left based on the size of the keg I’m currently using drinking (pony keg, sixth barrel, half barrel). This data is then assigned as follows: Pints and Liters poured, approximate percentage left based on flow meter, approximate percentage left based on weight, and the approximate level of the CO2 tank based on weight (in the form of bar graph, because why not).

All this data is sent to two places. First, to the LCD screen. I’m using a large 4×40 lcd

screen, which was rather difficult to setup (and find an arduino library for).Here it also shows the current temperature inside the fridge, from a DS18B20 Temp sensor. It will also display the name of the beer on tap, which can be set from a web page setup on the ESP8266, which we’ll get to later.

The second place the data goes is to the ESP8266, which uploads the data to ThingSpeak. Lets talk about the ESP8266. As I said, it is a NodeMCU board, so it has an ESP-12 onboard, along with a micro-usb port, and everything is 5 volt compatible (I was originally gonna go with an ESP-01, but since everything else is 5 volts, I didn’t feel it was worth the hassle). I’m running in on the arduino platform, with an awesome sketch called Easy Web Server. Here it hosts its own web page, which I have setup to help perform all the necessory tasks which would normally require physical buttons (and I was nearly out of pins on the arduino). So, here I can input the name of the beer I have on tap, set the size of the keg, tare the scales, and even change the flow counts as needed. I also have it display an image of the beer of choice, hosted in my dropbox (i just have to upload a new image and change the name to beer.jpg every time).

The easiest way to wire all this together was to use ethernet cables. One connecting the two scales to the HX711 boards, and one to connect the LCD screen.I currently have a bulkier cable hooked up to the temp sensor and flow meter, and will most likely replace it in the near future with a nicer one. I also have two extra wires going to the LCD, for power and ground. The LCD uses 8 wires (instead of the usual 7), so it also ruled out using a shift register (the shiftLCD library) and reducing the number of wires. I’m fine with the two extra wires, annoyed, but fine. The main board was also a little bit bigger than my project box, so for the moment I just have it sitting in an old shoe box.