🌐 وب‌سرور ESP32 به روش WiFiServer

همان روشن و خاموش کردن LED از صفحه‌ی وب، به روشی که بیشتر آموزش‌های اینترنت می‌نویسند: خواندن درخواست و چاپ جواب خط به خط.

سطح: چالشی ⭐⭐⭐ · مود: آردوینو (سه‌بعدی + کد)

قطعات لازم

کد کامل پروژه

// ESP32 web server the "raw" way (WiFiServer): read the request yourself
// and print the answer line by line. Run it, then open the «مرورگر» tab.
#include <WiFi.h>

const char* ssid = "MyHome";
const char* password = "12345678";
const int LED = 4;

WiFiServer server(80);
String header = "";
bool ledOn = false;

void setup() {
  Serial.begin(115200);
  pinMode(LED, OUTPUT);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) delay(200);
  Serial.println(WiFi.localIP());
  server.begin();
}

void loop() {
  WiFiClient client = server.available();     // is a browser asking?
  if (client) {
    String currentLine = "";
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        header += c;
        if (c == '\n') {
          if (currentLine.length() == 0) {     // an empty line = end of the request
            if (header.indexOf("GET /led/on") >= 0) ledOn = true;
            if (header.indexOf("GET /led/off") >= 0) ledOn = false;
            digitalWrite(LED, ledOn ? HIGH : LOW);

            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println("Connection: close");
            client.println();
            client.println("<!DOCTYPE html><html><body style='font-family:sans-serif;text-align:center'>");
            client.println("<h1>ESP32 LED</h1>");
            client.println(ledOn ? "<p>LED is ON</p>" : "<p>LED is OFF</p>");
            client.println("<p><a href='/led/on'><button>ON</button></a> <a href='/led/off'><button>OFF</button></a></p>");
            client.println("</body></html>");
            client.println();
            break;
          } else {
            currentLine = "";
          }
        } else if (c != '\r') {
          currentLine += c;
        }
      }
    }
    header = "";
    client.stop();
  }
}

چطور اجرایش کنم؟

  1. شبیه‌ساز تینکرکد فارسی را باز کن و «مود آردوینو» را انتخاب کن.
  2. از پنل «نمونه‌ها»، «وب‌سرور ESP32 به روش WiFiServer» را بارگذاری کن — مدار و کد با هم می‌آیند.
  3. دکمه‌ی اجرا ▶ را بزن و خروجی Serial و رفتار قطعات را تماشا کن.
  4. حالا کد را تغییر بده — عددها، پین‌ها، ترتیب — و دوباره اجرا کن!
این پروژه را رایگان در شبیه‌ساز اجرا کن 🤖