پیشرفته⏱ 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 را ساده‌تر می‌کنند؛ اما درک نسخهٔ خام با سوکت، پایه و اساس همان کتابخانه‌هاست.

🧩

برای این پروژهٔ خاص (وب‌سرور کنترل LED) پروژهٔ آمادهٔ دقیقاً متناظر در Wokwi پیدا نکردیم؛ کد این درس را در یک پروژهٔ خالی میکروپایتون اجرا کنید — پس از دیدن آدرس IP در سریال مانیتور، آن را داخل خود Wokwi (نه مرورگر بیرونی) در تب جدید باز کنید.

ساخت پروژهٔ خالی میکروپایتون در Wokwi ↗
🛠️ کارگاه عملی

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

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