Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ############################################################
- # File: Arduino_GreenHouse_Controling_sustem.ino #
- # Processor: Arduino UNO, MEGA #
- # Language: Wiring / C / Arduino IDE #
- # Objectives: Heating - Aeration - Irrigation #
- # Behavior: Event when the temperature is low #
- # or high and the soil is dry #
- # Note: 1.8 TFT LCD 128160 #
- # DHT-22 Sensor of Temperature and Humitide #
- # Sensor Temperature and Humidity External #
- # Soil Moisture Sensor and Hygrometer Module #
- # Potentiometer1 change limit Moisture #
- # Potentiometer2 change limit Temperature #
- # Relay1_AirIn to Blower Fan IN #
- # Relay2_AirOut to Blower Fan OUT #
- # Relay3_Lamp to Hot Lamp #
- # Relay4_Water to Water Pump #
- # #
- # Author: Billy Gkekas #
- # Date: Saturday, 29-10-2018 #
- # place: Greece, Ptolemaida #
- # #
- # This project contains public domain code. #
- # The modification is allowed without notice. #
- ############################################################
- */
- // DHT22
- #include <DHT.h>
- #define DHTPIN 1
- #define DHTPIN21 3
- // #define DHTTYPE DHT11 // DHT 11)
- #define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
- #define DHTTYPE21 DHT21 // DHT 21 (AM2301)
- DHT dht(DHTPIN, DHTTYPE); // Initialize DHT sensor for normal 16mhz Arduino
- DHT dht21(DHTPIN21, DHTTYPE21); // Initialize DHT sensor for normal 16mhz Arduino
- // ****************************************
- // Variable Definitions
- float temp_internal; // Stores internal temperature value
- float hum_internal; // Stores internal humidity value
- float temp_external; // Stores external temperature value
- float hum_external; // Stores external humidity value
- int state; // Condition of pins
- int valMoisture = 0; // Stores Moisture value
- int kath = 5000; // Delay
- int LimM = 1023 ; // Stores value after edit
- int LimT = 25 ; // Stores value after edit
- int manytimes = 1;
- int total;
- //pin definitions
- int MoisturePin = A0; // Moisture Analog pin
- int potention1 = A2; // Potentiometer to change Temperature Limit
- int potention2 = A1; // Potentiometer to change Moisture Limit
- int Relay1_AirIn = 4; // airRelay1 Blower Air Fan IN
- int Relay2_AirOut = 5; // airRelay2 Blower Air Fan OUT
- int Relay3_Lamp = 6; // Relay3_Lamp Hot Lamp
- int Relay4_Water = 7; // Relay4_Water Pump
- int soilPower = 2; // Moisture Soil power
- // *******************************************************
- void setup() {
- Serial.begin(9600);
- dht.begin(); // DHT22 Starts
- dht21.begin(); // DHT21 Starts
- // Initialize Sensor Moisture
- pinMode(soilPower, OUTPUT); // Set D7 as an OUTPUT
- digitalWrite(soilPower, LOW); // Set to LOW, no power in the sensor
- // Initialize Relays
- pinMode(potention1, INPUT);
- pinMode(potention2, INPUT);
- pinMode(Relay1_AirIn, OUTPUT);
- pinMode(Relay2_AirOut, OUTPUT);
- pinMode(Relay3_Lamp, OUTPUT);
- pinMode(Relay4_Water, OUTPUT);
- digitalWrite(Relay1_AirIn, LOW);
- digitalWrite(Relay2_AirOut, LOW);
- digitalWrite(Relay3_Lamp, LOW);
- digitalWrite(Relay4_Water, LOW);
- }
- void loop() {
- // Read data from Sensors
- // 1. Read data from Internal Sensor and store it to variables temp_internal and hum_internal
- hum_internal = dht21.readHumidity();
- temp_internal = dht21.readTemperature();
- // 2. Read data from DHT22 and store it to variables hum and temp
- hum_internal = dht.readHumidity();
- temp_internal = dht.readTemperature();
- // This Function send power and then reads from Moisture Sensor
- int readSoil() ;
- digitalWrite(soilPower, HIGH); // turn D2 "On"
- delay(10); // wait 10 milliseconds giving time to Moisture Sensor
- // 3. Read the SIG value (data) from the sensor and counted percent degrees
- valMoisture = (analogRead(MoisturePin) - 23) / 10;
- digitalWrite(soilPower, LOW); // turn power on D2 "Off"
- // 4. Read from potentiometers limit of Temperature and Humidity
- LimT = (analogRead(potention1) - 23) / 10; // Read limit from Potentiometer
- LimM = (analogRead(potention2) - 21) / 10; // Read limit from Potentiometer
- // ***************************************************************************
- // ***************************************************************************
- // ***************************************************************************
- // Print on Serial Window readed values
- Serial.print("Counter = ");
- Serial.println(manytimes);
- Serial.print("TOTAL = ");
- Serial.println(total);
- state = digitalRead(Relay1_AirIn);
- Serial.print("Air In = ");
- Serial.println(state);
- state = digitalRead(Relay2_AirOut);
- Serial.print("Air Out = ");
- Serial.println(state);
- state = digitalRead(Relay3_Lamp);
- Serial.print("Lamp = ");
- Serial.println(state);
- state = digitalRead(Relay4_Water);
- Serial.print("Water = ");
- Serial.println(state);
- Serial.println("");
- // ***************************************************************************
- // 1. Check limit value for Moisture Soil Sensor and control Relay4_Water
- Serial.print("Soil: ");
- Serial.println(valMoisture);
- if (valMoisture >= LimM) {
- digitalWrite(Relay4_Water, HIGH);
- }
- else {
- digitalWrite(Relay4_Water, LOW);
- }
- // ***************************************************************************
- // 2. Check greenhouse's Internal Condition and control Relays of Fans & Hot Lamp
- if (temp_internal >= LimT) {
- if (temp_internal > temp_external) {
- Serial.println("1. t_int >= LimT & t_int > t_ext");
- Serial.print(temp_internal);
- Serial.print(" >= ");
- Serial.print(LimT);
- Serial.print(" & > ");
- Serial.print(temp_external);
- Serial.println(" AirIn On - AirOut On - Lamp Off");
- state = digitalRead(Relay1_AirIn);
- if (state == 1) {
- // do nothing
- }
- else {
- digitalWrite(Relay1_AirIn, HIGH);
- }
- state = digitalRead(Relay2_AirOut);
- if (state == 1) {
- // do nothing
- }
- else {
- digitalWrite(Relay2_AirOut, HIGH);
- }
- state = digitalRead(Relay3_Lamp);
- if (state == 0) {
- // do nothing
- }
- else {
- digitalWrite(Relay3_Lamp, LOW);
- }
- }
- else {
- Serial.println("else 1. t_int >= LimT & t_int < t_ext");
- Serial.print(temp_external);
- Serial.print(" > ");
- Serial.print(temp_internal);
- Serial.print(" >= ");
- Serial.print(LimT);
- Serial.println(" AirIn Off - AirOut On - Lamp Off");
- state = digitalRead(Relay1_AirIn);
- if (state == 0) {
- // do nothing
- }
- else {
- digitalWrite(Relay1_AirIn, LOW);
- }
- state = digitalRead(Relay2_AirOut);
- if (state == 1) {
- // do nothing
- }
- else {
- digitalWrite(Relay2_AirOut, HIGH);
- }
- state = digitalRead(Relay3_Lamp);
- if (state == 0) {
- // do nothing
- }
- else {
- digitalWrite(Relay3_Lamp, LOW);
- }
- }
- }
- if (temp_internal < LimT) {
- if (temp_internal <= temp_external) {
- Serial.println("2. t_int < LimT & t_int >= t_ext");
- Serial.print(temp_external);
- Serial.print(" <= ");
- Serial.print(temp_internal);
- Serial.print(" < ");
- Serial.print(LimT);
- Serial.println(" AirIn ON - AirOut Off - Lamp On");
- if (state == 1) {
- // do nothing
- }
- else {
- digitalWrite(Relay1_AirIn, HIGH);
- }
- state = digitalRead(Relay2_AirOut);
- if (state == 0) {
- // do nothing
- }
- else {
- digitalWrite(Relay2_AirOut, LOW);
- }
- state = digitalRead(Relay3_Lamp);
- if (state == 1) {
- // do nothing
- }
- else {
- digitalWrite(Relay3_Lamp, HIGH);
- }
- }
- else {
- Serial.println("else 2. t_int < LimT & t_int < t_ext");
- Serial.print(temp_internal);
- Serial.print(" < ");
- Serial.print(LimT);
- Serial.print(" & ");
- Serial.print(temp_external);
- Serial.println("AirIn OFF - AirOut Off - Lamp On");
- state = digitalRead(Relay1_AirIn);
- if (state == 0) {
- // do nothing
- }
- else {
- digitalWrite(Relay1_AirIn, LOW);
- }
- state = digitalRead(Relay2_AirOut);
- if (state == 0) {
- // do nothing
- }
- else {
- digitalWrite(Relay2_AirOut, LOW);
- }
- state = digitalRead(Relay3_Lamp);
- if (state == 1) {
- // do nothing
- }
- else {
- digitalWrite(Relay3_Lamp, HIGH);
- }
- }
- }
- }
- // ***************************************************************************
- // ***************************************************************************
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement