Intro: Arduino Kombucha Thermostat
I've always loved Kombucha, but in the store it is so expensive. At around $4 per 12 oz. there is no way I could afford to drink it as much as I wanted. I looked into making my own kombucha and realized it wasn't that hard at all, and didn't require too many resources. I bought this kit to get me started, but you may already have a lot of these items, so don't buy something you already have! I am a full time student, and I'm almost never at home, so I figured I would try to build a circuit using an Arduino to automate the heat regulation.
Required Items to Make the Circuit:
- Arduino Uno (if you don't already have an Arduino, I'd recommend getting a kit to start. I started with this, and it came with the LCD, breadboard, buzzer, LED, and a TMP36 temperature sensor that can be used OUTSIDE the kombucha)
- Breadboard and wires
- DS18B20 Temperature Sensor (You will also need a 4.7k Resistor)
- Relay Module
Optional Items to Make the Circuit:
Required Items to Make Kombucha:
I got this kit, which has everything below and more.
- Kombucha Scoby
- 1 Gallon Glass Jar
- Black, Green, or Oolong Tea
- Refined Sugar
- Glass Bottles with Lids (to put the kombucha in for the second ferment)
Step 1: Starting the First Fermentation
For this step, we won't need any electronics, just a small pot, sugar, the scoby, and some tea.
- Bring 4 cups of water to a boil. Once there is a nice rolling boil, turn off the heat.
- Either take 6 tea bags, or pour 3 tablespoons of loose leaf black, green, or oolong tea into a cotton tea bag and add to the pot.
- Steep for 5-7 minutes.
- Remove tea bag(s) and discard tea.
- Add 1 cup of sugar into the pot and stir. Don't worry about drinking that much sugar, the scoby eats most of the sugar during fermentation.
- Once the sugar is dissolved, pour the sweet tea into the 1 gallon brew jar.
- Pour in 8 cups of COLD, FILTERED water. I use cold bottled water.
- The mixture should now be room temperature, or a little above. Just make sure the water isn't above 86 degrees in Freedom units before moving onto the next step.
- Add the scoby and liquid starter it comes in to the mixture. Stir ONLY ONCE.
- Cover the jar with a cotton cloth and seal with a rubber band.
Now we have our (soon to be) kombucha, let's give it a microcontroller brain.....
Step 2: Building the Circuit
To start the second step, first set up the Arduino next to a breadboard, and assemble all the parts needed to help yourself out in the long run. To make it easier on your eyes, I split the circuit into 3 diagrams, the LCD, the notifiers, and the temperature sensor. Obligatory I made all of these diagrams with Fritzing. The last picture is of my circuit. Don't worry if your circuit doesn't look as neat as mine. (;
***Please note, the analog side of the Arduino is NOT used. Do not plug any wires in to those slots.***
I'll start with the temperature sensor. My DS18B20 had a red, blue, and yellow wire, yours should have similar colors. The red connects to 5V, the blue connects to GND. The yellow is interesting, because it is the data wire, but it needs some supplemental power via a 4.7k Ohm resistor, so the yellow connects to pin 13 on the Arduino, and the 4.7k Ohm resistor goes from the yellow to 5V. Reference the picture to better understand.
* The LCD takes up the most space and makes the whole thing look insane, but its fairly simple. I'll be going in order from LEFT to RIGHT, starting at 1, and ending at 16.
- 1st pin goes to GND.
- 2nd pin goes to 5V
- 3rd pin goes to GND.
- 4th pin goes to 12 on the Arduino.
- 5th pin goes to GND.
- 6th pin goes to 11 on the Arduino.
- Pins 7-10 are not used.
- 11th pin goes to 5 on the Arduino.
- 12th pin goes to 4 on the Arduino.
- 13th pin goes to 3 on the Arduino.
- 14th pin goes to 2 on the Arduino.
- 15th pin connects to 5V through a 330 Ohm resistor.
- 16th pin connects to GND.
The relay is the most important part for the Thermostat part, because it controls when the heater turns on or off. To actually build the module, I used this tutorial from SparkFun. I used this website, which helps distinguish where the wires go. Alternatively, you can buy an IOT Relay from SparkFun or Adafruit that does the same thing. I put the data pin on the relay to Digital pin 6 on the Arduino. I set my relay up for NC, or Normally Closed, so if you choose to have it as NO, or Normally Open, you would need to alter the code.
Lastly, what I call the notifiers. This is an alternative, and not necessary part. Basically, if you don't want the relay controlling when the heater turns on and off, you can manually do it whenever you hear beeping. There is an LED, and a Piezo buzzer. The LED's longer side connects to a 220 Ohm resistor, which connects to pin 8 on the Arduino. The shorter side connects to GND. The buzzer has a positive side and a negative side, usually marked by a + and - respectively. The + side goes to pin 9 on the Arduino, the - side goes to GND.
* Keep in mind, I made this project open source so that you could modify it to what you have! If you don't have an LCD, you can modify the code to work just the same without one!
Step 3: The Best Part... Writing the Code!
There is no better sense of pride and accomplishment than that of writing code that works first try! Unfortunately that was not the case for me, but it is still fun when it works.You will need the Arduino IDE to flash the code to the Uno. There are other ways, but this is the simplest. If you don't have the IDE set up or installed, please tumble down this rabbit hole.
First step is the initialization. There are three Libraries necessary for this code, all of which can be downloaded through the Arduino IDE, by going to Sketch -> Include Libraries -> Manage Libraries... then search for and install the OneWire, LiquidCrystal, and Dallas Temperature libraries. I have attached the code, and uploaded it to my Github! The file is called KombuchaThermostat.ino.
The code is directly upload-able if you want just the relay (e.g. no LED or Buzzer), and you set it up as a Normally Closed relay. Otherwise, I have written the alternative code, and debugging strategies in, they're just commented out. My code is licensed under the Public Domain, so feel free to modify the code to your style and liking.
Debugging is not at all scary, especially with Arduino.
- If your code isn't compiling, chances are you don't have the libraries installed.
- If it isn't uploading, chances are you have selected the wrong port, board, or programmer. The above link to set up the IDE is a great resource to make sure you have all your stuff configured properly.
- If the temperatures look weird, uncomment all the lines with "Serial" in it, and open up the Serial monitor to see what your temperatures look like.
This code has been tested on Ubuntu 16.04.
If it works on your system with a different operating system, let me know and I'll add it to the list!