پیشرفته⏱ 20 دقیقه مطالعه

حالا که ESP32 به شبکه متصل شد، می‌توانیم یک وب‌سرور ساده روی آن اجرا کنیم تا از طریق مرورگر، LED را روشن یا خاموش کنیم — یکی از رایج‌ترین پروژه‌های شروع در دنیای IoT.

وب‌سرور با سوکت‌های خام

PYTHON
import network, socket
from machine import Pin
from time import sleep

led = Pin(2, Pin.OUT)

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("NAME_OF_YOUR_WIFI", "YOUR_PASSWORD")
while not wlan.isconnected():
    sleep(1)
print("IP:", wlan.ifconfig()[0])

html = """<html><body>
<h1>کنترل LED با ESP32</h1>
<a href="/on"><button>روشن</button></a>
<a href="/off"><button>خاموش</button></a>
</body></html>"""

addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]
s = socket.socket()
s.bind(addr)
s.listen(1)

while True:
    cl, addr = s.accept()
    request = cl.recv(1024).decode()
    if '/on' in request:
        led.on()
    elif '/off' in request:
        led.off()
    cl.send('HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n')
    cl.send(html)
    cl.close()
💡 نکته

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

بهبود کد با پردازش تمیزتر مسیر

برای پروژه‌های واقعی، بهتر است از کتابخانه‌های سبک مانند microdot یا tinyweb استفاده کنید که مدیریت مسیرها (routing) و پاسخ JSON را ساده‌تر می‌کنند؛ اما درک نسخهٔ خام با سوکت، پایه و اساس همان کتابخانه‌هاست.

نمونه پروژه شبکه‌ای ESP32 باز کردن در Wokwi ↗

این یک شبیه‌سازی واقعی و قابل اجراست؛ روی دکمه پخش (▶) در Wokwi بزنید تا کد روی برد مجازی ESP32 اجرا شود.

🛠️ کارگاه عملی

کارگاه عملی: یک مسیر جدید مثل /status اضافه کنید که وضعیت فعلی LED را به‌صورت متن ساده برگرداند.

❓ در این پروژه، برای دریافت درخواست‌های HTTP از کدام ماژول استفاده شده است؟
طراحی و توسعه: امین شیخ نجدیglcd.ir