🌐 وب‌سرور ESP32: روشن و خاموش کردن LED از مرورگر

✍️ تیم ووکوی فارسی ·

تصور کن گوشی‌ات را برداری، یک آدرس را باز کنی و با زدن یک دکمه، چراغ روی میز روشن شود. این همان وب‌سرور ESP32 است: خود برد یک سایت کوچک می‌سازد و به مرورگر جواب می‌دهد. در این آموزش با کتابخانه‌ی WebServer.h این کار را انجام می‌دهیم و همه‌چیز را در شبیه‌ساز ESP32 فارسی، مثل کاری که در ووکوی انجام می‌دهی، امتحان می‌کنیم.

وب‌سرور چطور کار می‌کند؟

وقتی آدرسی را در مرورگر می‌زنی، مرورگر یک «درخواست» می‌فرستد و سرور یک صفحه برمی‌گرداند. ما به برد می‌گوییم برای هر مسیر چه کند:

قطعه‌ها و سیم‌کشی

قطعهاتصال
ESP32—
مقاومت ۲۲۰ اهمبین GPIO4 و پایه‌ی بلند LED
LEDپایه‌ی کوتاه به GND

کد کامل

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

const int LED = 4;
bool ledOn = false;
WebServer server(80);                // port 80 = normal web pages

void handleRoot() {
  String html = "<!doctype html><html><head><meta charset='utf-8'>";
  html += "<meta name='viewport' content='width=device-width, initial-scale=1'></head>";
  html += "<body style='font-family:sans-serif;text-align:center'>";
  html += "<h2>My ESP32 lamp</h2>";
  html += "<p>LED is <b>" + String(ledOn ? "ON" : "OFF") + "</b></p>";
  html += "<a href='/on'><button>ON</button></a> ";
  html += "<a href='/off'><button>OFF</button></a>";
  html += "</body></html>";
  server.send(200, "text/html", html);
}

void setLed(bool on) {
  ledOn = on;
  digitalWrite(LED, on ? HIGH : LOW);
  handleRoot();                      // show the page again
}

void setup() {
  Serial.begin(115200);
  pinMode(LED, OUTPUT);
  WiFi.begin("Wokwi-GUEST", "");     // simulator network, no password
  while (WiFi.status() != WL_CONNECTED) delay(200);
  Serial.print("Open http://");
  Serial.println(WiFi.localIP());

  server.on("/", handleRoot);
  server.on("/on", []() { setLed(true); });
  server.on("/off", []() { setLed(false); });
  server.onNotFound([]() { server.send(404, "text/plain", "Not found"); });
  server.begin();
}

void loop() {
  server.handleClient();             // answer whoever is asking
}

توضیح بخش‌های مهم

💡 در شبیه‌ساز، صفحه‌ای که ESP32 می‌سازد در یک مرورگر مجازی داخل خود شبیه‌ساز باز می‌شود؛ لازم نیست آدرس IP را جایی کپی کنی.

یک قدم جلوتر

وقتی این نسخه کار کرد، چند تغییر کوچک امتحان کن تا مطمئن شوی واقعاً فهمیده‌ای. یک دکمه‌ی سوم به اسم «چشمک» بساز که با مسیر /blink چراغ را سه بار روشن و خاموش کند. یا یک LED دوم روی GPIO5 بگذار و برای هرکدام دو دکمه‌ی جدا بساز. می‌توانی متن صفحه را هم فارسی کنی؛ چون meta charset='utf-8' را گذاشته‌ایم، حروف فارسی درست نمایش داده می‌شوند. اگر صفحه را روی گوشی باز کنی، تگ viewport نمی‌گذارد دکمه‌ها ریز شوند.

امتحانش کن

این پروژه آماده است: روشن کردن LED از صفحه‌ی وب (ESP32)، و نسخه‌ی درسی‌اش LED از مرورگر. خواندن کد رایگان است و اجرای ESP32 به اشتراک Plus نیاز دارد. اگر کنجکاوی همین کار را سطح پایین‌تر و با WiFiServer ببینی، وب‌سرور ESP32 به روش WiFiServer را باز کن. توضیح مفصل‌تری هم در درس «وب‌سرور: LED از مرورگر» هست.

اشکال‌های رایج

اگر هنوز وصل شدن به شبکه برایت تازه است، اول اتصال ESP32 به وای‌فای را بخوان. قدم بعدی هم صفحه‌ای است که بدون رفرش زنده می‌ماند: داده‌ی زنده با WebSocket. پروژه‌های بیشتر در وای‌فای و اینترنت اشیا.

وب‌سرور LED را در تینکرکد فارسی ببین 🌐

مقاله‌های مرتبط

🌗

PWM روی ESP32 با ledc: کم و زیاد کردن نور LED

🌡️

صفحه‌ی وب دما و رطوبت با سنسور DHT روی ESP32

🧩

ساخت API با JSON روی ESP32 با کتابخانه‌ی ArduinoJson

🌈

نمایشگر OLED و نئوپیکسل با میکروپایتون روی رزبری پای پیکو

همه‌ی آموزش‌های ESP32 و اینترنت اشیا ← · همه‌ی مقاله‌ها