// Christian Weber // Stand: 25.08.2020 /********************************************************************/ // libraries BME280 Klimasensor #include #include #define SEALEVELPRESSURE_HPA (1013.25) Adafruit_BME280 bme1; Adafruit_BME280 bme2; #include // variables for target- and actual-value [°C] float value[4]; int temp_soll = 30; // target-value temperature float temp_mean; // mean temperature float temp_tol = 0.5; // Tolerance for temperature deviation from temp_set float hum_mean; // mean value Humidity int hum_soll = 70; // target value Humidity float hum_tol = 2; // tolerance Humidity // Variable für Abfragerate (1*60 = 1 Minute) const int SleeptimeS = 5; // string for sensor namens String addr[4]; // definition output relays peltier-element int Relais_1A = 26; int Relais_1B = 27; int Relais_2A = 14; int Relais_2B = 12; // definition output relays fog generator int Fog = 18; int Fan = 19; // definition fan (peltier-element) int Fan_PE = 5; uint timeStamp; int intervall; /********************************************************************/ void setup(void) { // start serial port & BME Serial.begin(9600); bme1.begin(0x76); bme2.begin(0x77); /********************************************************************/ // turn off relais for peltier element pinMode(Relais_1A, OUTPUT); pinMode(Relais_1B, OUTPUT); pinMode(Relais_2A, OUTPUT); pinMode(Relais_2B, OUTPUT); digitalWrite(Relais_1A, HIGH); digitalWrite(Relais_1B, HIGH); digitalWrite(Relais_2A, HIGH); digitalWrite(Relais_2B, HIGH); // output pins fog generator pinMode(Fog, OUTPUT); pinMode(Fan, OUTPUT); // output pin für fan-PE pinMode(Fan_PE, OUTPUT); // names of sensors addr[0] = "Humidity_H1"; addr[1] = "Humidity_H2"; addr[2] = "Temperature_T1"; addr[3] = "Temperature_T2"; Serial.println("SetUp done!"); } void loop(void) { /********************************************************************/ //PE cooling on digitalWrite(Fan_PE, HIGH); //request sensor values value[0] = bme1.readTemperature(); value[2] = bme1.readHumidity(); value[1] = bme2.readTemperature(); value[3] = bme2.readHumidity(); Serial.print("Humidity 1: "); Serial.print(value[3]); Serial.println(" %"); Serial.print("Temperauture 1: "); Serial.print(value[1]); Serial.println(" °C"); Serial.print("Humidity 2: "); Serial.print(value[2]); Serial.println(" %"); Serial.print("Temperature 2: "); Serial.print(value[0]); Serial.println(" °C"); /********************************************************************/ // temperature controll // calculate mean temperature temp_mean = (value[0]+value[1])/2; Serial.println("mean temperature: " + String(temp_mean)); // heat or cool if(temp_mean < temp_soll - temp_tol){ Serial.println("Temperature to low!"); digitalWrite(Relais_1A, HIGH); digitalWrite(Relais_1B,HIGH); digitalWrite(Relais_2A, LOW); digitalWrite(Relais_2B, LOW); } else if(temp_mean > temp_soll + temp_tol){ Serial.println("Temperature to high!"); digitalWrite(Relais_2A, HIGH); digitalWrite(Relais_2B, HIGH); digitalWrite(Relais_1A, LOW); digitalWrite(Relais_1B, LOW); } else{ Serial.println("Temperatur passt!"); digitalWrite(Relais_1A, HIGH); digitalWrite(Relais_1B, HIGH); digitalWrite(Relais_2A, HIGH); digitalWrite(Relais_2B, HIGH); } /********************************************************************/ // Humidity controll // calculate mean humidity hum_mean = (value[2]+value[3])/2; if(hum_mean < hum_soll - hum_tol){ Serial.println("humidity to low!"); digitalWrite(Fan, HIGH); digitalWrite(Fog, HIGH); } else if(hum_mean > hum_soll + hum_tol){ Serial.println("humidity to high!"); digitalWrite(Fan, HIGH); digitalWrite(Fog, LOW); } else{ Serial.println("humidity is right!"); digitalWrite(Fan, LOW); digitalWrite(Fog, LOW); } }