After years of wanting to create a curing chamber I Finally pulled the trigger. Growing up we always smoked, Salmon, Venison, and Kielbasa but always wanted to get into Cured meats. I decided now is the time I picked up "The art of making fermented sausages" and "Great sausage recipes and meat curing" subscribed to the smoking meat forums and got started.
At first I figured I would buy the components for temperature and humidity sensors but a coworker asked if I thought about an Arduino unit.
I decided to try it out picked up an Arduino Uno, relay shield, and temperature\humidity sensor after a few attempts we were able to power a fan off an on based on temperature or humidity. It took a little bit as I was just learning the code and getting my head wrapped around how it all worked.
I came across this post and how to use the Arduino for High voltage
http://makezine.com/projects/arduino-relays-high-voltage/
and thought hey that doesnt look to bad. when setting it up though the 14 gauge wire would not permit me to jump the power wire between the relay boards as he did in the post.
Initial look at the Arduino with the relay shield, I accidently fried the shield and changed plans in the end to use remote boards.
Here is the serial output from the temp/humid sensor
here is the sample code it initially just had if humidity above 50% turn on if below 40% turn off by blowing on the sensor we could turn it off and on.
While working on that and testing I put the word out I was looking for a refrigerator. A coworker that has sampled my jerky and summer sausage responded back he had a french door fridge with freezer on bottom that I could have it in trade for some product that came out of it.
I got the fridge home cleaned it out took all the shelves out and removed any plastic that was not needed.
I took one shelf apart filed down and attached aluminum rods to it for hanging the meat.
I mounted the Arduino and 2 Terminal Boards to a 12X12 plastic board using nylon screws.
I decided that I wanted the entire thing to be able to unplug and move easily in case of troubleshooting so I decided to use Cat 5 and telephone cables to easily plug in or remove as needed.
We soldered and used heat shrink the cables to ensure they were secure and safe.
decided on 1 inch conduit to run power and cat 5 into the fridge.
here is the 8 relay board for inside the fridge
I placed a 8 relay 5 amp board inside the 3 gang box using the Nylon screws
here is the relay inside the gangbox, it was a tight fit and I had to trim wires down and ensure that everything was working.
mounted inside the fridge
split the outlets so they require hot to each outlet while sharing the common and ground
man that looks messy I think if i did it again i would have opted for the 4 relay board and only put 4 outlets in the box it would have freed up alot of space.
I used outdoor tamper proof outlets to ensure humidity didn't become an issue.
I decided on a 3 gang outdoor Gang box for inside
and a 2 gang on the outside
I placed a 2 relay 10 amp board inside the 3 gang box
I am missing some finished pictures of the outlet boxes here but they look good.
I put a tererium 150 watt heat lamp, an ultrasonic humidifier, a dehumidifier, and a variable speed fan inside the chamber. I am only using 4 of the outlets.
My codebase for Fermenting it took some fine tuneing on where the humidifier setting was
This kept the temperature 85-86 and humidity right at 92%
#include "DHT.h"
#define DHTPIN 10 // what digital pin we're connected to
byte relayPin[8] = { //define relay pins here
2,3,4,5,6,7,8,9};
//Relayboard 1 8 Relays Inside fridge
//D2 -> RELAY1 Humifier
//D3 -> RELAY2 DeHumidifier
//D4 -> RELAY3 Heat Lamp
//D5 -> RELAY4 Fan
//D6 -> RELAY5 Unused at this time
//D7 -> RELAY6 Unused at this time
//D# -> RELAY7 Not Wired
//D# -> RELAY8 Not Wired
//Relayboard 2 2 Relays Outside Fridge
//D8 -> RELAY1Out Fridge
//D9 -> RELAY2Out
char input=0;
int val;
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(57600);
Serial.println("DHTxx test!");
for(int i = 0; i < 8; i++) pinMode(relayPin,OUTPUT);
delay(100);
for(int j = 0; j < 8; j++) digitalWrite(relayPin[j],HIGH);
dht.begin();
}
void loop() {
// Wait a few seconds between measurements.
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
//Humidifier 88-93 Range
if (h<88.00){
digitalWrite(relayPin[0],0);
}
if (h>93.00){
digitalWrite(relayPin[0],1);
}
//DeHumidifier Keeps Humidity below 95
if (h>95.00){
digitalWrite(relayPin[1],0);
}
if (h<93.00){
digitalWrite(relayPin[1],1);
}
//Heater Keeps chamber at above 85
if (f<83.00){
digitalWrite(relayPin[2],0);
}
if (f>87.00){
digitalWrite(relayPin[2],1);
}
//fan blows at all times
if (f<55.00){
digitalWrite(relayPin[3],0);
}
if (f>55.00){
digitalWrite(relayPin[3],0);
}
//Fridge Relay Cools chamber to below 90
if (f<90.00){
digitalWrite(relayPin[7],1);
}
if (f>88.00){
digitalWrite(relayPin[7],0);
}
}
My Codebase for curing
This kept the temperature 55-56 and humidity right at 68%
#include "DHT.h"
//Temperature and Humidity sensor
#define DHTPIN 10 // what digital pin we're connected to
byte relayPin[8] = { //define relay pins here
2,3,4,5,6,7,8,9};
//Relayboard 1 8 Relays Inside fridge
//D2 -> RELAY1 Humifier
//D3 -> RELAY2 DeHumidifier
//D4 -> RELAY3 Heat Lamp
//D5 -> RELAY4 Fan
//D6 -> RELAY5 Unused at this time
//D7 -> RELAY6 Unused at this time
//D# -> RELAY7 Not Wired
//D# -> RELAY8 Not Wired
//Relayboard 2 2 Relays Outside Fridge
//D8 -> RELAY1Out Fridge
//D9 -> RELAY2Out
char input=0;
int val;
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(57600);
Serial.println("DHTxx test!");
for(int i = 0; i < 8; i++) pinMode(relayPin,OUTPUT);
delay(100);
for(int j = 0; j < 8; j++) digitalWrite(relayPin[j],HIGH);
dht.begin();
}
void loop() {
// Wait a few seconds between measurements.
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
//Humidifier 70-80 Range
if (h<58.00){
digitalWrite(relayPin[0],0);
}
if (h>68.00){
digitalWrite(relayPin[0],1);
}
//DeHumidifier Keeps Humidity below 83
if (h>72.00){
digitalWrite(relayPin[1],0);
}
if (h<68.00){
digitalWrite(relayPin[1],1);
}
//Heater Keeps chamber at above 55
if (f<53.00){
digitalWrite(relayPin[2],0);
}
if (f>57.00){
digitalWrite(relayPin[2],1);
}
//fan blows at all times
if (f<55.00){
digitalWrite(relayPin[3],0);
}
if (f>55.00){
digitalWrite(relayPin[3],0);
}
//Fridge Relay Cools chamber to below 60
if (f>60.00){
digitalWrite(relayPin[7],0);
}
if (f<55.00){
digitalWrite(relayPin[7],1);
}
}
At first I figured I would buy the components for temperature and humidity sensors but a coworker asked if I thought about an Arduino unit.
I decided to try it out picked up an Arduino Uno, relay shield, and temperature\humidity sensor after a few attempts we were able to power a fan off an on based on temperature or humidity. It took a little bit as I was just learning the code and getting my head wrapped around how it all worked.
I came across this post and how to use the Arduino for High voltage
http://makezine.com/projects/arduino-relays-high-voltage/
and thought hey that doesnt look to bad. when setting it up though the 14 gauge wire would not permit me to jump the power wire between the relay boards as he did in the post.
Initial look at the Arduino with the relay shield, I accidently fried the shield and changed plans in the end to use remote boards.
Here is the serial output from the temp/humid sensor
here is the sample code it initially just had if humidity above 50% turn on if below 40% turn off by blowing on the sensor we could turn it off and on.
While working on that and testing I put the word out I was looking for a refrigerator. A coworker that has sampled my jerky and summer sausage responded back he had a french door fridge with freezer on bottom that I could have it in trade for some product that came out of it.
I got the fridge home cleaned it out took all the shelves out and removed any plastic that was not needed.
I took one shelf apart filed down and attached aluminum rods to it for hanging the meat.
I mounted the Arduino and 2 Terminal Boards to a 12X12 plastic board using nylon screws.
I decided that I wanted the entire thing to be able to unplug and move easily in case of troubleshooting so I decided to use Cat 5 and telephone cables to easily plug in or remove as needed.
We soldered and used heat shrink the cables to ensure they were secure and safe.
decided on 1 inch conduit to run power and cat 5 into the fridge.
here is the 8 relay board for inside the fridge
I placed a 8 relay 5 amp board inside the 3 gang box using the Nylon screws
here is the relay inside the gangbox, it was a tight fit and I had to trim wires down and ensure that everything was working.
mounted inside the fridge
split the outlets so they require hot to each outlet while sharing the common and ground
man that looks messy I think if i did it again i would have opted for the 4 relay board and only put 4 outlets in the box it would have freed up alot of space.
I used outdoor tamper proof outlets to ensure humidity didn't become an issue.
I decided on a 3 gang outdoor Gang box for inside
and a 2 gang on the outside
I placed a 2 relay 10 amp board inside the 3 gang box
I am missing some finished pictures of the outlet boxes here but they look good.
I put a tererium 150 watt heat lamp, an ultrasonic humidifier, a dehumidifier, and a variable speed fan inside the chamber. I am only using 4 of the outlets.
My codebase for Fermenting it took some fine tuneing on where the humidifier setting was
This kept the temperature 85-86 and humidity right at 92%
#include "DHT.h"
#define DHTPIN 10 // what digital pin we're connected to
byte relayPin[8] = { //define relay pins here
2,3,4,5,6,7,8,9};
//Relayboard 1 8 Relays Inside fridge
//D2 -> RELAY1 Humifier
//D3 -> RELAY2 DeHumidifier
//D4 -> RELAY3 Heat Lamp
//D5 -> RELAY4 Fan
//D6 -> RELAY5 Unused at this time
//D7 -> RELAY6 Unused at this time
//D# -> RELAY7 Not Wired
//D# -> RELAY8 Not Wired
//Relayboard 2 2 Relays Outside Fridge
//D8 -> RELAY1Out Fridge
//D9 -> RELAY2Out
char input=0;
int val;
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(57600);
Serial.println("DHTxx test!");
for(int i = 0; i < 8; i++) pinMode(relayPin,OUTPUT);
delay(100);
for(int j = 0; j < 8; j++) digitalWrite(relayPin[j],HIGH);
dht.begin();
}
void loop() {
// Wait a few seconds between measurements.
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
//Humidifier 88-93 Range
if (h<88.00){
digitalWrite(relayPin[0],0);
}
if (h>93.00){
digitalWrite(relayPin[0],1);
}
//DeHumidifier Keeps Humidity below 95
if (h>95.00){
digitalWrite(relayPin[1],0);
}
if (h<93.00){
digitalWrite(relayPin[1],1);
}
//Heater Keeps chamber at above 85
if (f<83.00){
digitalWrite(relayPin[2],0);
}
if (f>87.00){
digitalWrite(relayPin[2],1);
}
//fan blows at all times
if (f<55.00){
digitalWrite(relayPin[3],0);
}
if (f>55.00){
digitalWrite(relayPin[3],0);
}
//Fridge Relay Cools chamber to below 90
if (f<90.00){
digitalWrite(relayPin[7],1);
}
if (f>88.00){
digitalWrite(relayPin[7],0);
}
}
My Codebase for curing
This kept the temperature 55-56 and humidity right at 68%
#include "DHT.h"
//Temperature and Humidity sensor
#define DHTPIN 10 // what digital pin we're connected to
byte relayPin[8] = { //define relay pins here
2,3,4,5,6,7,8,9};
//Relayboard 1 8 Relays Inside fridge
//D2 -> RELAY1 Humifier
//D3 -> RELAY2 DeHumidifier
//D4 -> RELAY3 Heat Lamp
//D5 -> RELAY4 Fan
//D6 -> RELAY5 Unused at this time
//D7 -> RELAY6 Unused at this time
//D# -> RELAY7 Not Wired
//D# -> RELAY8 Not Wired
//Relayboard 2 2 Relays Outside Fridge
//D8 -> RELAY1Out Fridge
//D9 -> RELAY2Out
char input=0;
int val;
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(57600);
Serial.println("DHTxx test!");
for(int i = 0; i < 8; i++) pinMode(relayPin,OUTPUT);
delay(100);
for(int j = 0; j < 8; j++) digitalWrite(relayPin[j],HIGH);
dht.begin();
}
void loop() {
// Wait a few seconds between measurements.
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
//Humidifier 70-80 Range
if (h<58.00){
digitalWrite(relayPin[0],0);
}
if (h>68.00){
digitalWrite(relayPin[0],1);
}
//DeHumidifier Keeps Humidity below 83
if (h>72.00){
digitalWrite(relayPin[1],0);
}
if (h<68.00){
digitalWrite(relayPin[1],1);
}
//Heater Keeps chamber at above 55
if (f<53.00){
digitalWrite(relayPin[2],0);
}
if (f>57.00){
digitalWrite(relayPin[2],1);
}
//fan blows at all times
if (f<55.00){
digitalWrite(relayPin[3],0);
}
if (f>55.00){
digitalWrite(relayPin[3],0);
}
//Fridge Relay Cools chamber to below 60
if (f>60.00){
digitalWrite(relayPin[7],0);
}
if (f<55.00){
digitalWrite(relayPin[7],1);
}
}