#include <WiFi.h>
// WiFi credentials (Wokwi default)
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// Create server on port 80
WiFiServer server(80);
// LED pin (GPIO 2)
#define LED_PIN 2
void setup() {
Serial.begin(115200);
Serial.println("Starting...");
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
// Connect to WiFi
WiFi.begin(ssid, password);
Serial.print("Connecting");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nConnected!");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
// Start server
server.begin();
}
void loop() {
WiFiClient client = server.available();
if (!client) return;
Serial.println("New Client Connected");
// Wait for client request
while (!client.available()) {
delay(1);
}
// Read request
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
// LED Control
if (request.indexOf("/ON") != -1) {
digitalWrite(LED_PIN, HIGH);
Serial.println("LED ON");
}
if (request.indexOf("/OFF") != -1) {
digitalWrite(LED_PIN, LOW);
Serial.println("LED OFF");
}
// Send FULL HTTP response (VERY IMPORTANT)
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<head><title>ESP32 Web Server</title></head>");
client.println("<body style='text-align:center;'>");
client.println("<h1>ESP32 Web Server</h1>");
client.println("<p><a href=\"/ON\"><button style='padding:10px;'>LED ON</button></a></p>");
client.println("<p><a href=\"/OFF\"><button style='padding:10px;'>LED OFF</button></a></p>");
client.println("</body>");
client.println("</html>");
delay(1);
client.stop(); // VERY IMPORTANT
}