/*
* Created by ArduinoGetStarted.com
*
* This example code is in the public domain
*
* Tutorial page: https://arduinogetstarted.com/tutorials/arduino-temperature-humidity-sensor
*/
#include "DHT.h"
#define RELAY_PIN_1 6 // Arduino pin connected to relay for hydrator
#define RELAY_PIN_2 7 // Arduino pin connected to relay for dehumidifier
#define RELAY_PIN_3 8 // Arduino pin connected to relay for dehumidifier fan
#define RELAY_PIN_4 9 // Arduino pin connected to relay for Heater
#define DHTPIN1 2 // Arduino pin connected to DHT22 first sensor
#define DHTPIN2 3 // Arduino pin connected to DHT22 second sensor
#define DHTTYPE1 DHT22 // DHT 22 (AM2302)
#define DHTTYPE2 DHT22 // DHT 22 (AM2302)
DHT dht1(DHTPIN1, DHTTYPE1);
DHT dht2(DHTPIN2, DHTTYPE1);
const int TEMP_THRESHOLD_IN = 25; // upper threshold of indoors temperature, change to your desire value
const int HUM_THRESHOLD_IN = 70; // lower threshold of indoors humidity, change to your desire value
const int TEMP_THRESHOLD_OUT = 20; // upper threshold of outdoor temperature, change to your desire value
const int HUM_THRESHOLD_OUT = 70; // upper threshold of outdoor humidity, change to your desire value
int chk;
float temp1;
float temp2;
float hum1;
float hum2;
void setup() {
Serial.begin(9600); // initialize serial
dht1.begin(); // initialize the sensor 1
dht2.begin(); // initialize the sensor 2
pinMode(RELAY_PIN_1, OUTPUT); // initialize digital pin as an output
pinMode(RELAY_PIN_2, OUTPUT); // initialize digital pin as an output
pinMode(RELAY_PIN_3, OUTPUT); // initialize digital pin as an output
pinMode(RELAY_PIN_4, OUTPUT); // initialize digital pin as an output
}
void loop() {
// wait a few seconds between measurements.
delay(2000);
temp1 = dht1.readTemperature();; // read temperature in Celsius from sensor 1
temp2 = dht2.readTemperature();; // read temperature in Celsius from sensor 2
hum1 = dht1.readHumidity();; // read relative humidity from sensor 1
hum2 = dht2.readHumidity();; // read relative humidity from sensor 2
if (isnan(temp1)) {
Serial.println("Failed to read from DHT sensor!");
}
if (isnan(temp2)) {
Serial.println("Failed to read from DHT sensor!");
}
if (isnan(hum1)) {
Serial.println("Failed to read from DHT sensor!");
}
if (isnan(hum2)) {
Serial.println("Failed to read from DHT sensor!");
} else {
if((temp2 > TEMP_THRESHOLD_OUT) && (hum2 > HUM_THRESHOLD_OUT) ){
if((temp1 > TEMP_THRESHOLD_IN)){
Serial.println("Cooling");
digitalWrite(RELAY_PIN_1, LOW); // turn off humidifier
digitalWrite(RELAY_PIN_3, HIGH); // turn on cooler
digitalWrite(RELAY_PIN_4, LOW); // turn off heater
} if((temp1 < (TEMP_THRESHOLD_IN -5))){
Serial.println("Optimal C");
digitalWrite(RELAY_PIN_1, LOW); // turn off humidifier
digitalWrite(RELAY_PIN_3, LOW); // turn off cooler
digitalWrite(RELAY_PIN_4, LOW); // turn off heater
} if((hum1 > HUM_THRESHOLD_IN)){
Serial.println("Dehumidify");
digitalWrite(RELAY_PIN_1, LOW); // turn off humidifier
digitalWrite(RELAY_PIN_2, HIGH); // turn on dehumidifier
digitalWrite(RELAY_PIN_4, LOW); // turn off heater
} if((hum1 < (HUM_THRESHOLD_IN - 10))){
Serial.println("Optimal HUM");
digitalWrite(RELAY_PIN_1, LOW); // turn off humidifier
digitalWrite(RELAY_PIN_2, LOW); // turn off dehumidifier
digitalWrite(RELAY_PIN_4, LOW); // turn off heater
}
}
if((temp2 > TEMP_THRESHOLD_OUT) && (hum2 < HUM_THRESHOLD_OUT) ){
if((temp1 > TEMP_THRESHOLD_IN)){
Serial.println("Cooling");
digitalWrite(RELAY_PIN_2, LOW); // turn off dehumidifier
digitalWrite(RELAY_PIN_3, HIGH); // turn on cooler
digitalWrite(RELAY_PIN_4, LOW); // turn off heater
} if((temp1 < (TEMP_THRESHOLD_IN -5))){
Serial.println("Optimal C");
digitalWrite(RELAY_PIN_2, LOW); // turn off dehumidifier
digitalWrite(RELAY_PIN_3, LOW); // turn off cooler
digitalWrite(RELAY_PIN_4, LOW); // turn off heater
} if((hum1 > HUM_THRESHOLD_IN)){
Serial.println("Optimal HUM");
digitalWrite(RELAY_PIN_1, LOW); // turn off humidifier
digitalWrite(RELAY_PIN_2, LOW); // turn off dehumidifier
digitalWrite(RELAY_PIN_4, LOW); // turn off heater
} if((hum1 < (HUM_THRESHOLD_IN - 10))){
Serial.println("Humidify");
digitalWrite(RELAY_PIN_1, HIGH); // turn on humidifier
digitalWrite(RELAY_PIN_2, LOW); // turn off dehumidifier
digitalWrite(RELAY_PIN_4, LOW); // turn off heater
}
}
if((temp2 < TEMP_THRESHOLD_OUT) && (hum2 > HUM_THRESHOLD_OUT) ){
if((temp1 > TEMP_THRESHOLD_IN)){
Serial.println("Optimal C");
digitalWrite(RELAY_PIN_1, LOW); // turn off humidifier
digitalWrite(RELAY_PIN_3, LOW); // turn of cooler
digitalWrite(RELAY_PIN_4, LOW); // turn off heater
} if((temp1 < (TEMP_THRESHOLD_IN -5))){
Serial.println("Heating");
digitalWrite(RELAY_PIN_1, LOW); // turn off humidifier
digitalWrite(RELAY_PIN_3, LOW); // turn off cooler
digitalWrite(RELAY_PIN_4, HIGH); // turn on heater
} if((hum1 > HUM_THRESHOLD_IN)){
Serial.println("Dehumidify");
digitalWrite(RELAY_PIN_1, LOW); // turn off humidifier
digitalWrite(RELAY_PIN_2, HIGH); // turn on dehumidifier
digitalWrite(RELAY_PIN_3, LOW); // turn off cooler
} if((hum1 < (HUM_THRESHOLD_IN - 10))){
Serial.println("Optimal HUM");
digitalWrite(RELAY_PIN_1, LOW); // turn off humidifier
digitalWrite(RELAY_PIN_2, LOW); // turn off dehumidifier
digitalWrite(RELAY_PIN_3, LOW); // turn off cooler
}
}
if((temp2 < TEMP_THRESHOLD_OUT) && (hum2 < HUM_THRESHOLD_OUT) ){
if((temp1 > TEMP_THRESHOLD_IN)){
Serial.println("Optimal C");
digitalWrite(RELAY_PIN_2, LOW); // turn off dehumidifier
digitalWrite(RELAY_PIN_3, LOW); // turn off cooler
digitalWrite(RELAY_PIN_4, LOW); // turn off heater
} if((temp1 < (TEMP_THRESHOLD_IN -5))){
Serial.println("Heating");
digitalWrite(RELAY_PIN_2, LOW); // turn off dehumidifier
digitalWrite(RELAY_PIN_3, LOW); // turn off cooler
digitalWrite(RELAY_PIN_4, HIGH); // turn on heater
} if((hum1 > HUM_THRESHOLD_IN)){
Serial.println("Optimal HUM");
digitalWrite(RELAY_PIN_1, LOW); // turn off humidifier
digitalWrite(RELAY_PIN_2, LOW); // turn off dehumidifier
digitalWrite(RELAY_PIN_3, LOW); // turn off cooler
} if((hum1 < (HUM_THRESHOLD_IN - 10))){
Serial.println("Humidify");
digitalWrite(RELAY_PIN_1, HIGH); // turn on humidifier
digitalWrite(RELAY_PIN_2, LOW); // turn off dehumidifier
digitalWrite(RELAY_PIN_3, LOW); // turn off cooler
}
}
}
}