Arduino + Raspberry Pi to measure fermentation temperature

This is the original Version #1 // it will get you going – please see Version #2 for the dynamic sensor processing and more on plotting the data using an API and code.


temperature logging sensor jig above in fermentor…


Above on the left (Raspberry Pi), middle (breadboard), right (Arduino UNO) – this web site runs on the Pi and you are reading this article right now from it :- )

Home Brewing is more than just the act of beer brewing at home to many people // it is a hobby filled with lots of creativity, ideas and passion.  One of our goals was to capture accurate temperature measurements of the fermentation – once you capture the data you can do things with it.

We decided to use a digital 3 wire temperature sensor also referred to as a 1-wire system, because the data is sent over 1 wire, the other two are the volt and ground cable.

We used a DS18S20 Dallas 1-Wire digital thermometer, this sensor is digital and fairly accurate and the program can delivery the data in C or F or whatever you can program for, and it can send the signal over longer distances than an analog thermister.  Also you can have multiple digital readers on the same wire, since each one is identified with a digital ID and you can separate the sensors within the programming code.


Setup the Arduino + Raspberry driver software // Google this and do it on your own…

So in our setup we used an Arduino UNO connected via the USB cable to a Raspberry Pi B, and the Pi also powers the Arduino, get a better 2.0+ Amp power supply for the Pi, ours is 2.5 Amp. You also have to install drivers that allow the two to communicate over the USB cable (serial) connection of the cable.

STEP #1.1

You need to connect the sensor correctly to a 4.7K ohm pull-up resistor, we used a breadboard to help us with the connections, but you can prototype it better.  The breadboard will connect to the Arduino, below a simple way to show the connections of the cables.  The C code is setup to receive the input on pin 2.




Get a program working in C (language) on the Arduino loaded correctly through the IDE, to read the temperature from the sensor – you will have to learn how to do this part and be overall familiar with the basics of how to use the Arduino.    If you never done this before, (go learn that and then come back to do this step), we are sharing the code that we use below, it compiles fine, you might have to install some dependencies, like the OneWire and Time libraries (learn that too).




Use a Python script on the Rasberrpy Pi to read the signal data being sent by the Arduino, see examples of what we actually use right now below.  This script not only reads the data from the Arduino over the (serial USB) cable but also logs the data to a (tab delimited) text file while appending date/time stamp for each point reading, it does this every 5 seconds.  5 seconds could be an overkill for your project, maybe you want it every 30 seconds, it all depends what you are after and the resolution of the data capture that you need.

Version #2 of this code is available – // it ignores a temp sample if it incoming the same as the one just recorded, saving space if you are recording remotely over long time.


Do a test and record some data for a few days or a few weeks in the background using (nohup), you will have to learn Linux as well.  Run the script basically for a few days or weeks and then learn how to graph the data captured in whatever you see fit best way.  Once you have the data in a flat-file, you can transfer it over network and open the data with many different programs to create a temperature/date-time graph.  You can also use Python to create the graphs as well, etc…

We used a free program (Plot2) on a Mac to open the flat text file to read the data and it would actually automatically plot a graph.  Keep in mind that if you record a test sample of say 2 weeks (of stable temperature that don’t vary much), you will see mostly a flat line, but during fermentation you will see a spike of a few days and then a slow decline as the fermentation finishes off – but as tests go for (code and the sensor) – this is a good start.

So think about it, here you learn about the Arduino, and the Raspberry Pi and Linux, and text files to capture the data and C/Python programming languages, and how to graph the data, this is just scratching the surface.   You can take this much further, from displaying the temperature live on an LCD screen, to graphing it live on a LCD screen, to writing more program code and maybe even regulate a heater band over the fermentor to control the fermentation temperate after the yeast finishes its job, to deal with off-flavors for example and many other things, not just temperature.

You also see the min() and max() ranges the yeast temperature was reached during the reaction time of the fermentation to see if you hit the manufacturers recommended temp ranges, just yet another example of the data’s value.

Bottom line is that you not only learn new things, but capture useful data that you can analyze on and take action with – to in the end improve and make great beer.

Updates will come later with additional data, all our future beers will come with a fermentation charts of the overall process of the yeast used.

Also check out the –  Waldy the Wiz, also makes a great project and he shares all of his hard work – his is a little bit more advanced than our example.

Screen Shot 2015-10-19 at 7.40.50 PM

Imperial Brown Stout 10/11% All Grain Recipe

Mashout, brew date: 9/20/2015 ( next to an IPA on the right, our previous brew )..

OG 1.086 // FG after 2 week fermentation 1.025 – 8% ( we didn’t hit our goal of 10% because of the yeast that we used for this test, but the beer came out super delicious regardless, so it was a success! ) // Next time we will use the WLP007 yeast and should be closer to our target!


This is going to be something new for us, we had plenty of good Porters and Black Stouts, but a Brown Stout ?  🙂 exactly!

Notice the nice Brown foam..


Video of the fermentation the morning after :- )


For our 10 gallon batch we used these grains and also used 1LB of Light DME, to add to the ABV% without affecting the color of the beer or taste too much.

  • 18 lbs of Marris Otter Malt
  • 9 lbs British Brown Malt
  • 4 lbs Amber Malt
  • 1.4 lbs Black Malt (Roasted)
  • 1LB Light DME

6 ounces of Columbus hops (used for bittering) added at the beginning of boil with a 90 minute boil.


Our first choice was WLP007, but it was sold out // so we picked a British Ale #1098 and did a 3 liter starter.  There are many other yeasts you could probably try, depending on what you like.


Semper fIPA – All Grain Recipe



Above picture credit: Danny Ferguson

next we are going to try a recipe by a fellow brewer from the Brew Nerds community on Google+  credit goes to Danny Ferguson

The Semper fIPA was targeted 7% ABV & 70 IBU / our version might vary based on what type of hops we can get, we will post our version later when we brew in about a month.

5.5 gal fermenter volume:

81% 2-row pale
6% German Munich
6% American carapils (dextrin)
4% American crystal 40
3% orange blossom honey (or enough to hit target gravity)


2.0 oz Amarillo leaf FWH – ( First Wort Hops )
0.5 oz Chinook leaf 30 min
1.0 oz Columbus pellet 30 min
1.0 oz Sorachi Ace leaf 15 min
2.0 oz Citra leaf dry hop 5 days

WLP001 yeast

Dog Biscuits/Treats from Spent Grain (Beer Brewing)

Dog Biscuits/Treats from Spent Grain

You can now buy these from us – this is our way or raising cash to fund our operation/blog, since we can’t sell you beer.


HOPS ARE POISONOUS TO DOGS – if you add hops to the Mash, you can’t use the grain to make dog biscuits.

Tip – Most brewers will be too busy brewing the beer so collect a bunch of spent grain after the mash is over, (drain it of the wort) if you don’t want it to be too wet and stick it into the fridge for later, it should be good for a solid week or more.  This way you can make the biscuits a few days later after your brew day when you are not so busy or too tired.

After a few tries using recipes from a Google I decided to make my recipe and combine my experience of bread baking, I list two recipes..

One of the things that I noticed from the Google recipes is that most of them used only 2 cups of spent-grain, that’s little grain.  We all know we have “a lot!” more than 2 cups left after a brew.

Recipe #1 (the more messy recipe that takes more time, see Recipe #2 below if you want a quicker less messy solution)

  • 4 cups of spent grain (no hops were used) – hops are poisonous to dogs
  • 1 cup of – flour (you can combine either of flour types or just use one type)
  • 1 cup of whole flour
  • 2 cups of (beef or chicken) broth for flavor – heat it up in the microwave so that it is luke warm and add the yeast to it
  • 1 egg (use the whole egg, calcium from shell is good if possible)
  • 1/2 packet bread yeast (add to the broth, see above)

In a mixer: grain + flour + broth + egg.. mix it well, you can easily control how sticky it will be by adding chicken broth slowly or less of it, Add 1/2 packet of bread yeast with the broth (pre-heated), roll into a ball and let it sit under a towel for at least an 1 hour to raise..

Roll it out and use cookie cutters to take shape of your biscuits..

Preheat to 350F // bake for 30 ~ 45 minutes…  Since you added yeast, these cookies will be nice and poofy.

After baking, lower temp to 200 ~ 220F and bake them for a few hours (2) to dry them out so that mold don’t take hold later (this largely depends on how thick your cookies are), thicker need longer drying time… We also use grocery paper bags for a week+ to remove any residual moisture, works well.

If your mix is sticky, just keep on adding flour until it’s not, use lots of flour on your work area so that the cookies won’t stick…  If things seem too sticky, don’t give up, add more flour – no matter how crazy it looks!  Also you have an option of using less broth, since that is what made them sticky.

I ended up with 3 sheets of cookies, use foil if you run out of cookie sheets :- ) pre-spray with cooking oil..  If you make your cookies thin, they don’t require as much extra drying time or next to none, don’t assume anything // check and look to make sure you are not overheating and burning them!

Recipe #2

This recipe does not use bread yeast, is simpler and faster to prepare/make and it should not be sticky at all, also you do everything in the mixing bowl, so there is little to clean up later.  If you are short on time go with this one and dogs love peanut butter cookies as well!

Once you have your mix spread out on the cookie sheet, I usually cut it into strips.  If you want to spend the extra time using fancy cookie shapes, go for it.  Dogs don’t care :- )

  • 4 cups of spent grain (ours was pretty dry and stored in the fridge for 2 days after brew day)
  • 1.5 cups of flour (pick type, whole or all purpose), if you grain is more wet, you might need 2 cups, add more if so
  • 2 eggs
  • 1 cup of peanut butter

mix this all up, pre-heat your oven to 350 F and stick it in there for 30 minutes, then reduce heat to 220F and leave it in there for 2 hours.  Again, spray your pan so they won’t stick.




Strong (Wee Heavy) Scottish Scotch Ale – All Grain Recipe



above – Photo credit: Bryan Carr 2015

Below are our photos (is lighter than in the picture), should be – amber color, you should see through the glass to the other side.


15+-+1 15+-+2




Today we are sharing a recipe of another fellow brewer from the Brew Nerds Community on Google+ ( thanks for permission to share your recipe Bryan Carr!! )

Here is his recipe:

OG: 1.100
FG:  1.025
≈ 9.8-10.0 %

15# Maris Otter
1.5# Crystal 60
0.5# Crystal 120
2 oz  Roasted Barley
2 oz  Chocolate

0.5 oz Fuggle @ 90
0.5 oz Fuggle @ 60
1 oz    Northdown @ 15

Yeast: WLP028 White Labs Edinburgh, 1L starter with 3 vials… call it overkill.

Mashed at 146 F for 60 minutes, then brought it up to 156 F for 30 minutes. Mashed Out at 170 F and collected roughly 9 gallons of wort for the boil. It had a 90 minute (rigorous) boil, and final volume of 5.5ish gallons.

Fermented at 70 F in primary for 1 month, then dropped it down to 58 F degrees in secondary for 2 months. Bottle conditioned for 6 weeks.


For our 10 gallon recipe (based on grains/hops/yeast) that we have access to we picked:

  • 30 lbs of Golden Promise, at $1.30 a pound
  • 3 lbs Crystal 60 Lov., at $1.85 a pound
  • 1 lbs Crystal 120 Lov., at $1.85 a pound
  • 4 ounces or 1/4 lb Chocolate malt 350 Lov., at $1.90 a pound

We couldn’t get a hold on the Northdown – substitute Perle hops // also got the Fuggles (multiplied for a 10 gallon batch).  For yeast – Scottish Ale #1728 – using a 2000ml starter.

Further brew details and pics later…

OG was 1.086, FG was 1.014 // so basically 10%

The beer tastes awesome only 1 week out of fermentor (one week in fridge/keg), test pour.. the classic chill haze is there, but a few weeks later it will all naturally clear up, follow-up photo later..  Very drinkable only after 1 week – so I think we have a winner here!






Copper Ale – All Grain Recipe

Here are pictures of our brew 3/22/2015 – after a one month rest ( keg in a fridge at 36F )…  first 2 pics are from artificial light and last 2 from natural window light.

If you want the color darker – increase your Chocolate malt…

copperale_04 copperale_03 copperale_02

after about 5 weeks the beer will clear up completely and show its true Copper color along with achieving its overall profile:







This is a Copper Ale, 5 gallon all grain recipe.  Double everything for a 10 gallon batch.

This one should end up at around 7% ABV, 15 IBU, 14 SRM..

We did a Copper Ale using a different recipe a few years back – use the Search window to find all variations, trying a new one this time…

weight (in lbs) type of grain:

  • 11 lb // domestic 2-row
  • 1 lb // Munich malt
  • 0.45 lb // Victory malt
  • 0.09 lb // Chocolate malt 350L

Hop Schedule:

Northern Brewer hops ( 6.0% Alpha Acid ) // 25 grams – add all of the hops as soon as boil starts, boil for 60 minutes.  Add irish moss in the last 15 ~ 20 minutes of boil.

Wyeast American 1056 yeast should do nicely or use your house strain.

details of our 10 gallon brew on 2/28/2015.. 

  • total water used (mash and sparge) 15.5 gallons
  • we rounded the hops and added 2 ounces total ( or 1 ounce per the original 5gal recipie )
  • we added irish-moss 20 minutes prior to end of boil
  • we made a starter 24 hours before…
  • we start re-circulation 15 minutes before mash-out, to clear up the beer from particles
  • OG was 1.062
  • brew house efficiency ( coming up… )

video of circulation ( 20 min prior to mash-out ):

Final mash-out:

End-of-Boil, in this video I cool my wort and employ the re-circulation pump to remove cooling time as this help to remove the heat faster!  Wort needs to be cooled to the recommended temp. range on the yeast packet – read the specs!

and the final stage, transfer beer to Fermentor – beer that is 10 gallons is to heavy to lift, you need to get a pump at this stage – unless you want to break your back.  You can get away without a pump with 5 gallon batches, but not really with 10+

pitch yeast and wait…

clean up equipment, relax and drink beer, jump into a hot tub!


Brasserie Dieu du Ciel Rosee d’hibiscus ( clone ) all-grain Ale



This recipe comes from a Brew Your Own magazine, January-February 2015 issue, page 40.  We are planning to tweak it a little bit and change it around especially for the yeast and grains that we have access locally from our brew supply store.  This is the all-grain version, they also had a extract only recipe.

Stay tuned!

  • Mash at 152F for 60 minutes – for a dry crisp Ale
  • follow with a 90 minute boil

We will update once we brew it and finalize our recipe and results :- )

5 gallon recipe.

  • 5.2 lb Belgian Pilsner malt – substitute for what you can get
  • 4 lb Wheat malt
  • 1 lb light candi sugar – add in last 5 minutes of boil

Hops schedule:

  • 1/4 oz or 7 grams of Nelson Sauvin hops at 40 minutes after boil starts
  • 0.4 oz or 11 grams of Nelson Sauvin hops at 10 minutes from end of boil

Other ingredients:

  • 2 to 4 ounces of dried hibiscus – last 5 minutes of boil / the more the more pinkish it will be
  • 1/2 ounce coriander seed – end of boil (crush these before using with a roller of some kind or a beer bottle), let it soak for 5 minutes before starting to cool and chill the wort


We plan to use a 1214 Belgian Abbey yeast here, but original recipe calls for a WLP400 (Belgian Wit Ale) or a Fermentis Safbrew T-58 yeast…

Carbonate to 2-2.5 volume of co2.