UberFridge has been discontinued and has been replaced with BrewPi, a Raspberry Pi based brewing controller!
I do not recommend building UberFridge anymore. Please go to www.brewpi.com
UberFridge is a homebrew fermentation temperature controller that I have built from my old fridge. It runs on an Arduino Nano and an Asus WL520GU router. It can control the temperature of a fermenting beer with 0.1 °C accuracy. Temperature graphs and settings can be viewed in a web interface over WiFi.
Up until now I fermented my beers in a bucket in my kitchen. Because ales usually ferment around 20 °C, this is fine when it’s not to hot outside. Last summer I had to stop brewing for a few months because the temperature in my house got up to 26 °C. To be able to brew all year round and to have a bit more control over the fermentation temperatures I started my UberFridge project. For a quick overview of the features, check out the video:
- 2 temperature sensors, one in the fermenting beer and one in the fridge.
- PID control of the beer temperature with 0.1 °C accuracy
- Predictive on-off control for the fridge temperature to keep it in a -0.5 to +0.5 °C range.
- Modes of operation: constant beer temperature, constant fridge temperature or beer temperature profile
- 4×20 character OLED display
- Data logging on a USB stick in JSON and CSV format
- Web interface over WiFi
- Graphs of beer and fridge temperature history
- Change mode of operation and temperature settings
- Temperature profile over time can be set in a Google Spreadsheet
- Arduino can be reprogrammed via web interface
The overall costs are surprisingly low. The system consists of:
- My old fridge
- An Arduino Nano
- A second hand Asus WL-520GU router
- A NewHaven NHD-0420DZW-AY5-ND OLED display
- 2 LM35 temperature sensors
- Other small electronic components
Total costs are under 100 euro.
Communication between subsystems
- The Arduino runs the temperature control algorithm and the interface on the fridge itself. (C++)
- The router runs DD-WRT linux with Optware from an 4GB usb stick. (shell commands, mostly executed by PHP)
- A python script running on the router talks to the Arduino over a USB serial port and talks to the web server through an AF_UNIX socket. The temperatures are logged in JSON files for the web server and CSV files for archiving. (python with gviz_api and pyserial)
- The router runs the web server lighttpd to provide a web interface where the graphs can be viewed and settings can be changed. (PHP)
I have decided to split the content into multiple articles, so click the articles below to read more on each part of the project.
- Eleminating noise from sensor readings on Arduino with digital filtering
- Controlling fridge and beer temperature with a predictive on/off algorithm and PID
- Controlling an OLED character display with Arduino
- Storing settings between restarts in EEPROM on Arduino
DD-WRT and Linux
- Communicating between Python and Arduino with pyserial
- Logging sensor data into Google annotated time line graphs with Python and Arduino
- Getting my fridge to follow a temperature profile from a Google spreadsheet
- Building an interactive user interface with jQuery UI