SMART PUBLIC TOILET HYGIENE MONITORING SYSTEM — ESP32 simulation

CREATED BY - AMAN SHUKLA

An interactive ESP32 circuit simulation you can run free in your browser on Velxio, by adityarajbusiness714.

Components

Sketch code

#define BLYNK_PRINT Serial

#define BLYNK_TEMPLATE_ID "TMPL36Bj03cr7"
#define BLYNK_TEMPLATE_NAME "SMART PUBLIC TOILET MONITORING"
#define BLYNK_AUTH_TOKEN "nxiREy8g-LBlZdKxD0tMAAhjGF7PwKxl"

#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>

char ssid[] = "Velxio-GUEST";
char pass[] = "";   // WiFi password yahan daalo

#define DHTPIN 4
#define DHTTYPE DHT22

#define MQ135_PIN 34
#define PIR_PIN 14

#define GREEN_LED 25
#define BLUE_LED 26
#define RED_LED 27

DHT dht(DHTPIN, DHTTYPE);

BlynkTimer timer;

int pirCount = 0;
int lastPirState = LOW;

void sendData()
{
  float temp = dht.readTemperature();
  float hum = dht.readHumidity();

  int airQuality = analogRead(MQ135_PIN);
  int pirState = digitalRead(PIR_PIN);

  // Occupancy Count
  if (pirState == HIGH && lastPirState == LOW)
  {
    pirCount++;
  }

  lastPirState = pirState;

  // Invalid DHT Reading Check
  if (isnan(temp) || isnan(hum))
  {
    Serial.println("DHT Sensor Error!");
    return;
  }

  // Hygiene Score Calculation
  int hygieneScore = 100;

  // Air Quality
  if (airQuality > 500)
    hygieneScore -= 40;
  else if (airQuality > 250)
    hygieneScore -= 20;

  // Temperature
  if (temp > 35)
    hygieneScore -= 20;
  else if (temp > 30)
    hygieneScore -= 10;

  // Humidity
  if (hum > 85)
    hygieneScore -= 20;
  else if (hum > 70)
    hygieneScore -= 10;

  // Occupancy Penalty
  if (pirState == HIGH)
    hygieneScore -= 10;

  if (hygieneScore < 0)
    hygieneScore = 0;

  // LED Status
  digitalWrite(GREEN_LED, LOW);
  digitalWrite(BLUE_LED, LOW);
  digitalWrite(RED_LED, LOW);

  if (hygieneScore >= 80)
  {
    digitalWrite(GREEN_LED, HIGH);
  }
  else if (hygieneScore >= 50)
  {
    digitalWrite(BLUE_LED, HIGH);
  }
  else
  {
    digitalWrite(RED_LED, HIGH);
  }

  // Serial Monitor Output
  Serial.println("========== SMART TOILET ==========");

  Serial.print("Temperature: ");
  Serial.print(temp);
  Serial.println(" C");

  Serial.print("Humidity: ");
  Serial.print(hum);
  Serial.println(" %");

  Serial.print("Air Quality: ");
  Serial.println(airQuality);

  Serial.print("Occupancy Count: ");
  Serial.println(pirCount);

  Serial.print("Current Status: ");
  if (pirState == HIGH)
    Serial.println("Occupied");
  else
    Serial.println("Vacant");

  Serial.print("Hygiene Score: ");
  Serial.println(hygieneScore);

  if (hygieneScore >= 80)
    Serial.println("Condition: GOOD");
  else if (hygieneScore >= 50)
    Serial.println("Condition: MODERATE");
  else
    Serial.println("Condition: BAD");

  Serial.println("==================================");

  // Blynk Data
  Blynk.virtualWrite(V0, temp);
  Blynk.virtualWrite(V1, hum);
  Blynk.virtualWrite(V2, airQuality);
  Blynk.virtualWrite(V3, pirCount);
  Blynk.virtualWrite(V4, hygieneScore);
}

void setup()
{
  Serial.begin(115200);

  dht.begin();

  pinMode(PIR_PIN, INPUT);

  pinMode(GREEN_LED, OUTPUT);
  pinMode(BLUE_LED, OUTPUT);
  pinMode(RED_LED, OUTPUT);

  analogReadResolution(12);

  

More projects by adityarajbusiness714