Advertisement
Guest User

Greenhouse Help

a guest
Apr 6th, 2020
289
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.30 KB | None | 0 0
  1. /*
  2.   ############################################################
  3.   #   File:       Arduino_GreenHouse_Controling_sustem.ino   #
  4.   #   Processor:  Arduino UNO, MEGA                          #
  5.   #   Language:   Wiring / C / Arduino IDE                   #
  6.   #   Objectives: Heating - Aeration - Irrigation            #
  7.   #   Behavior:   Event when the temperature is low          #
  8.   #               or high and the soil is dry                #
  9.   #   Note:       1.8 TFT LCD 128160                        #
  10.   #               DHT-22 Sensor of Temperature and Humitide  #
  11.   #               Sensor Temperature and Humidity External   #
  12.   #               Soil Moisture Sensor and Hygrometer Module #
  13.   #               Potentiometer1 change limit Moisture       #
  14.   #               Potentiometer2 change limit Temperature    #
  15.   #               Relay1_AirIn to Blower Fan IN              #
  16.   #               Relay2_AirOut to Blower Fan OUT            #
  17.   #               Relay3_Lamp to Hot Lamp                    #
  18.   #               Relay4_Water to Water Pump                 #
  19.   #                                                          #
  20.   #   Author:     Billy Gkekas                               #
  21.   #   Date:       Saturday, 29-10-2018                       #
  22.   #   place:      Greece, Ptolemaida                         #
  23.   #                                                          #
  24.   #   This project contains public domain code.              #
  25.   #   The modification is allowed without notice.            #
  26.   ############################################################
  27. */
  28. // DHT22
  29. #include <DHT.h>
  30. #define DHTPIN 1
  31. #define DHTPIN21 3
  32. // #define DHTTYPE DHT11     // DHT 11)
  33. #define DHTTYPE DHT22   // DHT 22 (AM2302), AM2321
  34. #define DHTTYPE21 DHT21   // DHT 21 (AM2301)
  35. DHT dht(DHTPIN, DHTTYPE); // Initialize DHT sensor for normal 16mhz Arduino
  36. DHT dht21(DHTPIN21, DHTTYPE21); // Initialize DHT sensor for normal 16mhz Arduino
  37. // ****************************************
  38.  
  39.  
  40.  
  41. // Variable Definitions
  42. float temp_internal;    // Stores internal temperature value
  43. float hum_internal;     // Stores internal humidity value
  44. float temp_external;    // Stores external temperature value
  45. float hum_external;     // Stores external humidity value
  46. int state;              // Condition of pins
  47. int valMoisture = 0;    // Stores Moisture value
  48. int kath = 5000;        // Delay
  49. int LimM = 1023 ;       // Stores value after edit
  50. int LimT = 25 ;         // Stores value after edit
  51. int manytimes = 1;
  52. int total;
  53.  
  54. //pin definitions
  55. int MoisturePin = A0;   // Moisture Analog pin
  56. int potention1 = A2;    // Potentiometer to change Temperature Limit
  57. int potention2 = A1;    // Potentiometer to change Moisture Limit
  58. int Relay1_AirIn = 4;   // airRelay1 Blower Air Fan IN
  59. int Relay2_AirOut = 5;  // airRelay2 Blower Air Fan OUT
  60. int Relay3_Lamp = 6;    // Relay3_Lamp Hot Lamp
  61. int Relay4_Water = 7;   // Relay4_Water Pump
  62. int soilPower = 2;      // Moisture Soil power
  63. // *******************************************************
  64.  
  65. void setup() {
  66.  
  67.   Serial.begin(9600);
  68.  
  69.   dht.begin();  // DHT22 Starts
  70.   dht21.begin();  // DHT21 Starts
  71.  
  72.   // Initialize Sensor Moisture
  73.   pinMode(soilPower, OUTPUT);   // Set D7 as an OUTPUT
  74.   digitalWrite(soilPower, LOW); // Set to LOW, no power in the sensor
  75.  
  76.   // Initialize Relays
  77.   pinMode(potention1, INPUT);
  78.   pinMode(potention2, INPUT);
  79.   pinMode(Relay1_AirIn, OUTPUT);
  80.   pinMode(Relay2_AirOut, OUTPUT);
  81.   pinMode(Relay3_Lamp, OUTPUT);
  82.   pinMode(Relay4_Water, OUTPUT);
  83.  
  84.   digitalWrite(Relay1_AirIn, LOW);
  85.   digitalWrite(Relay2_AirOut, LOW);
  86.   digitalWrite(Relay3_Lamp, LOW);
  87.   digitalWrite(Relay4_Water, LOW);
  88. }
  89.  
  90. void loop() {
  91.   // Read data from Sensors
  92.  
  93.   // 1. Read data from Internal Sensor and store it to variables temp_internal and hum_internal
  94.   hum_internal = dht21.readHumidity();
  95.   temp_internal = dht21.readTemperature();
  96.  
  97.   // 2. Read data from DHT22 and store it to variables hum and temp
  98.   hum_internal = dht.readHumidity();
  99.   temp_internal = dht.readTemperature();
  100.  
  101.   // This Function send power and then reads from Moisture Sensor
  102.   int readSoil() ;
  103.   digitalWrite(soilPower, HIGH); // turn D2 "On"
  104.   delay(10); // wait 10 milliseconds giving time to Moisture Sensor
  105.   // 3. Read the SIG value (data) from the sensor and counted percent degrees
  106.   valMoisture = (analogRead(MoisturePin) - 23) / 10;
  107.   digitalWrite(soilPower, LOW); // turn power on D2 "Off"
  108.  
  109.   // 4. Read from potentiometers limit of Temperature and Humidity
  110.   LimT = (analogRead(potention1) - 23) / 10; // Read limit from Potentiometer
  111.   LimM = (analogRead(potention2) - 21) / 10; // Read limit from Potentiometer
  112.  
  113.   // ***************************************************************************
  114.  
  115.  
  116.   // ***************************************************************************
  117.  
  118.   // ***************************************************************************
  119.   // Print on Serial Window readed values
  120.   Serial.print("Counter = ");
  121.   Serial.println(manytimes);
  122.   Serial.print("TOTAL = ");
  123.   Serial.println(total);
  124.   state = digitalRead(Relay1_AirIn);
  125.   Serial.print("Air In = ");
  126.   Serial.println(state);
  127.   state = digitalRead(Relay2_AirOut);
  128.   Serial.print("Air Out = ");
  129.   Serial.println(state);
  130.   state = digitalRead(Relay3_Lamp);
  131.   Serial.print("Lamp = ");
  132.   Serial.println(state);
  133.   state = digitalRead(Relay4_Water);
  134.   Serial.print("Water = ");
  135.   Serial.println(state);
  136.   Serial.println("");
  137.  
  138.   // ***************************************************************************
  139.   // 1. Check limit value for Moisture Soil Sensor and control Relay4_Water
  140.   Serial.print("Soil: ");
  141.   Serial.println(valMoisture);
  142.  
  143.   if (valMoisture >= LimM) {
  144.     digitalWrite(Relay4_Water, HIGH);
  145.   }
  146.   else {
  147.     digitalWrite(Relay4_Water, LOW);
  148.   }
  149.  
  150.   // ***************************************************************************
  151.   // 2. Check greenhouse's Internal Condition and control Relays of Fans & Hot Lamp
  152.   if (temp_internal >= LimT) {
  153.     if (temp_internal > temp_external) {
  154.       Serial.println("1. t_int >= LimT & t_int > t_ext");
  155.       Serial.print(temp_internal);
  156.       Serial.print(" >= ");
  157.       Serial.print(LimT);
  158.       Serial.print(" & > ");
  159.       Serial.print(temp_external);
  160.       Serial.println("   AirIn On - AirOut On - Lamp Off");
  161.  
  162.       state = digitalRead(Relay1_AirIn);
  163.       if (state == 1) {
  164.         // do nothing
  165.       }
  166.       else {
  167.         digitalWrite(Relay1_AirIn, HIGH);
  168.       }
  169.  
  170.       state = digitalRead(Relay2_AirOut);
  171.       if (state == 1) {
  172.         // do nothing
  173.       }
  174.       else {
  175.         digitalWrite(Relay2_AirOut, HIGH);
  176.       }
  177.  
  178.       state = digitalRead(Relay3_Lamp);
  179.       if (state == 0) {
  180.         // do nothing
  181.       }
  182.       else {
  183.         digitalWrite(Relay3_Lamp, LOW);
  184.       }
  185.     }
  186.     else {
  187.       Serial.println("else 1. t_int >= LimT & t_int < t_ext");
  188.       Serial.print(temp_external);
  189.       Serial.print(" > ");
  190.       Serial.print(temp_internal);
  191.       Serial.print(" >= ");
  192.       Serial.print(LimT);
  193.       Serial.println("   AirIn Off - AirOut On - Lamp Off");
  194.  
  195.  
  196.       state = digitalRead(Relay1_AirIn);
  197.       if (state == 0) {
  198.         // do nothing
  199.       }
  200.       else {
  201.         digitalWrite(Relay1_AirIn, LOW);
  202.       }
  203.  
  204.       state = digitalRead(Relay2_AirOut);
  205.       if (state == 1) {
  206.         // do nothing
  207.       }
  208.       else {
  209.         digitalWrite(Relay2_AirOut, HIGH);
  210.       }
  211.  
  212.       state = digitalRead(Relay3_Lamp);
  213.       if (state == 0) {
  214.         // do nothing
  215.       }
  216.       else {
  217.         digitalWrite(Relay3_Lamp, LOW);
  218.       }
  219.     }
  220.   }
  221.  
  222.   if (temp_internal < LimT) {
  223.     if (temp_internal <= temp_external) {
  224.       Serial.println("2. t_int < LimT & t_int >= t_ext");
  225.       Serial.print(temp_external);
  226.       Serial.print(" <= ");
  227.       Serial.print(temp_internal);
  228.       Serial.print(" < ");
  229.       Serial.print(LimT);
  230.       Serial.println("   AirIn ON - AirOut Off - Lamp On");
  231.  
  232.       if (state == 1) {
  233.         // do nothing
  234.       }
  235.       else {
  236.         digitalWrite(Relay1_AirIn, HIGH);
  237.       }
  238.  
  239.       state = digitalRead(Relay2_AirOut);
  240.       if (state == 0) {
  241.         // do nothing
  242.       }
  243.       else {
  244.         digitalWrite(Relay2_AirOut, LOW);
  245.       }
  246.  
  247.       state = digitalRead(Relay3_Lamp);
  248.       if (state == 1) {
  249.         // do nothing
  250.       }
  251.       else {
  252.         digitalWrite(Relay3_Lamp, HIGH);
  253.       }
  254.     }
  255.     else {
  256.       Serial.println("else 2. t_int < LimT & t_int < t_ext");
  257.       Serial.print(temp_internal);
  258.       Serial.print(" < ");
  259.       Serial.print(LimT);
  260.       Serial.print(" & ");
  261.       Serial.print(temp_external);
  262.       Serial.println("AirIn OFF - AirOut Off - Lamp On");
  263.  
  264.  
  265.       state = digitalRead(Relay1_AirIn);
  266.       if (state == 0) {
  267.         // do nothing
  268.       }
  269.       else {
  270.         digitalWrite(Relay1_AirIn, LOW);
  271.       }
  272.  
  273.  
  274.       state = digitalRead(Relay2_AirOut);
  275.       if (state == 0) {
  276.         // do nothing
  277.       }
  278.       else {
  279.         digitalWrite(Relay2_AirOut, LOW);
  280.       }
  281.  
  282.       state = digitalRead(Relay3_Lamp);
  283.       if (state == 1) {
  284.         // do nothing
  285.       }
  286.       else {
  287.         digitalWrite(Relay3_Lamp, HIGH);
  288.       }
  289.     }
  290.   }
  291. }
  292.  
  293.  
  294. // ***************************************************************************
  295.  
  296. // ***************************************************************************
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement