Controlare LED de la distanță
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:
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();
}
}
-
