/*
ESP32 Web Control with Serial Feedback
---------------------------------------
- Accepts: /set?led=0/1&buzzer=0/1
- Controls: LED = GPIO 21
Buzzer = GPIO 22
- Prints live ON/OFF status in Serial Monitor
*/
#include <WiFi.h>
#include <WebServer.h>
const char* STA_SSID = "Wokwi-GUEST";
const char* STA_PASS = "";
const int PIN_LED = 21;
const int PIN_BUZZER = 22;
WebServer server(80);
void printStatus() {
Serial.print("LED: ");
Serial.print(digitalRead(PIN_LED) ? "ON" : "OFF");
Serial.print(" | BUZZER: ");
Serial.println(digitalRead(PIN_BUZZER) ? "ON" : "OFF");
}
void handleRoot() {
server.send(200, "text/html", "<h3>ESP32 Online</h3>");
}
void handleSet() {
Serial.println("----- REQUEST RECEIVED -----");
String ledStr = server.arg("led");
String buzStr = server.arg("buzzer");
Serial.print("Query: led=");
Serial.print(ledStr);
Serial.print(" buzzer=");
Serial.println(buzStr);
if (ledStr == "1") {
digitalWrite(PIN_LED, HIGH);
Serial.println("LED → ON");
}
else if (ledStr == "0") {
digitalWrite(PIN_LED, LOW);
Serial.println("LED → OFF");
}
if (buzStr == "1") {
digitalWrite(PIN_BUZZER, HIGH);
Serial.println("BUZZER → ON");
}
else if (buzStr == "0") {
digitalWrite(PIN_BUZZER, LOW);
Serial.println("BUZZER → OFF");
}
printStatus();
Serial.println("----------------------------\n");
String response = "{";
response += "\"led\":";
response += (digitalRead(PIN_LED) ? "1" : "0");
response += ",\"buzzer\":";
response += (digitalRead(PIN_BUZZER) ? "1" : "0");
response += "}";
server.send(200, "application/json", response);
}
void setupServer() {
server.on("/", HTTP_GET, handleRoot);
server.on("/set", HTTP_GET, handleSet);
server.begin();
Serial.println("✔ HTTP Server Started");
}
void setup() {
Serial.begin(115200);
Serial.println("\nBooting ESP32...");
pinMode(PIN_LED, OUTPUT);
pinMode(PIN_BUZZER, OUTPUT);
digitalWrite(PIN_LED, LOW);
digitalWrite(PIN_BUZZER, LOW);
WiFi.mode(WIFI_STA);
WiFi.begin(STA_SSID, STA_PASS);
Serial.print("Connecting to WiFi: ");
Serial.println(STA_SSID);
unsigned long startAttempt = millis();
while (WiFi.status() != WL_CONNECTED && millis() - startAttempt < 6000) {
Serial.print(".");
delay(300);
}
if (WiFi.status() == WL_CONNECTED) {
Serial.println("\n✔ Connected to Wokwi-GUEST");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
} else {
Serial.println("\n❌ STA Failed — Starting SoftAP...");
WiFi.mode(WIFI_AP);
WiFi.softAP("ESP32_AP", "wokwi1234");
Serial.print("SoftAP IP: ");
Serial.println(WiFi.softAPIP());
}
setupServer();
}
void loop() {
server.handleClient();
}