/* * This ESP32 code is created by esp32io.com * * This ESP32 code is released in the public domain * * For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/esp32-cooling-system-using-ds18b20-temperature-sensor */ //Modified by Kishore Gaikwad, 11-May-2022 #include #include #include #include LiquidCrystal_I2C lcd(0x27,16,2); #define TEMP_UPPER_THRESHOLD 36 // upper temperature threshold //#define TEMP_LOWER_THRESHOLD 34 // lower temperature threshold #define SENSOR_PIN 12 // ESP32 pin connected to DS18B20 sensor's DQ pin #define RELAY_FAN_PIN 26 // ESP32 pin connected to relay int Gas_analog = 4; // used for ESP32 int Gas_digital = 16; // used for ESP32 OneWire oneWire(SENSOR_PIN); DallasTemperature DS18B20(&oneWire); void setup() { Serial.begin(115200); // initialize serial DS18B20.begin(); // initialize the DS18B20 sensor pinMode(RELAY_FAN_PIN, OUTPUT); pinMode(Gas_digital, INPUT); pinMode(Gas_analog, INPUT); lcd.begin(); lcd.backlight(); } void loop() { DS18B20.requestTemperatures(); // send the command to get temperatures float temperature = DS18B20.getTempCByIndex(0); // read temperature in Celsius Serial.print(temperature); Serial.println("ºC"); lcd.clear(); lcd.setCursor(0, 0); // set cursor to first column, first row lcd.print(temperature); // print temp on lcd lcd.print((char)223); // display ° character lcd.print("C"); int GasSensorValue = analogRead(Gas_analog); int gassensorDigital = digitalRead(Gas_digital); Serial.print("Gas Sensor: "); Serial.print(GasSensorValue); Serial.print("\t"); Serial.print("Gas Class: "); Serial.print(gassensorDigital); Serial.print("\t"); Serial.print("\t"); if ((temperature > TEMP_UPPER_THRESHOLD)&& (GasSensorValue > 200)){ Serial.println("Turn the fan on"); lcd.setCursor(0, 1); lcd.print("Turn the fan on"); digitalWrite(RELAY_FAN_PIN, LOW); // turn on } else if ((temperature < TEMP_UPPER_THRESHOLD)&& (GasSensorValue < 200)) { Serial.println("Turn the fan off"); lcd.setCursor(0, 1); lcd.print("Turn the fan off"); digitalWrite(RELAY_FAN_PIN, HIGH); // turn off } if ((temperature > TEMP_UPPER_THRESHOLD)|| (GasSensorValue > 200)){ Serial.println("Turn the fan on"); lcd.setCursor(0, 1); lcd.print("Turn the fan on"); digitalWrite(RELAY_FAN_PIN, LOW); // turn on } else if ((temperature < TEMP_UPPER_THRESHOLD)&& (GasSensorValue < 200)) { Serial.println("Turn the fan off"); lcd.setCursor(0, 1); lcd.print("Turn the fan off"); digitalWrite(RELAY_FAN_PIN, HIGH); // turn off } delay(500); }