Cum transformi un esp32 într-un server web?
Știai că poți transforma un esp32 într-un mini server web? Perfect spre exempu pentru testarea site-urilor. Sau poate fi folosit ca un simplu proiect. Esp-ul este un microcontroler care se deosebește de celelalte microcontrolerele este că poate fi conectat la wifi. Sau poate creea el o rețea etc. Există o gamă foarte largă de proiecte pe care le poți realiza, spre exemplu să trimită datele de la un senzor la un bot de telegram. Mai poate fi folosit și la hacking, dar recomand să încerci doar în proiecte cu scopuri educaționale, care să nu afecteze alte site-uri, să buruieze wifi-ul și așa mai departe. Din păcate acest server nu va putea fi vizibil decât pentru dispozitivele conectate la aceiași rețea cu esp-ul. Dacă vrei să faci un server web recomand să folosești un calculator vechi. Dar pentru un proiect simplu e perfect acest esp. La codul de mai jos trebuie să modifici SSID cu numele rețelei de wifi la care se va conecta esp-ul, și la password parola acestei rețele. Ca să accesezi site-ul ai nevoie de un dispozitiv conectat la aceiași rețea. În serial monitor ar trebui să vezi adresa de ip a esp-ului (în Arduino IDE, apeși tools sau direct ctrl shift M). Apoi de pe acel dispozitiv intri într-un browser web și introduci adresa de ip. Asta este tot. simplu, nu? Ai codul mai jos. Spor!
Codul:
const char* ssid = "SSID";
const char* password = "password";
WiFiServer server(80);
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println();
Serial.print("Conectare la Wi-Fi / Connecting to Wi-Fi: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
int attempts = 0;
while (WiFi.status() != WL_CONNECTED && attempts < 20) {
delay(500);
Serial.print(".");
attempts++;
}
Serial.println();
if (WiFi.status() == WL_CONNECTED) {
Serial.println("Conectat la Wi-Fi / Connected to Wi-Fi");
Serial.print("IP ESP32: ");
Serial.println(WiFi.localIP());
} else {
Serial.println("Nu s-a putut conecta la Wi-Fi / Could not connect to Wi-Fi");
}
server.begin();
}
void loop() {
WiFiClient client = server.available();
if (client) {
String request = client.readStringUntil('\r');
client.flush();
// Conținut personalizat cu emoticoane pe site
String continut =
"Salut, aici ESP-ul tău te salută cu un zâmbet și câteva sfaturi utile! 😀<br>"
"Poți folosi acest server pentru a experimenta tot felul de proiecte IoT. 🚀<br>"
"De exemplu, să creezi mini-jocuri web, să monitorizezi date sau să testezi HTML direct din ESP! 😎";
// Pagina web cu stil și emoji
String html = "<!DOCTYPE html><html>";
html += "<head><meta charset='UTF-8'>";
html += "<title>ESP32 Web Server</title>";
html += "<style>";
html += "body { font-family: Arial, sans-serif; text-align: center; background-color: #f0f8ff; padding: 50px; }";
html += "h1 { color: #ff6600; }";
html += "p { color: #333333; font-size: 18px; line-height: 1.6; }";
html += "a { color: #0066cc; text-decoration: none; font-weight: bold; }";
html += "</style></head>";
html += "<body>";
html += "<h1>Salut de la ESP32! 😀</h1>";
html += "<p>" + continut + "</p>";
html += "<p>Pentru mai multe proiecte interesante accesați ";
html += "<a href='https://www.arduinolab.com' target='_blank'>www.arduinolab.com</a></p>";
html += "</body></html>";
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println("Connection: close");
client.println();
client.println(html);
delay(1);
client.stop();
}
}
