Attention: new temp sensors have colors swapped!

I got an e-mail from a customer that could not get his temperature sensors to work. After double checking his setup, I decided to investigate the issue further and connected a new sensor to my own setup: sensor was not found. What the hell?

I got a knife and cut open one of the new sensors and that exposed the issue: my supplier suddenly swapped the colors!
Luckily red is still 5V, so no sensors are damaged by this mistake: if your sensors do not work, try swapping the yellow and green wire.

Old sensors:
GROUND  –  DATA  –  5V
New sensors:
GROUND  –  DATA  –  5V

If your order was shipped after June 28, you probably got the new sensors.

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.

Update: pre-orders are shipping, new shield, new cases, major release coming up!

Hi guys,

This will be just a quick status update, I will post more details next week on the new hardware and especially the new software 🙂

First of all I want to thank everyone who pre-ordered for their patience. I had quite a few setbacks in producing the new batch and I made you all wait a long time for your BrewPi goodies. Your early support helped me trough the set backs. You did get the RevC shield for the RevA price, hopefully that makes up for it a bit.

Delay 1: 200 unusable RevB PCBs 

The first major cause of delay was a design error on the RevB shield: I replaced the screw terminals with pluggable terminals, but made the holes for the terminals too small. The pins of the new connectors just didn’t fit in the new holes. Stupid and expensive mistake. Drilling the holes bigger was not really an option, because on top of being a lot of work, it would make the board unreliable. I decided to order new PCB’s and do it right instead of patching the old ones. So that is why the new boards are called RevC.

So if anyone knows a cool way to use the 200 dud boards, let me know! I thought about giving them away as coasters, but they do have a lot of holes in them…

To prevent further errors and have some more time for software development, I decided to outsource assembly too. New boards are assembled by an automated pick & and place machine and professionally soldered in a vapor phase reflow oven.

Delay 2: The new BrewPi cases, laser cutter fire and unusable cases

The new case design for the RevC boards had to wait on the boards to be assembled, so we could do some test fits and make sure everything aligned properly. We did 3 test versions before we reached the final design. The new design does look awesome though! It introduces the ability to turn the Raspberry Pi in 90 degrees steps, has a big logo on top of the Pi case and the new pluggable terminals work much better with the case.

Unfortunately, while the laser company was making this batch they had a fire in the laser cutter that destroyed the honeycomb cutting table. They tried to finish the batch with a different cutting table, but it caused to much temperature stress in the material. This caused tiny cracks in the perspex and made the cases ugly and easy to break.

Tiny cracks in the failed batch of cases

Tiny cracks in the failed batch of cases

When they got the laster cutter back from repairs, they quickly redid the whole batch for me. The result is perfect again 🙂

The new RevC boards

I will introduce the new RevC boards in more detail in an upcoming blog post, so I will just give you a quick rundown here:

  • Pluggable terminals. Screwing the tiny terminals for the temperature sensors sucked. Having to screw everything in a tight spot in your case sucks. The new pluggable terminals have one part that you screw to your cable and later you can just plug it into the other part of the connector, which is soldered to the board.
  • 4 SSR outputs. The new board has 2 more outputs, so you can have an output for a heater, cooler, fan and a light.
  • Just one OneWire bus. Having a separate pin for each sensor was fool-proof for the first board, but actually using the OneWire protocol and assigning sensors based on address opens up new possibilities. Just label your sensors and plug them all into the same bus, the Arduino will remember which is which. The new software adds support for an Ambient sensor too.
    To help you connect multiple sensors, the shield will come with a 1 to 6 distribution board for OneWire.

Pre-orders are closed now. When I have processed all pre-orders, the shop will open again with a new guided ordering process.

Software support for the new shields

Because of the hardware changes in the shields, the new RevC shields are only supported by the new dynaconfig branch. If you already received your new RevC shield, please give us one more week to work out the last bugs: we have been very busy.

The AVR part is as good as finished, but the script support and web interface support is still a work in progress. If you can give us a bit more time, your install will be a lot smoother!


I’d like to end with some phone quality pictures of the new case. Better pictures after the weekend!

Top view of the new case New Raspberry Pi case New case and new pluggable terminals

BrewPi Case release & instructions

Woohoo, the BrewPi Case is finally here! The latest version is a slightly revised version of our previously posted model and can now be ordered in the BrewPi shop. The kit from the shop can ship in a flat package that fits through a normal mail slot.

All laser cut parts, screws, washers and spacers come with the kit so all you’ll need is a Phillips screwdriver and a few minutes of your time. We made an instruction guide that describes the assembly of the case. It’s pretty straightforward but the steps require a specific order.

As you can see below, the case is fully transparent. After all, why would you want to hide those beautiful geeky bits?


Soldering guide now online!

I have added a detailed guide on how to solder the BrewPi Arduino shield kit to the menu. I had a friend take lots of pictures while I assembled a kit, so I have a photo of every step! That should help in not soldering components to the wrong side or in the wrong order.

Check it out here.

Shield code on GitHub and UNO compatible!

Hi Guys,

Just a quick update.The Arduino code for BrewPi with the new shield is on GitHub. The code is now fully compatible with the Arduino Leonardo and the Arduino UNO.

You can grab a pre-compiled HEX file from GitHub here.

If you want to compile the code yourself, select the right device in Atmel Studio (Atmega32u4 or Atmega328P) and change the Arduino include dir (leonardo or standard). Also, be sure to re-compile all files.

I am trying to get the code working in Eclipse, for those who are working on Mac or Linux. The updated code for the BrewPi Shield is now under the ‘shield’ master branch, which will soon become the master branch.

I had some bumps on the road in trying to ship the orders and updating the code, which has caused more delays than I had wished for. I will try to get all open orders shipped by Monday, but it is a bit more work than I expected. I definitely should have charged more for full assembly, but I will keep it at €5 for this run. We shot a lot of pictures today for the soldering guide, which will be online shortly.



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 →

BrewPi Case!

Hi everyone!

We are ‘Van Alles Wat Ontwerp’, a small design agency, founded by three DIY enthusiasts. Elco asked us to design a case for the Brewing controller as he had his hands full working on the software and electronics.

Apart from beer, we like 3D printers, laser cutters, brewing beer, White Castle, tasting beer, sniffing soldering fumes, bottling beer, working long hours and yet, we still found the time to graduate as Masters of Science.

With this post we would like to propose our case-design to the community. We hope to get some feedback from you so we can improve the case!

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 →