Beerduino is the uncreative name I have given to my Arduino-powered temperature regulator for a freezer-turned-brewing-chiller. The idea is nothing new but it was my own spin on it and was a simple precursor to an aquarium controller that will do similar things (just more of it). Basically, it tracks the temperature inside the fridge using a remote 1-wire temperature probe. If it’s too high, it turns on the fridge until it reaches a low temperature target, and then turns the fridge off. It also tracks the min and max temps seen, how many times the fridge has been cycled, among other things. I used a LCD panel that has a nice RGB LED backlit display so I also change the backlight depending on the circumstances, making it easy to glance at and know what’s going on.

Normally I like custom all-in-one solutions, so I usually end up designing a board in EagleCAD, but since the time this was needed was rather short (and since I have plenty of other projects on the list to do), I opted to go with mostly off-the-shelf shields and parts.

Parts List

Some of the above can be substituted as needed, but I opted to include everything from Adafruit to make it easier. I actually bought the temperature sensor from Amazon (only because I forgot to include it in my original order, oops!)

Building It

The RGB LCD and Screwshield are kits that need to be assembled. I used this guide for the LCD shield. It is very step-by-step, almost overly so, but it worked. Only part I thought was odd was how it suggests to install the pins to attach the LCD itself. It recommends installing them long-side down and clipping off the ends, but I don’t really see the need – they could just be installed long-side up (have some pins sticking up, but that’s not a big deal). Matter of preference I guess. I went with what the docs said.

Adafruit’s Screwshield is basically a modified clone of this shield, but adds a prototype board to it. Pretty nice addition! The build docs for the original work mostly, but there are 2 extra LEDs and resistors that can be installed. No special instructions there – just be sure to install the LEDs the correct way. Adafruit’s kit also includes all the screw-terminal blocks for the pins so you can fully populate the board.

One thing to be mindful of is to avoid excessive solder when soldering the stackable pins on the Screwshield. Since the male pins will connect to whatever board is below it, if there is too muck solder, it won’t form a good hold. Adafruit provided longer stackable headers for this which was noticeable. I build a Ardunio programmer shield not too long ago and it used normal stackable headers. Not sure why you’d need stackable headers for that at all, but they were standard length and I did have some issues with that.

Apart from that, just follow the build docs, assemble, connect the shields, and go! In actuality, it’s a really good idea to make sure there is a good connection through the whole thing, so I recommend connecting everything up (Uno on bottom, then protoshield, then LCD) and doing continuity testing for all the I/O pins to both the screw-terminals and to the LCD. It’s pretty quick to do so might as well.

Programming It

Some external libraries are required for everything to work as it should. You can find them here:

For those not familiar with adding libraries, unzip the contents of the above and move the resulting directories into your local libraries directory. I use OS X, so mine is in my home directory under Documents/Arduino/libraries (create it if it does not exist). Rename the library for the RGB LCD to something like Adafruit_RGBLCDShield. Otherwise the Arduino IDE will complain and the library won’t be imported. If you had the IDE running, go ahead and restart it.

Note that the LCD will not work until loading the Arduino with code that uses it. For a quick test, there should be a HelloWorld sketch under Adafruit_RGBLCDShield under the Examples section of the File menu. You can load that up to make sure the LCD works and play around with the buttons and things.

The actual Beerduino code uses all of the above.