In this Instructable I will try to explain how I built a BrewPi based fermentation chamber control system for multiple chamber control. If you are a brewer like me, you don't usually have just one beer going at a time. I have several. Subsequently, I have several fridges/freezers that I use as fermentation chambers. A single BrewPi setup will not work for me and making 3 separate setups, each with an individual Raspberry Pi is expensive and complicated.

There is a lot of information already out on the web on how to build a BrewPi system but there is not a whole lot of info on how use multiple Arduinos with a single Raspberry Pi in this type of build and what is out there is a bit disjointed and rather technical.

This Instructable will so you how to set up the system and then I will link to instructions on how to install the sensors, relays and LCD screen as these are pretty straightforward and have been covered extensively elsewhere.

BrewPi is an amazing little piece of software that was developed by Elco Jacobs several years ago. See their website here. It uses a Raspberry Pi to program and log data from one or more Arduino boards, and those boards in turn do the actual control of the relays for heating and cooling of a fermentation chamber.

The guys at BrewPi used to sell DIY kits, but they are no longer in production as they have moved to a different platform. The downside is that the new platform is not quite ready for stable use and it has a lot of missing features. It also doesn't come as a kit and costs a fair amount of money.

By making your own BrewPi control system you will save a TON of cash. I sourced almost all of the parts from Amazon and other sites like Banggood.com It took me a week to get all of the products and another few nights to put it together. But in the end, I had a really nice fermentation control system that logs all of my data and can replicate brews with a high degree of accuracy and I did it all for under $200, which is about the price of a new BrewPi Spark without any accessories or extra features.

Going forward, it would be best to remember a few things:

  1. I built a 3 chamber setup, so the instructions will reflect that; duplicate steps where necessary to add more.
  2. I named all of my files to correspond with "chamber1", "chamber2", "chamber3", etc. It would be best if you stuck to that theme for simplicity.
  3. I used LCD displays on my Arduinos, and they are the hardest part of this build. They are also completely optional.
  4. Look for a link at the end of the Instructable where you can download an exact image of my Raspberry Pi SD card. If you can't get it to work using these steps, downloading and writing the image to card card is a viable option. From there you can customize whatever you would like.
  5. It is SO much easier to configure the Raspberry Pi over an SSH terminal like PuTTY on your PC. For instructions how to connect to your Pi via SSH, look here.

Let's get started!

Step 1: Parts Required

To build the Raspberry Pi side of the system:

  • 1 Raspberry Pi 1 B or better. (You may be able to use earlier versions but I find that even the B runs a bit slow. I would recommend the Pi 2 B)
  • Powered USB Hub (If you are running more than 1 Arduino than this is recommended.)
  • 8 GB SD Card


  • USB WiFi Dongle
  • Case for Raspberry Pi

To program the Arduino Controller, you need the following for each chamber:

As I said, I will link to the instructions for adding the sensors, relays and LCD screens, this Instructable will focus on the multiple chamber programming and setup only. However...

To build the Arduino controller sensors, relays and (optional) LCDs you need a set of these items for EACH CHAMBER:

<p>Can someone provide a link to the Arduino HEX file. The following link is dead ( <a href="http://dl.brewpi.com/brewpi-avr/stable/" rel="nofollow">http://dl.brewpi.com/brewpi-avr/stable/</a> ) and I can not find an alternative. Any help would be appreciated.</p>
<p>Found a copy of the file...<br>https://github.com/BrewPi/firmware/releases/tag/0.2.10</p>
Thanks man
<p>HEX file for Arduino can be found here:<br>https://github.com/BrewPi/firmware/releases/tag/0.2.10</p>
<p>I&rsquo;m one of those people who use these forums a lot but don&rsquo;t contribute, but it&rsquo;s time I did since I&rsquo;ve finally been able to get my BrewPi multi chamber set up to work. It was EzEzE&rsquo;s last post that was my breakthrough. I was really struggling as I couldn&rsquo;t get past the default &ldquo;It works&rdquo; screen on Apache2</p><p>I have a Raspberry Pi 2 (4 USB ports) and two cheap Arduino Nano clones from China</p><p>Important notes:</p><ul><br><li>use: ls /dev/ttyUSB* (not ls /dev/ttyACM*)<li>my 99-arduino.rules file was:<ul><li>SUBSYSTEM==&quot;tty&quot;, KERNEL==&quot;ttyUSB0&quot;, KERNELS==&quot;1-1.2&quot;, SYMLINK+=&quot;chamber1&quot; <li> SUBSYSTEM==&quot;tty&quot;, KERNEL==&quot;ttyUSB1&quot;, KERNELS==&quot;1-1.4&quot;, SYMLINK+=&quot;chamber2&quot;</ul><li>use xloader to upload the hex file -- don&rsquo;t waste your time trying to do this through the web interface. This was a super PITA. I spent hours/days when trying everything to get this to work when i was prototyping a single chamber BrewPi. The hex file was also hard to find but with web searching I finally found it<li>for the 2 config files, i just kept the board type as uno even though I was using an Arnuino nano (i programmed the nanos using xloader)<ul><li>scriptPath = /home/brewpi/chamber1/www<li>Path = /var/www/chamber1/<li>port = /dev/chamber1<li>altport = /dev/null<li>boardType = uno</ul><li>then from EzEzE&rsquo;s post:<ul><li>sudo /etc/apache2/sites-available/000-default.conf<li>change &quot;/var/www/html&quot; to &quot;/var/www&quot; </ul></ul><p><br>I hope this helps a lot of you out there!</p>
<p>The link to download the HEX files (http://dl.brewpi.com/brewpi-avr/stable/) is broken. Does anyone know of a mirror for these files?</p>
<p>Second. My build hit a dead end at that dead link.</p>
<p>Hi, </p><p>I'm having troubles getting the Pi to communicate with the Uno (100% legitimate Uno). When using the command &quot;udevadm info -a -n /dev/ttyACM0 |less&quot; I recieve a whole bunch of info with ATTRS{product} being &quot;DWC OTG Controller&quot; and the KERNELS being &quot;usb1&quot; (which doesn't seem correct). I have the web interface up and running and when I try and write to the Uno I get the error &quot;Couldn't write to socket: [111] Connection refused Is the script running?&quot;. Any help getting the Pi interacting with the Uno would be greatly appreciated. </p><p>Thanks in advance. </p><p>Steve.</p>
Hi Stephen, and everyone else who has posted comments. Unfortunately I have had to abandon most of my work on this as my commercial brewery is up and running and it consumes all of my free time. I am running my original Multi-Chamber setup at the brewery for our pilot system and fermenters and it still works almost just as well as the first day. I do have an issue with the Raspberry Pi crashing every time one of the units switches to &quot;cool&quot; or &quot;heat&quot; but luckily the controllers still work. So in essence I am just losing a lot of the programming and logging functionality of the system which sucks but I may try to do a fresh install one of these days.<br><br>In all, I wanted to say that I really don't have the ability to troubleshoot any issues anymore and that you should use this guide at your own risk. Also, I know that there have been some changes to the software recently on the Dev side of things which prevents it from working the exact way I had intended and I am almost positive that this does not work on Raspberry Pi 2 or 3.<br><br>Thanks to those who stuck it out with me for so long and as always please continue to ask any questions, knowing that I myself might not be able to answer, but someone else may.<br><br>Also, if anyone wants to ask me in person, come to the brewery and I'll buy you a pint while we discuss it! We are located at: <br>14910 Persistence Dr.<br> Woodbridge, VA USA 22191<br><br>http://HeroicAleworks.com
<p>What was the solution for this?</p>
<p>so iv followed your updated instructions and all is working out well, except for the part where i cannot run more than one chamber at a time as i have to manually start each script and when i exit to start another one it stops the first one.</p><p>probaly a super noob mistake on my side but have no idea how to fux this, anyone else had this issue?</p>
<p>I've not actually made this thing, but did you perhaps miss or mess up the step for setting up the cron jobs? https://www.instructables.com/id/Multiple-Fermentation-Chamber-Control-with-BrewPi/step9/Installing-BrewPi-CRON-Jobs-to-Start-Scripts/</p>
<p>Has anyone used the 7 inch Pi touchscreen to do this instead of a monitor?</p>
<p>Thanks for the write up. This was a huge time saver! A couple of things that will help people install this now that the master BrewPi branch has been updated, and we need to use the legacy one.</p><p>1.) When setting up the Arduino ports, the UDEV rule should have KERNEL==&quot;ttyACM*&rdquo; in it - notice the * in place of the 0 like in the above instructions. This will let you swap usb ports.</p><p>2.) When cloning the brewpi-scirpts use this command to pull the legacy branch:</p><p>sudo -u brewpi git clone https://github.com/BrewPi/brewpi-script -b legacy --single-branch /home/brewpi/chamber1</p><p>3.) Maybe I missed it up there, but we also need to clone the www data over, like this:</p><p>sudo -u www-data git clone https://github.com/BrewPi/brewpi-www -b legacy --single-branch /var/www/chamber1</p><p>I had to first create the /var/www/chamber1 directory and then set its owner to www-data:www-data before cloning for some reason...</p><p>4.) You'll need to create these two user accounts before doing either step.</p><p>5.) I had to enter the extra python files installation in two lines, like this:</p><p>sudo apt-get install build-essential python-dev python-pip</p><p>sudo pip install pyserial --upgrade</p><p>6.) If you're using jessie instead of wheezy, you'll need to change DocumentRoot to &quot;/var/www&quot; in the file /etc/apache2/sites-available/000-default.conf </p>
<p>Hey! Awesome right up. I had been trying to do this for a couple months now but in the interest of time I downloaded your image and attempted to flash it to my sd card. It initially brought up the option for me to install raspian and then essentially crashed and won't let me do anything. Has anybody flashed the image? If so was it successful and did you use the terminal or an application. Thanks!</p>
<p>Hey Jon, Did you manage to get an update out on this page yet? I'm looking at setting something like this up for my multi chamber garage and don't wanna commit if something random is gonna hold me up. Great work on putting this together though!</p>
Hey there, (and this should probably be for for everyone on here) unfortunately it seems that someone has changed some of the packages or builds on the developer end of things and this process no longer works. I unfortunately don't have the time or the knowledge to come up with a work around for this as I am in the process of opening a commercial brewery and it consumes almost all of my time. If someone is inclined to fix this and write up a new set of institutions, I would be happy to update the instructable. In the mean time I wish everyone the best of luck and I hope someone finds a solution!
<p>My question is not directly related to the multi fermentation chamber set up but it seems to me I need one of its features: I am trying tu run two distinct apps with web interfaces on one RasPi (one of them is BrewPi, the other Volumio) and although it seems to me I was able to install both of them (being total noob I can't be sure), I don't know how to access both interfaces. Setting up a selection screen like the one mentioned in this tutorial would be totally fine but I am also open to any other viable suggestions. Thanks!</p>
<p>Crazy stuff. So far keep failing</p>
<p>Love your work mate!!</p><p>I've just a small question.<br>After several days of work trying to trudge through all of the coding I decided to have a cheat and download the image file and just flash my SD card. This doesn't seem to work as it's giving me a partitions error and forcing me to choose an os download. When I do it formats the card leaving me with a new install. Am I missing something?</p>
<p>Are you copying the image file directly to the card or are you using a application to write the image to the card?</p><p>You must write the image to the card using software such as: <a href="http://sourceforge.net/projects/win32diskimager/">http://sourceforge.net/projects/win32diskimager/</a></p><p>Basically you open the application, choose the target card, choose the target image, then click &quot;write&quot;. </p><p>Also make sure you follow the steps here to properly format an SD card:</p><p><a href="https://www.raspberrypi.org/help/noobs-setup/">https://www.raspberrypi.org/help/noobs-setup/</a></p><p>Let me know if you have any other issues! Thanks!</p>
<p>Hi Jono. Thanks for the reply mate.</p><p>I'm doing it exactly to the letter as you've described. Firstly, formatting the SD card with SDformatterV4 and then using Win32diskimager to write it over.</p><p>I've also tried to program according to this instructable but can't get the browser script to run. It's still showing the default python screen when I go to the RPi's address, so perhaps it's the brewpi failing to start? I did encounter a problem with the -u brewpi as it says that user is unknown so I just cloned it without that bit hoping it was just authentication for the github server.</p><p>There are a few small syntax errors in the script above that I've sorted out but if it's something not obvious, I'm oblivious as I'm definitely not a programmer and this is my first RPi attempt. When I took my HVACR engineering degree digital controllers were just brand new and we didn't learn any kind of programming unfortunately.</p><p>Regardless, I'll make it work and YOU are a legend for putting this together and sharing it on. I'd love to see this instructable stay alive as it's a treasure trove of great information.<br>You have a mate in Sydney if you're ever this way.</p>
Thank you for your kind words! If I am ever in Sydney, I promise to look you up and buy you a pint or three!<br><br>Are you using a Raspi B? I haven't tried this with the 2s yet. I can't think of what else may be wrong but I would be happy to send a new image to you from my PC. There is also a wikia page where some people have corrected some of the syntax errors.<br><br>Here is the link: http://diybrewpi.wikia.com/wiki/Multiple_Fermentation_Chamber_Control_with_BrewPi<br><br>Message me with your email and I'll send a new image for you. Thanks again! If you're ever in the States please come visit our brewery which will open this summer!<br><br>http://www.heroicaleworks.com
<p>FINALLY SUCCESS!!! </p><p>I had to perform a major &quot;workaround&quot; but I've gotten it up and running without<br>flaw. I decided the only way I'd ever understand this is by getting into the middle of it and working it out and that's why I didn't pursue the image file any further.</p><p>I went from not knowing anything about RPi to a decent (though basic) understanding of python, cron, php, linux and github. It's been a learning experience that I'm happy I undertook. </p><p>Because of the way the github script has been reformatted, this instructable is only 80% complete now.</p><p>I'm happy to share on what I've found but it will be quite long winded. Can you modify this blog?</p>
<p>I'm also encountering issues when trying to clone the git scripts. Could you ellaborate on the workaround? I'm a complete noob on RPi and Arduino, and am running a RPi 2B</p>
<p>Hi Juan,</p><p>The work around is a bit more complicated than I can explain in a comment. It would be better for you to PM me your email address and I can send you all the necessary files and information. I just need to know how far along you are in the process. Have you flashed the HEX files yet? Also know that so far, I've only been able to make the UNO R3 with DIP28 chip work that has the proper U16Atmel usb to serial chip. In other words, if you've purchased the really cheap soldered down square chip Uno, you won't make it happen.</p>
I found these instructions on diybrewpi.wikia.com, seems to be a little better laid out. I got as far as step 8. I do have the really cheap Uno, but I did find it and assigned, though I haven't flashed yet. Why wouldn't it work? bolocho(at)gmaildotcom. I'll get back to working on it tonight
<p>I believe you'll find that the RPi will assign the USB bridge just fine but it won't drive it unless you load the specific Raspbian drivers for this CH340G bridge.<br>I'm definitely not interested in going that route as the removable DIP package is perfect and the Atmel328P chip can be replaced in a couple of minutes to back up and running should it fail. Below is a photo of a complete multi-chamber setup ready to go in just a couple of minutes. Plug the parts in and boot. Chance of failure is very low, but if it does I'll be up in no time. I'll email you the doc I've put together.</p>
<p>I got the Unos from Banggood, and it took nearly 2 months from China to Ecuador, it'll probably take the same time to get the other version... I'll se how far can i get. Now, your file is neat! I see you have updated to use the legacy branch instead of the main one. You should upload the corrections to brewpi wikia!</p>
Hey guys, TexnOz has been helping immensely to get all of this corrected. The big issue here is that the files that you retrieve online have changed and it is causing the errors. He provided a workaround, I just have to find the time to upload it. I'll edit the page soon hopefully! Big thanks to TexnOz for getting it going again as I have been super busy trying to get my brewery open!
<p>Thanks indeed! TexbOz was kind enough to email the updated instructions, so I kinda got it up and running, except for not being able to flash the chinese Unos via web interface. So i went and got a better clone locally, and started with the single chamber automated setup, and couldn't flash the Arduino clone either, so I tried using Xloader, and it worked. Just for kicks I tried clearing the EEPROM http://forum.brewpi.com/discussion/401/arduino-cannot-receive-version-number, flashing an empty sketch and flashing BrewPi to the chinese Unos via Xloader, and it worked! Had some problems with installing devices, but after clearing the EEPROM again https://community.brewpi.com/t/detected-devices-cannot-be-installed/295/2 replacing ACM0 with USB0 and rebooting, everything works as intended!! I will try and install again the MultiChamber setup and see if I can make it work with the chinese Unos and report back. Cheers!</p>
<p>Hey Juan!! That's good new mate!</p><p>I don't know if I've mentioned that but I've not been able to flash from the interface unless I've already flashed once from the Xloader. Please keep us updated on the CH340G Arduinos because that would rock as they are so incredibly cheap. I'm also experimenting with wifi and bluetooth modules on the arduinos themselves and that would bypass the USB altogether, making it a non-issue AND having it all wireless.</p>
<p>Just finished installing: it works!! I've set up 5 chambers, so far ch1 is driven by the cheap Uno and ch5 by the better clone, so yes, it can be done! As long as you put the right address in the config.cfg file, it's all good. Also, I flashed both boards on Xloader and didn't even bother with the web interface.</p>
I can modify it. Please share if you can. I haven't the time right now to go back and see what I missed as I am focusing on getting our commercial brewery up and running for the summer. If you send an email to jon@heroicaleworks.com with your changes I'll be happy to incorporate them! Thanks for hanging in there!
<p>Firstly thanks for putting the work into getting this! </p><p>I too have been trying to get this setup but haven't had much success yet. I've downloaded the image and formatted the card correctly but get the same error as TexnOz.</p><p>I've also followed the instructions from the wiki but haven't been able to get it up and running so is there any chance you could send me through the image so I can try that again?</p><p>Cheers</p>
I'll have to go back and check it out sometime when I have a moment. Which may not be soon unfortunately. It looks like TexnOz figured it out so hopefully he can post his results and show me what we left out.
<p>Do you just dangle the temperature sensor in the wort? I'm new to this, but I've read that some people use a thermowell and put the sensor in that. How did you do it? Thanks for your time!</p>
You should use a thermowell for the probe or at the very least, tape it to the side of your fermenter. Dangling it in the wort could lead to contamination issues and eventually could break down the sensor itself. Hope that was helpful!
<p>This looks awesome. Definitely going to do it. Do you have any details about your setup? :)</p>
Sorry I missed your comment! What questions did you have about my setup?
though I have not tried to make one myself but I do appreciate for your effort of sharing :) thank you so much !
<p>You're welcome!</p>

About This Instructable




More by jgroner:Multiple Fermentation Chamber Control with BrewPi Pandora's Clock: Nixie Tube Clock and Pandora Internet Radio Cheap and Easy Lab Agitator / Shaker (Great for PCBs too!) 
Add instructable to: