Wi-Fi LED Controller

Programming

Programming the ESP32 with Arduino IDE

#include <WiFi.h>
#include <WebServer.h>

// Wi-Fi credentials
const char* ssid = "YOUR_WIFI_NAME";
const char* password = "YOUR_WIFI_PASSWORD";

// LED connected to GPIO 2
const int LED_PIN = 2;

// Create web server on port 80
WebServer server(80);

// LED control page
void handleRoot() {
  String html = "<!DOCTYPE html>";
  html += "<html>";
  html += "<head>";
  html += "<meta name='viewport' content='width=device-width, initial-scale=1'>";
  html += "<title>ESP32 LED Controller</title>";
  html += "</head>";

  html += "<body style='text-align:center; font-family:Arial;'>";
  html += "<h1>Wi-Fi LED Controller</h1>";

  html += "<p><a href='/on'>";
  html += "<button style='font-size:25px; padding:15px 30px;'>ON</button>";
  html += "</a></p>";

  html += "<p><a href='/off'>";
  html += "<button style='font-size:25px; padding:15px 30px;'>OFF</button>";
  html += "</a></p>";

  html += "</body>";
  html += "</html>";

  server.send(200, "text/html", html);
}

// Turn LED ON
void handleLEDOn() {
  digitalWrite(LED_PIN, HIGH);
  server.sendHeader("Location", "/");
  server.send(303);
}

// Turn LED OFF
void handleLEDOff() {
  digitalWrite(LED_PIN, LOW);
  server.sendHeader("Location", "/");
  server.send(303);
}

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

  // Configure LED pin as output
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, LOW);

  // Connect to Wi-Fi
  WiFi.begin(ssid, password);

  Serial.print("Connecting to Wi-Fi");

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println();
  Serial.println("Wi-Fi connected!");
  Serial.print("ESP32 IP Address: ");
  Serial.println(WiFi.localIP());

  // Web server routes
  server.on("/", handleRoot);
  server.on("/on", handleLEDOn);
  server.on("/off", handleLEDOff);

  // Start web server
  server.begin();

  Serial.println("Web server started!");
}

void loop() {
  // Handle incoming web requests
  server.handleClient();
}