Beaglebone Black Fermentation Controller

A fermentation controller for doing multi-step fermentation with web reporting and control

Similar projects worth following
I'm building a fermentation chamber and controller using a Beaglebone Black and Storyboard UI for controlling the Touchscreen front-end. I plan on connecting it to a web-backend for uploading fermentation schedules and viewing metrics.

Fermentation control is probably the most important aspect of brewing good beer. You can make incredible wort, but if you ferment it wrong it's not going to taste like you want it to. By properly controlling fermentation you're controlling the most important step, the transition from sweet wort to beer! Yeast are picky about their environment and they like different temperatures for different stages of their metabolic cycle. You want to initially encourage yeast growth, which is an aerobic process and it will claim any free oxygen in the beer which if left alone could oxidize the beer and give it that papery off-flavour no one is looking for. Next you want to encourage metabolism of the maltose ( sugars ) which generates Alcohol and Carbon Dioxide. Finally you want to encourage Flocculation, the process by which the yeast go into a suspended state and sink to the bottom of the Fermentation vessel, this allows you to rack clear beer into your conditioning vessel or serving vessel. For optimal beer you need optimal fermentation. My plan is to control the temperature of the wort at the source, with a temperature probe embedded in a stainless steel thermowell that sits right in the fermenting wort. This should allow for pretty exact temperature control. The Beaglebone Black will control two circuits, one for heating and one for cooling to chill and ramp temperatures as required.

  • Rebuild Complete - Time for a case

    deric04/21/2016 at 16:54 0 comments

    I am really bad at updating this project and a few things have changed since the last update. I got all the parts in for the miniaturization of the fermtroller and wired it all up. It looks god awful as I'm reusing the original project box and it's all hacked up. The good thing is everything worked really well except for my wifi connection. The Wifi has become very unreliable and I'm wondering if I may have damaged by BBB at some point when during a brew session it got sprayed with some hot wort. Other than that I'm quite happy with the rebuild. The Prototype Cape I picked up really simplified the wiring in of the temperature probes and made everything much more solid and not prone to falling out when I moved the box like the old setup. Moving to the smaller integrated Relays also simplified the external wiring and things look much cleaner.

    Going forward I think I'd to do a custom 3D printed box and I'd like to add a Screen which allows manual override of the Web Setting and shows the temperature graphs as well. If anyone has a good touchscreen they can recommend for the BBB I'm open to suggestions.

    On the software side of things I'm looking into implementing a PID algorithm for the temp control. The trick is I need a pretty wide deadband as you don't want to be cycling a AC unit every few minutes as it is really hard on the compressor, I'll be playing around with this over the next little while to get it tuned for my setup.

  • Everything's working, time to rebuild!

    deric02/16/2016 at 16:48 0 comments

    I don't know about you guys, but anytime things are working, I get the itch to do some improvements! The first version of this project used some 40A SSR's, the same ones I use in my Brewery Control Panel. For controlling the AC unit and the small ceramic heater they are massively over-specced. The AC unit is the biggest power draw and the in-rush current is ~ 8A on startup, and about 5A during regular cooling load. I decided to swap out the SSR's for one of these Relay Modules, it's much smaller, doesn't require a heatsink and should let me pull the entire project into one box instead of two two boxes it currently lives in. I'm also going to redo the power, currently the unit uses the 110V AC from my house, I've wired in a plug into my project box and plug the BBB power adapter into that. I'd like to clean that up as well and sourced an internal 5V Power Supply that I will run the AC into. I should have a really nice clean little box that I can then finally mount a touchscreen and work on the built-in GUI finally. The Web Application has ben super functional and it's nice being able to adjust temps anywhere I go.

  • Event Driven Set Points? Yes Please!

    deric08/03/2015 at 15:24 0 comments

    While I haven't been updating the Project page a lot, I have spent a bit of time in the last few weeks getting the last 10% of the project running. Originally I'd planned on having the GUI control the fermentation temperatures, but I realized that would be pretty limiting, what if I was away from the house and wanted to start a cold crash? Obviously having the WebUI be able to set the fermentation temperature would be awesome for this, the only problem is I hate polling systems and I couldn't think of a way to pull down the set point from the WebUI without polling.

    Cut to a few weeks ago and a post about Socket.IO for Node popped up on Reddit, I read the article and had one of those a ha moments! I could have the WebUI send an event when the set point was changed, and have a client listen for that even on the BBB. I whipped something up using the examples on Socket.IO and within a few hours I had it notifying the client of the new set point!

    Of course, now that the WebUI can change the ferm temp it was time to lockdown the UI, the easiest way is to use a .htaccess file, which I've done for now. I don't want some pranker setting my ferm temp to 50 C after all!

    All the code is posted on the Github temp_driver repo, the very basic node server and client are there as well. The temp_driver application uses inotify to listen for changes to the file written out by the node client whenever the temp changes. Of course I'd love to be able to hook directly into the event system from C, but I haven't yet figured out how to do that. This will work for now while I work on some more interesting bits. On my todo list is fermentation profiles, so you can set the system to follow a specific fermentation timeline ( start at temp x for y days, then ramp to temp z for w days followed by a cold crash )

  • Holy crap.. it's been awhile

    deric11/24/2014 at 19:37 0 comments

    Well I've kind of dropped the ball on this projects thing, but fear not, the ball has most definitely been kicked as hard as possible in regards to the project and I have a working(ish) fermentation chamber being controlled by my Beaglebone Black. I put the touchscreen part on hold until I grab the touchscreen I want, for now I'm doing all the interface through a webpage app. I'm working on the ability to push a set-point from the website down to the device and trying to find a non-crappy way of doing it, the current plan is to use libcurl to read the temp data once every few minutes, but that has a certain stink I'm not a big fan of, I'd rather some sort of event driven setup so I'm not polling. Plus I want to implement fermentation schedules where the temp will be automatically modified to match a set schedule, and while polling would work for this as well it's not very elegant.

    Here's a pic of the current web interface, it's thrown together but you can see the important details. The Blue line represents the ambient temp in the chamber, there is a small ceramic heater that's controlled by the BBB through an SSR, it has a built in thermostat which is why you see those peaks to 54 and then to 37 or so after I adjusted it down, the heater is only turned on when the wort drops below 18.7 Celcius, and turns off when the wort hits 19. The wort temp is measured by a SS probe inserted directly into the carboy. I'll have some more updates in the coming weeks as I polish everything up now that it's in use.

View all 4 project logs

Enjoy this project?



Mike wrote 11/10/2015 at 02:39 point

Do you think your software will be able to run on a CHIP? Seems similar to a beagle bone and I have a couple coming soon.

  Are you sure? yes | no

deric wrote 11/10/2015 at 03:11 point

Hi Mike,

Yeah, if it runs Linux and has GPIO then you should be able to do something similar.  The project uses some 1-wire Temperature Probes that require a single GPIO input to monitor the two probes, you could get away with a single probe as you don't really need ambient temperature, but it's kind of nice to see.

The SSR's are controlled by GPIO outputs, so you'd need 3 GPIO's to duplicate this project.

  Are you sure? yes | no

TheBestJohn wrote 01/21/2015 at 14:51 point

Any new updates on this?

  Are you sure? yes | no

deric wrote 01/21/2015 at 15:08 point

It's been running for a few weeks, second beer is just finishing fermenting. I've got some work to do to get the WebUI linked back to be able to set temperatures, as well as a lot of work to enable fermentation schedules. I'm also still looking to source a touchscreen for the BBB that will work with Storyboard and allow me to make adjustments on the unit directly.

  Are you sure? yes | no

TheBestJohn wrote 01/23/2015 at 16:04 point


  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates