#include "DHTesp.h"
// Pin Definitions
#define DHT_PIN 15
#define PIR_PIN 13
#define LIGHT 2
#define FAN 4
#define BUZZER 18
DHTesp dht;
// Timer variables
unsigned long lastMotionTime = 0;
bool lightState = false;
// Mode control
bool autoMode = true;
void setup() {
Serial.begin(115200);
pinMode(PIR_PIN, INPUT);
pinMode(LIGHT, OUTPUT);
pinMode(FAN, OUTPUT);
pinMode(BUZZER, OUTPUT);
dht.setup(DHT_PIN, DHTesp::DHT22);
Serial.println("===== SMART HOME AUTOMATION =====");
Serial.println("A → Auto Mode | M → Manual Mode");
Serial.println("1/2 → Light ON/OFF");
Serial.println("3/4 → Fan ON/OFF");
Serial.println("5/6 → Buzzer ON/OFF");
}
void loop() {
// ===============================
// 📥 MANUAL INPUT
// ===============================
if (Serial.available()) {
char cmd = Serial.read();
if (cmd == 'A') autoMode = true;
if (cmd == 'M') autoMode = false;
if (!autoMode) {
if (cmd == '1') digitalWrite(LIGHT, HIGH);
if (cmd == '2') digitalWrite(LIGHT, LOW);
if (cmd == '3') digitalWrite(FAN, HIGH);
if (cmd == '4') digitalWrite(FAN, LOW);
if (cmd == '5') digitalWrite(BUZZER, HIGH);
if (cmd == '6') digitalWrite(BUZZER, LOW);
}
}
// ===============================
// 🤖 AUTO MODE
// ===============================
if (autoMode) {
float temp = dht.getTemperature();
int motion = digitalRead(PIR_PIN);
// 💡 TIMER LIGHT
if (motion == HIGH) {
digitalWrite(LIGHT, HIGH);
lastMotionTime = millis();
lightState = true;
}
if (lightState && millis() - lastMotionTime > 10000) {
digitalWrite(LIGHT, LOW);
lightState = false;
}
// 🌡️ FAN CONTROL
if (temp < 25) digitalWrite(FAN, LOW);
else digitalWrite(FAN, HIGH);
// 🔔 BUZZER
digitalWrite(BUZZER, motion);
// 📊 SERIAL OUTPUT
Serial.println("------ SYSTEM STATUS ------");
Serial.println("Mode: AUTO");
Serial.print("Temp: ");
Serial.print(temp);
Serial.println(" °C");
Serial.print("Motion: ");
Serial.println(motion ? "YES" : "NO");
Serial.print("Light: ");
Serial.println(lightState ? "ON" : "OFF");
Serial.print("Fan: ");
Serial.println(temp < 25 ? "OFF" : "ON");
Serial.print("Buzzer: ");
Serial.println(motion ? "ON" : "OFF");
Serial.println("---------------------------\n");
}
// ===============================
// 🎮 MANUAL MODE DISPLAY (ADDED)
// ===============================
if (!autoMode) {
Serial.println("------ SYSTEM STATUS ------");
Serial.println("Mode: MANUAL");
Serial.print("Light: ");
Serial.println(digitalRead(LIGHT) ? "ON" : "OFF");
Serial.print("Fan: ");
Serial.println(digitalRead(FAN) ? "ON" : "OFF");
Serial.print("Buzzer: ");
Serial.println(digitalRead(BUZZER) ? "ON" : "OFF");
Serial.println("---------------------------\n");
}
delay(1000);
}Loading
esp32-s2-devkitm-1
esp32-s2-devkitm-1