Archive by Author

Temporarily no knobs (aka avoid hongkongsuperseller / PARTSPIPE!)

Hi Guys,

My supplier for rotary encoder knobs (hongkongsuperseller aka partspipe) is acting very unprofessional and that’s why 50 days after paying, I still don’t have the rotary encoders in stock. Sorry!
I am now shipping the BrewPi shields without these aluminum knobs, because their only function is to make the rotary encoder look good. The rotary encoder is fully functional without it and I think most people care more about their beer than about the looks of the controller.

Continue Reading →

BrewPi Case redesign: meet version 2.0!

Hi Brewers!

We have given the BrewPi case a major overhaul and are very pleased to present you the results: a more compact and much better looking design.

Continue Reading →

Everything back in stock!

Our debugging partner is watching over our new stock and the packages ready to ship!

Our debugging partner is watching over our new stock and the packages ready to ship!

Good news! Everything is back in stock in the shop.

After a slight delay on the delivery of new PCBs, we now have enough stock, just in time for Christmas. The BrewPi shields are still available as fully assembled or as a kit:

  • Fully assembled BrewPi Arduino shield
    All connectors, buzzer, rotary encoder are soldered. Your guide starts here. The fully assembled shields require no soldering and they are tested before shipping. You just have to plug in all wires and if you got one, assemble the case.
  • BrewPi Arduino shield kit
    Solder all connectors, buzzer and rotary encoder yourself, probably an hour of work. Your soldering guide starts here.

This time, we have also outsourced the connector assembly of the shields to our experienced Dutch production partner, which means:

  • Shields are assembled by a professional wave soldering process.
  • More time for software development and the BrewPi community.

More news soon…

Happy brewing!

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…

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:
New sensors:

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

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 →