Archive | Major updates

RSS feed for this section

Only major developments will be posted in this category.

Introducing the BrewPi Spark

It has been a long time since we last posted an update on our blog, so this is going to be a big one. We are proud to announce a new version of our hardware, the BrewPi Spark!

The BrewPi Spark will replace the BrewPi Arduino Shield. We shipped about a 1000 BrewPi Arduino shields since we first released them. The Arduino was an excellent platform for us to grow but we are running into its limits. With the BrewPi Spark, we are leaving the Arduino platform and are switching to the much more powerful Spark Core. With on board WiFi, it really is the ideal platform for an Internet connected brewing controller. Please see the images below for a quick overview.


This slideshow requires JavaScript.




BrewPi Spark Board overview


The BrewPi Spark

With this switch to a new platform, we decided to do a complete redesign of our hardware. We learned a lot from making the Arduino version of BrewPi and decided to do a major overhaul to address a few key issues:

Plug an play

The Arduino Shield came with a bag of parts, a separate display, Arduino and lots of panels to build the case. Assembling your brewing controller took a lot of steps, which where not all easy. With the new BrewPi Spark, we decided to not leave assembly to the end user. It will come inside an very pretty enclosure, ready to use. Just plug in your sensors and play!

A better display and menu

The character LCD on the Arduino version could only fit 80 characters. To display beer, fridge and room temperature, we had to alternate what was displayed on the screen. With our new 320×240 color TFT touch screen, we can fit 1500 characters in the smallest font. So there is plenty of space to display all your settings and temperatures.

The touch interface will also be a lot more intuitive to use.


We took 3 steps to increase reliability of the system:

  • Sensors now come with RJ11 connectors
  • High quality push-fit terminal blocks for the SSRs: easier to use and more reliable than the previous screw terminal blocks.
  • An on board OneWire bus master with strong pull-up. This will increase reliability in large OneWire networks.

Local data logging

The BrewPi Spark has an SD card slot for local data logging, in case WiFi is not available.

Modular and expandable

The BrewPi Spark is designed to be a central control unit for your entire brewery. So why does it only have 3 outputs and 4 inputs? (Hint: it doesn’t).

Almost all brewing panels I have seen so far have a central control panel with a wire going to every sensor. When I started designing my mashing system, I quickly realized that this would become one big mess of wires: my HERMS has 6 temperature sensors, 12 motorized ball valves, 2 pumps and 2 heating elements. So I needed a different solution, and that was address based communication.

Each RJ12 socket on the BrewPi Spark has the same 6 signals: 

  • OneWire
  • RS-485 (2 pins)
  • 12V
  • 5V
  • GND

Both OneWire and RS-485 are address based protocols: you can connect as many devices as you like and they will be automatically discovered. You can then name the device and set it up for control. OneWire will be used for temperature sensors, valve controllers, SSR drivers and more in the future. RS-485 will be the protocol to talk to other micro-controllers for more complex sensors later.

So how does that work in a brewing setup? Here is a sneak preview of my HERMS. In a future blog post I’ll tell you everything about it. It really deserves its own post.

As I said before, my HERMS has 6 temperature sensors and 12 ball valves, controlled by 6 dual ball valve controllers. These are all on the same OneWire bus. In the photo below, you can see 6 of my ball valves, which determine to which kettle the water or wort is pumped.


Here is the controller in my HERMS control panel. As you can see, only a single cable comes out at the top. This cable connects to all sensors and ball valves in my setup.

Here is the controller in my HERMS control panel. As you can see, only a single cable comes out at the top. This cable connects to all sensors and ball valves in my setup.


My ball valve controllers, daisy chained with temperature sensors in between.

My ball valve controllers, daisy chained with temperature sensors in between.

In the photo you can see 12 RJ12 sockets and plugs (3 x 4). The leftmost cable comes from the control panel. The fourth cable in each block daisy chains to the next block. In the middle of each block, 2 temperature sensors are connected. Here you can really see the benefit of a bus protocol: wiring is a piece of cake!

Multiple fridges? Mash and fermentation control together?

The Spark Core is powerful enough to run multiple control loops at once. So you should be able to just run an RJ12 cable to your fridge on the other side of your brewery and set up another controller in the software. To make it easy to do this, we are going to sell an SSR expansion board. It is controlled by OneWire and drives 2 SSRs. It has 4 RJ12 sockets, so minus the cable coming in, you have room left to plug in 3 temperature sensors.

SSR expansion board


New temperature sensors

From now on, we are going to sell our OneWire temperature sensors with an RJ11 plug (RJ11 connects to middle four pins in RJ12 sockets). They will still have silicone cables and will be guaranteed water and high temperature proof. We increased the cable length to 1.5m.

Next to the standard temperature sensors, we will also offer threaded OneWire sensors that can fit into a BSP or NPT tee. The cables can be disconnected for when you need to clean your kettle.

What about the Raspberry Pi?

BrewPi will still use the Raspberry Pi for the web interface and for data logging: the Spark Core is not powerful enough to host a website. But without the need for a USB connection between the controller and the pi, it will be easier to swap out the Pi for a different web server.

With this combination of an embedded device for control and a (mini) computer to host a web interface you get the best of both worlds: The reliability of an embedded platform and a beautiful web interface.

In the future, we will also support connecting multiple Spark cores to a single web interface.

What about the Spark Photon?

The Photon is the successor of the Spark Core and will come out in March 2015. They managed to cut the price in half, while increasing the processor speed and memory space. It is pin compatible with the current Spark Core, so we decided not to wait for its release and work with the currently available hardware.


When can I order?

The controllers are almost ready, the enclosures are still being manufactured. Due to the Christmas holiday, I probably cannot ship the first units until January.

I have not found the the time yet to get our new web shop ready for pre-orders: making the controller, building my HERMS, testing, it was all a lot of work.

Because many people have inquired about giving BrewPi as a Christmas gift, I still wanted to announce our new controller today. Now you know why the old controller is out of stock!


What will they cost?

The BrewPi Spark, fully assembled with a Spark Core, inside will cost 125 euro. If you already have a Spark Core, you can buy the board, display and enclosure for 95 euro.


Christmas Gifts

As soon as possible (hopefully tomorrow), I will add the option to buy gift cards to our shop. That will buy me some time to properly add all the items to our store and the brewer you love can pick his own toys, so you don’t have to guess what he needs.

If you already have a pending order in our shop and want to convert it to a gift card, let me know by e-mail.



Fridge hacking guide now online!

I recently helped Koen to convert his fridge into a BrewPi fermentation fridge. We added OneWire temperature sensors and hacked the fridge for fermentation temperature control.

BrewPi Fridge Conversion: Done!

My own fridge has seen too many experiments, it has been sawed in and I modded it before I really knew how fridges were wired. It works, but it’s not pretty.

Koen provided me with a blank slate to do a proper build. We made a lot of photo’s of our build process, explain how fridges are wired, show easier alternatives to what we built and give advice in picking a fridge and the other parts. So what are you waiting for?

To the guide!


New BrewPi release available! Update now!

Hi Brewers!

It has been too long since our last release, but this is a good one! We added a few scripts to help you install and update BrewPi, which should make the whole release process a lot easier in the future.

Integrated temperature profile dialog

The biggest change in this release is that we got rid of Google docs for the temperature profiles. The Google doc profile was an ugly relic from the very first version from 2012. It is now replaced by a much nicer interface, right in the web interface.

Brian Schwinn contributed most of the code for this new interface, and we worked toghether to add previews, automatic sorting by date, start/insert now buttons, and much more. Just update and give it a go.

Install script

Getting your BrewPi up and running was a cumbersome process that required you to enter lots of commands in the linux terminal. Geo van O. worked with me to create an install script that does most of the work for you: installing packages, creating user accounts, cloning the repositories from GitHub, setting up a CRON job, etc.

You can now just clone the brewpi-tools repository, run the installer and answer a few questions. After that, you can go straight to programming the Arduino and setting up devices. You can also use the installer for a clean reinstall.

New install instructions here

Update script

Updating BrewPi was also a daunting process for most users: working with command line git can be quite complex. Geo and I wrote a python script to help you do it.

The updater will check your repositories and compare them with their remotes. If an update has been found, it will ask you to apply it. It can also stash changes for you on a merge conflict. If you prefer working with your own fork on GitHub, no problem. If you have configured multiple remotes the updater will ask you which to use. So even for git veterans, this can be a handy tool.

After pulling updates, the updater will run scripts from your brewpi-scripts repo to fix file permissions, install any new dependencies and update the CRON job to the newest format.

After running the updater, don’t forget to upload a new hex file to your Arduino too.

Update instructions here

Start, stop and pause data logging

You can now click on the beer name to display a menu to:

  • Stop the current brew. This sets the active brew to None and stops data logging.
  • Start a new brew. Stops the current brew and starts a new one.
  • Pause/continue data logging. Need to fiddle with your sensors? You can now temporarily stop logging, so you graph won’t get an ugly spike.

Temperate control algorithm tweaks to reduce overshoot

A few users with fast fridges reported temperature overshoots or quick cycling between heating and cooling. I have modified the temperature algorithm and reduced the aggressiveness of the default PID paramters to reduce this. See the changelog for the full list of changes.

Full changelog

I have only listed the biggest changes here, but you can check out the full changelog here:

Full changelog for release of October 22nd 1023

Finally, here are a few screenshots…

This is BrewPi 0.2!

I have kept you guys waiting for a long time, but it’s finally here:

BrewPi 0.2 is out!

If you’re new to BrewPi, here’s a quick overview:

BrewPi is an open source temperature controller for brewing based on Raspberry Pi and Arduino. The Arduino can even run standalone, so if your Pi crashes your beer is still safe. But the combination of both systems gives you the best of both worlds: stability, a fancy web interface and data logging.

BrewPi accurately controls the temperature of a fermenting beer or wine, by controlling the temperature of the fridge that holds your carboy. With this dual zone setup (the beer temperature and the fridge temperature) it can hold your beer temperature far more steady than usual thermostat-controlled devices like the STC-1000 or Johnson controller. BrewPi can operate in 3 modes: constant beer temperature, constant fridge temperate, or it can follow a temperature profile for your beer.

In this post I will outline the biggest changes that come with BrewPi 0.2.

The new RevC BrewPi Shields

The shields got an update with 3 big changes:

  • 4 outputs for actuators instead of 2. Please refer to the next section for what they can be used for.
  • Just 1 OneWire bus instead of 2: all sensors are now identified by their address.
  • Lots of pluggable terminals and a OneWire distribution board: these terminals are much easier to work with than the previous screw terminals. You just screw one part to your cable and solder the other part to the PCB. Plug and play!

You can still order the BrewPi Arduino shield as a kit or fully assembled.

The case also got an update: the Raspberry Pi case now has a big BrewPi logo on top and can be mounted in different orientations.

Dynamic, flexible configuration of sensors and actuators

This idea started in the mind of Matthew McGowan: instead of just adding support for the address based temperature sensors, why not make everything flexible? He proceeded to write a device manager for the Arduino. This device manager lets us configure temperature sensors, a heater, cooler, fan, door switch and a light, all over the serial port.

I worked very closely with Matthew on this release I am very thankful for the many, many hours he put in. I could not have written this code myself. Apart from his code contributions he has also been a great support on the forums, the IRC channel and the Wiki!

To give you an idea of how much work went into this: the new Arduino codebase counts 7378 lines of code vs 3386 in the previous release (counted by CLOC). The changes were spread over 309 commits! And that is just the Arduino repository by the way.

The biggest task however, was trying to squeeze all this new functionality into the Arduino Leonardo. Due to its native USB capabilities it has a bigger bootloader AND bigger includes for serial. This means that out of the 32kB total, the Leonardo has 6kB less space for your own code!

We basically refactored every file in the repository to squeeze every byte we could find. This means there is not much size optimization left and we might not be able to support the Leonardo for all new features in a next release due to code size constraints.

Right, back to the device manager: I have added a new tab in the web interface that lets you setup your devices. It automatically discovers OneWire devices and pins that have a terminal on your shield. But you can define your own pins too, just click ‘add new device’. So RevA shield owners can get the exact same functionality as revC users, they just have to add the connector themselves :).

Here is screenshot of the device manager, with all devices installed:

Here is a device list with all devices installed. You can leave out any device you don't have.

Here is a device list with all devices installed. You can leave out any device you don’t have.

In the web interface, you can assign a device to a chamber/beer and assign it a function. You can also set whether the pin should be inverted or not. Right now, you can only choose Chamber 1 and Beer 1, but we are preparing ourselves for multi-beer and multi-chamber setups!

The plan is to support for example having 2 beers fermenting at the same time in one fridge: the fridge is set to the average or minimum temperature required by both beers. The beers can also get their own private heater, so the fridge can cool for the minimum of both but the other beer can adjust by heating separately.

Support for a room temperature sensor, fan and separate light controller

With the new device manager, you have the option to install more devices that just 2 temperature sensors, a heater and a cooler. The following new devices have been added:

  • Room temperature sensor: this sensor is not used in the control algorithm, but the data will be logged and displayed in the graphs. If you want to put it into a secondary beer, that is entirely up to you 😉
  • Fan: this actuator will be active when either heating or cooling is active. Mount the fan inside your fridge and improve heat exchange by circulating the air.
  • Light: you now have a separate device to control a light source, it can be turned on when the door opens, can be used as heater and we even have a device called ‘camera light’: it can be turned on and off remotely for a feature webcam addition.

No more Flash: Google Visualizations replaced by JavaScript alternative dygraphs!

While the Google Annotated Timeline charts were a great starting point 2 years ago, they sure had their downsides: no customization, a bit slow to load and not supported by iOS. I have been wanting to replace them for a long time, but again Matthew took the initiative and found dygraphs: a JavaScript and HTML based chart library with great features. After he coded the core bits to replace the Google chart, I did the finishing touches.

Dygraphs supports Google’s data format, so it will still display your old beers. Dygraph loads much faster, supports horizontal and vertical zooming (pinch to zoom on phones and tablets!), and supports a custom interaction model. What we have now is just the ability to toggle the lines on and off, but we will improve on that for the next release.

With Dygraphs we also added a nice way to show what the fridge is doing: cooling, heating, idle or waiting. This is displayed by a colored bar at the bottom of the graph.

Better info on what your fridge is doing

BrewPi has as a quite advanced temperature control algorithm: it calculates a PID value from the proportional error, integral and derivative of the beer temperature and adds this to the beer setting to get a fridge temperature. With a predictive on/off algorithm the fridge tries to hit that target. There are also time limits for switching and cycling to not break your compressor and save power.

While the previous release just displayed heating, cooling or idle on the LCD, BrewPi 0.2 displays things like ‘Waiting to cool’ with a countdown timer.

So you don’t have to wonder why your fridge is not turning on anymore. You can also see the actual PID values on the ‘control algorithm’. For an overview of the states, see the last screenshot of dygraphs above.


Better programming from the web interface with settings restore

The programming script got a big overhaul to make it more robust and give more feedback. Updating your Arduino should be a breeze now!

Programming is a one-pager now and the log is automatically refreshed every second so you can watch the progress. All your settings and devices are restored where possible and they are backed up to a file.

Matthew also set up a build server to automate compiling the AVR code for every possible Arduino and shield combination (I’m so lucky to have him around!). So from now on, you can get the latest hex files from the BrewPi servers!

Updating your Arduino in BrewPi 0.2 gives you live updates of the programming progress by displaying an auto-scrolling log.

Updating your Arduino in BrewPi 0.2 gives you live updates of the programming progress by displaying an auto-scrolling log.

New command line options to control BrewPi

BrewPi now checks whether another instance is already running at start-up and has various options to deal with that (status update, close, kill, replace).

BrewPi 0.2 supports some new commands to manage running processes

BrewPi 0.2 supports some new commands to manage running processes

Other updates:

Only the biggest are mentioned here, and its technical stuff. If you are reading this for fun you can stop here 😉


  •  Temperature control algorithm improvements, mainly better integral windup prevention
  • Better rotary encoder implementation which is smaller and has better debouncing
  • New system for debug messages: INFO, WARNING and ERROR. All sent as ID + values
  • Support for DS2413 OneWire actuators
  • Makefile added
  • Added output of a version string for compatibility checking
  • Simulation support
  • Split config files in a fallback config and user config

Web interface:

  • Updated jQuery and jQuery UI to the latest version
  • Log files now received with AJAX and only the last 16kB of the file is sent to prevent fetching huge files.
  • Temperature setting can be typed and set with arrow keys
  • Lots of layout and CSS improvements

Python script:

  • Split config files in default config and user config, so updates don’t break your config
  • Detection of Arduino and board type to send available pins to the web interface

This release was a big step forward, but there is still a ton of stuff to do. So if you would like to help out, check out the BrewPi To-do List on the forums.

The shop is open again and everything is back in stock. Updating the soldering guide and install instructions is the very next thing on my to-do list.

The BrewPi shop is open for business!

Hi Guys!

I am proud to announce that the BrewPi shop is open to take your orders! Unfortunately stock is limited for two reasons:

  • This was the first time I ordered most of the parts, so I did not want to order much more than 100 of each.
  • China is on holiday! The timing of my product launch is a bit unfortunate. I cannot order more parts because all factories are closed. I worked my ass off before I went to Monkigras to order the stock I have now, just before all factories closed. More details on Monkigras later, when the video of my talk is released.

If the shields/parts sell out, they will automatically switch to pre-order. I will order a new batch as soon as China opens for business again, but I probably cannot ship anything before the end of February.

You can buy all these parts in one go, but if you already have some components, you can also order them separately. A normal shield comes like this: SMD is soldered, solder the connectors yourself. If you want me to solder it for you, you can choose that in the shop.

You can buy all these parts in one go, but if you already have some components, you can also order them separately.
By default SMD is soldered and you will solder the connectors yourself. If you want me to solder them for you, you can choose that option in the shop. There is a check box on the shield product page for that.

An assembled shield will look like this.

An assembled shield will look like this.

More info about new design choices after the break.

Continue Reading →

Here are some pics of assembled shields

Hi guys,

The first BrewPi shields are ready for testing. I will try to update the code for the new shields this week and in the meantime I am also looking for the best place to buy the parts. Unfortunately I can already tell you that connectors are expensive, especially when you want high quality ones. Suggestions are welcome.

I cannot comment on the price of the kit until I have found the right suppliers. I still hope to start selling these in January.

For those interested on how I do the SMD assembly: check out this gallery on imgur.

Finally, I have started an IRC channel for BrewPi on Freenode. I am always logged in, so if you want to chat with me directly, this is the easiest way. Please come and chat about beer and electronics!

Here are the boards in 3 stages: Just SMD assembled, all components assembled and ready for testing: LCD connected, temperature sensors connected and all breakout boards connected.

Here are the boards in 3 stages: Just SMD assembled, all components assembled and ready for testing: LCD connected, temperature sensors connected and all breakout boards connected.

Continue Reading →

Check out these BrewPi Arduino shield PCBs :)

I just want to quickly share some photos of the boards for the BrewPi Arduino shield. I ordered them in yellow with white silk screen, how’s that for a beer board?

Continue Reading →

BrewPi shield ready for approval..

I have finally finished routing a PCB for a BrewPi Arduino shield! It took a bit longer than expected.

I posted it on the forum, so head over to the forum and please check my work for errors, so I can go to manufacturing as soon as possible.

You soon will be able to buy this shield as a bare PCB, with SMT soldered, or fully soldered. This is a first step to making BrewPi a bit more plug and play.

BrewPi released! All source code online, a wiki, a forum, a bug tracker.. Let’s go!

I have been working really hard towards this day and I am proud to announce that as of today BrewPi is fully open source! Sorry to have kept you waiting for so long, but it just takes so much more time when you are building something that anyone should be able to use compared to hacking something together for yourself.

BrewPi is an open source fermentation controller that runs on an Arduino (for now) and a Raspberry Pi. It can control your beer temperature with 0.1 degree precision, log temperature data in nice graphs and is fully configurable from a web interface.

If you are not into brewing, but do like to thinker with electronics, give the article a read. I had to invent many little things that could be very helpful for other projects too. I can think of a lot of cool things you could that involve controlling an Arduino from a web browser.

To give you an idea of the features, here’s a slide show:

Continue Reading →