Controlare LED de la distanță

04.01.2026

V-am mai povestit câte chestii interesante poți face cu un esp32. Și asta este încă puțin. Pe aceată idee de proiect poți controla diverse dispozitive, relee etc. cu un simplu esp. Aici e totul mai simplu. E doar un led controlat de telefon... totuși destul de tare. Aveți nevoie să instalați placa esp32 și librăria WiFi. Eu l-am conectat la telefon prin hospot dar poate fi conectat și direct la rooter. În cod trebuie să înlocuiți SSID cu numele rețelei și password cu parola acesteia. Pe rețeaua la care este conectat esp-ul v-a apărea un site, care va putea fi accesat introducând adresa de ip într-un browser. Pentru a îi afla adresa de ip deschide serial monitor, și ar trebui să vezi asta:

Acum hai să vă povestesc cum ajungem până aici:

Componente necesare:

  • Esp32

  • LED
  • rezistor de 220 Ω
  • fire jumper
  • breadbord 

Conexiuni:

Piciorul lung al led-ului îl atașăm la G25 și celălalt picior prin rezistorul de 220 Ω la GND.


Cod:

#include <WiFi.h>

// -------- WiFi --------

const char* ssid = "SSID";

const char* password = "password";

// -------- LED --------

const int ledPin = 25;

WiFiServer server(80);

void setup() {

Serial.begin(115200);

pinMode(ledPin, OUTPUT);

digitalWrite(ledPin, LOW);

// Conectare WiFi

WiFi.begin(ssid, password);

Serial.print("Conectare la WiFi");

while (WiFi.status() != WL_CONNECTED) {

delay(500);

Serial.print(".");

}

Serial.println("\nWiFi conectat!");

Serial.print("IP-ul ESP32 este: ");

Serial.println(WiFi.localIP()); // afișeaza IP-ul in Serial Monitor

server.begin(); // pornește serverul pe portul 80

}

void loop() {

WiFiClient client = server.available(); // asteapta client

if (client) {

String request = client.readStringUntil('\r');

Serial.println("Cerere: " + request);

client.flush();

// Controleaza LED-ul

if (request.indexOf("/on") != -1) {

digitalWrite(ledPin, HIGH);

}

if (request.indexOf("/off") != -1) {

digitalWrite(ledPin, LOW);

}

// Trimite pagina web cu butoane mari

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>");

client.println("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">"); // responsive mobil

client.println("<style>");

client.println("body { font-family: Arial; text-align: center; font-size: 24px; }");

client.println("button { font-size: 32px; padding: 20px 60px; margin: 20px; border-radius: 15px; }");

client.println("</style>");

client.println("</head>");

client.println("<body>");

client.println("<h1>Control LED / Control LED</h1>");

client.println("<p>Apasa un buton / Press a button</p>");

client.println("<a href=\"/on\"><button>ON</button></a>");

client.println("<a href=\"/off\"><button>OFF</button></a>");

client.println("</body>");

client.println("</html>");

delay(1);

client.stop();

}

}

-