HOWTO - Make a BrewPi Fermentation Controller For Cheap

Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum

Help Support Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
Status
Not open for further replies.
Honestly, I wouldn't use anything smaller than 16g wire for this project, because we are using compressors fans and resistive heating elements. while 18g is ok for short (very short like 4" or less) runs, when a motor fires up it can momentarily use up to 900 percent amp draw. and we're talking 18g stranded too which has even less usability than solid. No matter how big your power cable you're still stifled at the "bottle neck" of the smaller gauge wire. now this can be negated slightly by using an oversized neutral and ground to allow the "flow" of electricity to move more easily, but it doesn't really make sense in an alternating current scenario. there isn't necessarily anything wrong with 18g for newer more energy efficient coolers and such, but some of us use older equipment because it's easy to find or comes a much cheaper price. and don't be fooled because you have a smaller fridge, the working components are usually the same size or minimally smaller than their larger counterparts.
 
Last edited by a moderator:
Thanks @day_trippr ... Assuming this goes well my next goal will be to integrate the LCD screen using the instructions in the thread you started.

I've never soldered before, should be interesting...

Flux is your friend.
 
Still trying to figure this out.

STILL STRUGGLING!

First I COPY and paste this:

ls /dev/ttyACM*

The response is this:

ls: cannot access /dev/ttyACM*: No such file or directory

What did I do wrong?
 
What file did you edit to change the color format to blue and the led from yellow?

To change the LCD text:
In the style.css file (in /var/www/css/) around line 187 you should see ".lcd-line{"

Within that is "color:#xxxxxx" which I changed to #daf5ff"

Code:
.lcd-line{
	float: left;
	clear: left;
	font-size: 16px;
	font-weight: normal;
	font-style: normal;
	font-family: '5x8LCDHD44780UA02Regular', monospace;
	color: #daf5ff;
	white-space: pre;
}

The background color was a little more difficult, I'll have to find the original file (or if someone can message me the content of their style.css file) I can rework it and let you know what all to change.
 
This is what I got.

$ ls /dev/tty*
/dev/tty /dev/tty19 /dev/tty3 /dev/tty40 /dev/tty51 /dev/tty62
/dev/tty0 /dev/tty2 /dev/tty30 /dev/tty41 /dev/tty52 /dev/tty63
/dev/tty1 /dev/tty20 /dev/tty31 /dev/tty42 /dev/tty53 /dev/tty7
/dev/tty10 /dev/tty21 /dev/tty32 /dev/tty43 /dev/tty54 /dev/tty8
/dev/tty11 /dev/tty22 /dev/tty33 /dev/tty44 /dev/tty55 /dev/tty9
/dev/tty12 /dev/tty23 /dev/tty34 /dev/tty45 /dev/tty56 /dev/ttyS0
/dev/tty13 /dev/tty24 /dev/tty35 /dev/tty46 /dev/tty57 /dev/ttyS1
/dev/tty14 /dev/tty25 /dev/tty36 /dev/tty47 /dev/tty58 /dev/ttyS2
/dev/tty15 /dev/tty26 /dev/tty37 /dev/tty48 /dev/tty59 /dev/ttyS3
/dev/tty16 /dev/tty27 /dev/tty38 /dev/tty49 /dev/tty6 /dev/ttyUSB0
/dev/tty17 /dev/tty28 /dev/tty39 /dev/tty5 /dev/tty60
/dev/tty18 /dev/tty29 /dev/tty4 /dev/tty50 /dev/tty61
 
  • Like
Reactions: ame
And I'm betting your Uno is device /dev/ttyUSB0...

Cheers!

This is what I got.

$ ls /dev/tty*
/dev/tty /dev/tty19 /dev/tty3 /dev/tty40 /dev/tty51 /dev/tty62
/dev/tty0 /dev/tty2 /dev/tty30 /dev/tty41 /dev/tty52 /dev/tty63
/dev/tty1 /dev/tty20 /dev/tty31 /dev/tty42 /dev/tty53 /dev/tty7
/dev/tty10 /dev/tty21 /dev/tty32 /dev/tty43 /dev/tty54 /dev/tty8
/dev/tty11 /dev/tty22 /dev/tty33 /dev/tty44 /dev/tty55 /dev/tty9
/dev/tty12 /dev/tty23 /dev/tty34 /dev/tty45 /dev/tty56 /dev/ttyS0
/dev/tty13 /dev/tty24 /dev/tty35 /dev/tty46 /dev/tty57 /dev/ttyS1
/dev/tty14 /dev/tty25 /dev/tty36 /dev/tty47 /dev/tty58 /dev/ttyS2
/dev/tty15 /dev/tty26 /dev/tty37 /dev/tty48 /dev/tty59 /dev/ttyS3
/dev/tty16 /dev/tty27 /dev/tty38 /dev/tty49 /dev/tty6 /dev/ttyUSB0
/dev/tty17 /dev/tty28 /dev/tty39 /dev/tty5 /dev/tty60
/dev/tty18 /dev/tty29 /dev/tty4 /dev/tty50 /dev/tty61
 
So I followed the assumption.

Typed this in:

udevadm info -a -n /dev/ttyUSB0 | less > info.log

Got this back:

bash: udevadm: command not found
 
I have 2 of the cheap Chinese Arduino's and 2 "real" Arduinos. The. response is always the same
 
udevadm is in the udev package. Maybe it's not installed?

Try:
sudo apt-get install udev
 
When I tried: sudo apt-get install udev

This is what I got:

Reading package lists... Done
Building dependency tree
Reading state information... Done
udev is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
 
When I type this:

sudo udevadm info -a -n /dev/ttyUSB0 | less > info.log
nano info.log

I get this:

GNU nano 2.2.6 File: info.log


Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

looking at device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0/ttyUSB0/tty/ttyUSB0':
KERNEL=="ttyUSB0"
SUBSYSTEM=="tty"
DRIVER==""

looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0/ttyUSB0':
KERNELS=="ttyUSB0"
SUBSYSTEMS=="usb-serial"
DRIVERS=="ch341-uart"
ATTRS{port_number}=="0"

looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0':
KERNELS=="2-1.4:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="ch341"
ATTRS{bInterfaceNumber}=="00"
ATTRS{bAlternateSetting}==" 0"
ATTRS{bNumEndpoints}=="03"
ATTRS{bInterfaceClass}=="ff"
ATTRS{bInterfaceSubClass}=="01"
ATTRS{bInterfaceProtocol}=="02"
ATTRS{supports_autosuspend}=="1"

looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4':
KERNELS=="2-1.4"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{configuration}==""
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="80"
ATTRS{bMaxPower}==" 96mA"
ATTRS{urbnum}=="21"
ATTRS{idVendor}=="1a86"
ATTRS{idProduct}=="7523"
ATTRS{bcdDevice}=="0254"
ATTRS{bDeviceClass}=="ff"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="8"
ATTRS{speed}=="12"
ATTRS{busnum}=="2"
ATTRS{devnum}=="10"
ATTRS{devpath}=="1.4"
ATTRS{version}==" 1.10"
ATTRS{maxchild}=="0"
ATTRS{quirks}=="0x0"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{authorized}=="1"
ATTRS{product}=="USB2.0-Serial"

looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1':
KERNELS=="2-1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{configuration}==""
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="e0"
ATTRS{bMaxPower}==" 0mA"
ATTRS{urbnum}=="189"
ATTRS{idVendor}=="8087"
ATTRS{idProduct}=="0020"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="01"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="480"
ATTRS{busnum}=="2"
ATTRS{devnum}=="2"
ATTRS{devpath}=="1"
ATTRS{version}==" 2.00"
ATTRS{maxchild}=="8"
ATTRS{quirks}=="0x0"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{authorized}=="1"

looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2':
KERNELS=="usb2"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{configuration}==""
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="e0"
ATTRS{bMaxPower}==" 0mA"
ATTRS{urbnum}=="56"
ATTRS{idVendor}=="1d6b"
ATTRS{idProduct}=="0002"
ATTRS{bcdDevice}=="0302"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="480"
ATTRS{busnum}=="2"
ATTRS{devnum}=="1"
ATTRS{devpath}=="0"
ATTRS{version}==" 2.00"
ATTRS{maxchild}=="2"
ATTRS{quirks}=="0x0"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{authorized}=="1"
ATTRS{manufacturer}=="Linux 3.2.0-4-686-pae ehci_hcd"
ATTRS{product}=="EHCI Host Controller"
ATTRS{serial}=="0000:00:1d.0"
ATTRS{authorized_default}=="1"
ATTRS{devpath}=="0"
ATTRS{version}==" 2.00"
ATTRS{maxchild}=="2"
ATTRS{quirks}=="0x0"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{authorized}=="1"
ATTRS{manufacturer}=="Linux 3.2.0-4-686-pae ehci_hcd"
ATTRS{product}=="EHCI Host Controller"
ATTRS{serial}=="0000:00:1d.0"
ATTRS{authorized_default}=="1"

looking at parent device '/devices/pci0000:00/0000:00:1d.0':
KERNELS=="0000:00:1d.0"
SUBSYSTEMS=="pci"
DRIVERS=="ehci_hcd"
ATTRS{vendor}=="0x8086"
ATTRS{device}=="0x3b34"
ATTRS{subsystem_vendor}=="0x103c"
ATTRS{subsystem_device}=="0x2a9c"
ATTRS{class}=="0x0c0320"
ATTRS{irq}=="23"
ATTRS{local_cpus}=="ffffffff"
ATTRS{local_cpulist}=="0-31"
ATTRS{dma_mask_bits}=="32"
ATTRS{consistent_dma_mask_bits}=="32"
ATTRS{enable}=="1"
ATTRS{broken_parity_status}=="0"
ATTRS{msi_bus}==""
ATTRS{companion}==""
ATTRS{uframe_periodic_max}=="100"

looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""
None of this looks like what I think I am looking for.
 
"ch341-uart" is your Chinese Uno. It appears the OS recognizes it's a USB/Serial bridge, but for whatever reason it's not probing behind it.
My SWAG is there's a driver issue...

Cheers!

[edit] ...or there's no boot loader on that Uno.
 
I have my setup controlling my refrigerator compressor unit. The compressor is from a vending machine and the name plate says it uses 8 amps and it is a 1/3 HP compressor. I have measured 7 on start up and it settles down to 4 amps while running. I had my relay get stuck in the "on" position the other day which made the fridge run too long.

I switched it over to another mechanical relay and bought a 25A solid state relay and a heat sink to replace the mechanical one. I tried to hook it up last night and couldn't get it to turn on. It turns on if I apply a 12V source to the input. The SSR says it runs on 3 to 32 VDC.

When I tried unsuccessfully last night, I connected the digital pin 5 to the plus side of the SSR and ground on the negative side.

Can I wire it directly yo the arduino like I did the relay board shown in the OP or do I need to do something different?

I guess I could use the existing relay board and have it turn the 12V power supply on and off to control the SSR, but I was hoping I could fire it directly from the arduino.
 
You can wire the SSR directly to the Arduino.

I think I figured it out. When I tried last night the controller started calling for cooling before I had the relay hooked up to the Arduino. I got everything connected and nothing happened so I put the mechanical relay back in.

I was just messing with it on the ferm chamber board and the SSR relay would turn on when no cooling was being called for. Then it dawned on me that the pins are inverted. So I hooked up the SSR, changed the pin to not inverted, and now I am waiting for cooling to be called on the fridge to see if it works. :)
 
I have my setup controlling my refrigerator compressor unit. The compressor is from a vending machine and the name plate says it uses 8 amps and it is a 1/3 HP compressor. I have measured 7 on start up and it settles down to 4 amps while running. I had my relay get stuck in the "on" position the other day which made the fridge run too long.



I switched it over to another mechanical relay and bought a 25A solid state relay and a heat sink to replace the mechanical one. I tried to hook it up last night and couldn't get it to turn on. It turns on if I apply a 12V source to the input. The SSR says it runs on 3 to 32 VDC.



When I tried unsuccessfully last night, I connected the digital pin 5 to the plus side of the SSR and ground on the negative side.



Can I wire it directly yo the arduino like I did the relay board shown in the OP or do I need to do something different?



I guess I could use the existing relay board and have it turn the 12V power supply on and off to control the SSR, but I was hoping I could fire it directly from the arduino.


I believe you would have better luck connecting + to 5v and - to digital pin 5. you probably don't realize this but in the mechanical relay (I'm assuming you mean the sainsmart type from op) you give it 5v and when you toggle pin 5 it actually sinks that relay to ground. the ssr will work the same way
 
"ch341-uart" is your Chinese Uno. It appears the OS recognizes it's a USB/Serial bridge, but for whatever reason it's not probing behind it.
My SWAG is there's a driver issue...

Cheers!

[edit] ...or there's no boot loader on that Uno.


This ends up the same for all 4 devices. 2 of witch were previously working as BrewPi controllers. They have all been set up with a bootloader from my windows machine. How do I isolate the driver issue and resolve that?
 
This ends up the same for all 4 devices. 2 of witch were previously working as BrewPi controllers. They have all been set up with a bootloader from my windows machine. How do I isolate the driver issue and resolve that?

I was going to ask you to plug in a "real" Uno and list the same data just to see what it looks like.
Are you saying the dump looks the same regardless which Uno you attach?
Including "previously working" Unos?

If all that is true, something else must be broken.
How did you go from "working" to where you are now?

Cheers!
 
This ends up the same for all 4 devices. 2 of witch were previously working as BrewPi controllers. They have all been set up with a bootloader from my windows machine. How do I isolate the driver issue and resolve that?

I was going to ask you to plug in a "real" Uno and list the same data just to see what it looks like.
Are you saying the dump looks the same regardless which Uno you attach?
Including "previously working" Unos?

If all that is true, something else must be broken.
How did you go from "working" to where you are now?

Also, how did you finally get the udevadm commands to work?

Cheers!
 
So from working to where I am now. I had on Uno crump. When I went to replace it my old pc decided to do the same. Now I am on a new PC and thought while I replaced the one uno i would like to increase the chambers. I got 2 new cheaper "uno's" and a working from a friend leaving the hobby.

To get udevadm to work is type sudo first.
 
Hello,

I managed to get a cheap thermoelectric wine chiller for my fermentation chamber, it's chilling perfectly, but its temperature control doesn't work, so I have no idea to which temperature it's chilling. If I do the DIY BrewPi setup, is it possible to connect it to the wine chiller electric circuit so it can control directly the temperature, without needing to do the outlet thing to plug the cooling in one socket and the heating in another socket? And is it possible to connect a lamp in the circuit? I saw a few people have connected leds to show if it's cooling or heating, how to do it? And is it possible to change the peltier unit in the wine chiller for one like 90W and maybe put some extra fan to make sure it'll be able to cool down even more? The original is 70W, but I'm afraid in the summer it won't be able to reach the necessary temperature.

And before anyone asks: it isn't for brewing, but yes to use for sourdough bread doughs and a few lactic products (some yogurt and a few cheeses). The ideal ambient temp for bread is 24ºC, even though a few people do it a little lower or higher, but the ideal range is around 12ºC to 28ºC. Maybe in a future I'll brew a few beers. Maybe. Let's just start with baby steps. I still didn't check the inside temperatures, I'm waiting for my new thermometer to arrive, so it can be used exclusively for the wine chiller (to check the probe calibration and to check it's indeed cooling down to the target temperature).

My knowledge in electronics is very limited and same goes for electric. Thanks for your attention!
 
If you can identify the oem thermostat, you should be able to disconnect it, and run the power-in/switched-out wires through the "Cool" relay in the typical BrewPi hardware configuration, and let BrewPi control your wine chiller.

If you get that far, you can wire an indicator lamp in parallel with the compressor - that is, one side connected to the Cool relay switched-out wire, the other side connected to AC neutral.

Alternatively, you can wire an LED between to the Arduino Cool relay control signal (digital IO pin 5) and Arduino 5VDC with a current limiting resistor (200 ohms or higher value).

As for the Peltier replacement, that's well outside the scope of this thread, and without knowing a lot about the wine chiller an accurate answer would be difficult...

Cheers!
 
Brown is live (or 'hot'). Blue is neutral. Green/yellow is earth (or 'ground').

You really should get someone more qualified or experienced to check things out once you've finished, and before you plug anything in. Mains electricity can kill.
 
Quick question:

How do I change the name of a brew once I have started it in brewpi

At the top of the web interface it says Fermenting: "YYY"

How do I change this to "YYY-ZZ" mid-program without stopping and starting, I couldn't find any way to do this on the browser, so there must be a way to do it in the code

any ideas?

thanks!
 
Click on the name ("YYY") and you'll get a menu. Choose the option to start a new brew and give it a new name.
 
Brown is live (or 'hot'). Blue is neutral. Green/yellow is earth (or 'ground').

You really should get someone more qualified or experienced to check things out once you've finished, and before you plug anything in. Mains electricity can kill.


That's what I'm attempting to do... Couldn't find anything on "The Google" within about 10 mins so I figured I would see if anyone here knew.

I'm following the schematic on the original post, trying to wire the outlet and need some help with the spare power cord I found.
 
Click on the name ("YYY") and you'll get a menu. Choose the option to start a new brew and give it a new name.

I wanted to avoid re-starting a new logging session; if you start a new brew your old graph goes away. I was curious to have the same graphs; just a different name up top
 
I see. Then it may be possible to edit the data file and restart the server, but I'm not sure.
 
Status
Not open for further replies.

Latest posts

Back
Top