const float BETA = 3950;
void setup() {
Serial.begin(115200);
Serial.println("Hello, ESP32!");
analogReadResolution(10);
pinMode(15, INPUT); //temp sensor
pinMode(2, INPUT); // lumen sensor
pinMode(33, OUTPUT); // red led
pinMode(27, OUTPUT); //green led
pinMode(25, OUTPUT); //yellow led
pinMode(26, OUTPUT); //buzzer
pinMode(21, OUTPUT); //SDA lcd
pinMode(22, OUTPUT);//SCL lcd
}
void loop() {
int analogValue = analogRead(15);
int analogValue1 = analogRead(2);
float celsius = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
float flamelevel = map(analogValue1, 0, 1024, 100, 0);
Serial.print("Sensor Fire lumens: ");
Serial.println(flamelevel, 0);
Serial.print("Sensor Temp : ");
Serial.println(celsius, 0);
if (celsius < 35 && flamelevel < 35) {
digitalWrite(33, LOW);
digitalWrite(25, LOW);
Serial.println("No Smoke No Fire....");
digitalWrite(27, HIGH);
lcd.setCursor(11, 0);
lcd.print("No Fire");
lcd.setCursor(11, 1);
lcd.print(flamelevel, 0);
lcd.print(" %");
lcd.setCursor(11, 2);
lcd.print("No Smoke");
lcd.setCursor(11, 3);
lcd.print(celsius, 0);
lcd.print(" %");
}
else if (celsius > 35 && flamelevel > 35 && celsius < 50 && flamelevel < 50) {
digitalWrite(33, LOW);
Serial.println("Take care the Temp is getting high....");
digitalWrite(27, LOW);
digitalWrite(25, HIGH);
lcd.setCursor(11, 0);
lcd.print(" WARNING ");
lcd.setCursor(11, 1);
lcd.print(flamelevel, 0);
lcd.print(" %");
lcd.setCursor(11, 2);
lcd.print(" WARNING ");
lcd.setCursor(11, 3);
lcd.print(celsius, 0);
lcd.print(" %");
}
else if (celsius > 50 && flamelevel > 50) {
digitalWrite(33, HIGH);
Serial.println("Fire alarm....");
digitalWrite(27, LOW);
digitalWrite(25, LOW);
digitalWrite(26, HIGH);
tone(buzzer,1000);
lcd.setCursor(11, 0);
lcd.print(" FIRE ");
lcd.setCursor(11, 1);
lcd.print(flamelevel, 0);
lcd.print(" %");
lcd.setCursor(11, 2);
lcd.print(" FIRE ");
lcd.setCursor(11, 3);
lcd.print(celsius, 0);
lcd.print(" %");
}
lcd.setCursor(0, 0);
lcd.print(F("Flame: "));
lcd.setCursor(0, 1);
lcd.print(F("Persent: "));
lcd.setCursor(0, 2);
lcd.print(F("Temp : "));
lcd.setCursor(0, 3);
lcd.print(F("Persent: "));
delay(700); // this speeds up the simulation