پروژه کنترل LED و کلید از طریق وب با استفاده از ESP32

esp32 led

پروژه کنترل LED با وب و دکمه فیزیکی توسط ESP32

در این آموزش قصد داریم یک پروژه کاربردی با برد ESP32-WROOM-32 بسازیم که در آن یک LED هم از طریق مرورگر وب و هم به‌صورت دستی توسط یک دکمه فشاری کنترل می‌شود.

در این پروژه، ESP32 به شبکه Wi-Fi متصل شده و یک صفحه وب ساده ایجاد می‌کند. کاربر می‌تواند با باز کردن این صفحه در مرورگر موبایل یا کامپیوتر، LED را روشن یا خاموش کند. علاوه بر این، یک کلید فیزیکی نیز به مدار اضافه می‌شود تا امکان کنترل مستقیم LED بدون نیاز به وب فراهم باشد.

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

به همین دلیل در این پروژه از پایه‌هایی استفاده می‌کنیم که برای کاربردهای عمومی و پروژه‌های آموزشی گزینه‌های مطمئن‌تری هستند.


معرفی کلی پروژه

پروژه کنترل ال ای دی با esp32


هدف این پروژه ساخت یک سیستم کنترل LED مبتنی بر ESP32 است که دو روش کنترل را در اختیار کاربر قرار می‌دهد:

  • کنترل LED از طریق یک صفحه وب در شبکه Wi-Fi

  • کنترل LED با استفاده از یک کلید فیزیکی متصل به برد

در بخش نرم‌افزاری، ESP32 مانند یک وب‌سرور کوچک عمل می‌کند و یک رابط ساده برای تغییر وضعیت LED در اختیار کاربر قرار می‌دهد.

در بخش سخت‌افزاری نیز یک دکمه فشاری به عنوان ورودی دیجیتال استفاده می‌شود تا بتوان وضعیت LED را به‌صورت محلی تغییر داد.

این پروژه در ظاهر ساده است، اما یک نکته مهم درباره معماری ESP32 را آموزش می‌دهد: تمام پایه‌های GPIO این برد عملکرد یکسانی ندارند.

برخی پایه‌ها برای حافظه داخلی فلش استفاده می‌شوند، بعضی فقط قابلیت ورودی دارند و برخی دیگر در فرآیند بوت شدن ESP32 نقش دارند. بنابراین قبل از اتصال قطعات، بهتر است نقشه پایه‌های ESP32-WROOM-32 را بررسی کرده و GPIO مناسب را انتخاب کنیم.

برای انتخاب پایه‌ها در این پروژه از راهنمای Pinout برد ESP32-WROOM-32 استفاده شده است.


در این پروژه چه چیزهایی یاد می‌گیریم؟

با انجام این پروژه یاد خواهید گرفت:

  • نحوه اتصال LED به ESP32

  • نحوه اتصال کلید فشاری به عنوان ورودی دیجیتال

  • انتخاب پایه‌های مناسب GPIO برای پروژه‌های ESP32

  • ایجاد یک صفحه وب ساده توسط ESP32

  • کنترل خروجی برد از طریق مرورگر

  • خواندن وضعیت یک ورودی فیزیکی

  • جلوگیری از خطاهای رایج مربوط به انتخاب پایه‌های ESP32


چرا انتخاب GPIO در ESP32 اهمیت دارد؟

در بردهایی مانند Arduino Uno معمولاً بیشتر پایه‌های دیجیتال بدون نگرانی خاصی قابل استفاده هستند. اما ESP32 به دلیل امکانات بیشتر و معماری پیچیده‌تر، نیازمند دقت بیشتری در انتخاب پایه‌ها است.

برخی GPIOها در ESP32 به بخش‌های داخلی ماژول متصل هستند و استفاده از آن‌ها ممکن است باعث ایجاد مشکل شود. برای مثال:

  • پایه‌هایی برای حافظه فلش SPI استفاده می‌شوند.

  • بعضی پایه‌ها فقط قابلیت ورودی دارند.

  • برخی GPIOها روی حالت بوت برد تأثیر می‌گذارند.

استفاده نادرست از این پایه‌ها می‌تواند باعث مشکلاتی مانند:

  • اجرا نشدن برنامه پس از روشن شدن برد

  • خطا هنگام آپلود کد

  • رفتار غیرمنتظره مدار

برای این پروژه از پایه‌های زیر استفاده می‌کنیم:

عملکردپایه ESP32دلیل انتخاب
خروجی LEDGPIO 23پایه خروجی عمومی و مناسب
ورودی دکمهGPIO 18پایه عمومی مناسب برای ورودی و خروجی

این انتخاب‌ها برای پروژه‌های آموزشی و نمونه‌های اولیه مناسب هستند، زیرا از پایه‌های مربوط به حافظه فلش، پایه‌های فقط ورودی و مشکلات بوت جلوگیری می‌کنند.


قطعات مورد نیاز

قطعهتعداد
 برد توسعه ESP32-WROOM-321 عدد
 LED1 عدد
 مقاومت 220 اهم1 عدد
 کلید فشاری1 عدد
 مقاومت 10 کیلواهم1 عدد
 بردبورد1 عدد
 سیم جامپرچند عدد
 کابل USB1 عدد

اتصالات مدار

اتصال LED

پایه ESP32اتصال
GPIO 23پایه مثبت LED (آند) از طریق مقاومت 220 اهم
GNDپایه منفی LED (کاتد)

مقاومت 220 اهم برای محدود کردن جریان LED و محافظت از آن استفاده می‌شود.


اتصال کلید فشاری

پایه ESP32اتصال
GPIO 18یک طرف کلید فشاری
3.3Vطرف دیگر کلید
GPIO 18 به GNDاتصال مقاومت Pull-down با مقدار 10kΩ

عملکرد این مدار به این صورت است:

  • زمانی که کلید فشرده نیست، پایه GPIO 18 مقدار LOW را دریافت می‌کند.

  • هنگام فشردن کلید، این پایه مقدار HIGH خواهد داشت.


نکات مهم در سیم‌کشی

ESP32 با منطق 3.3 ولت کار می‌کند. بنابراین هرگز نباید ولتاژ 5V را مستقیماً به پایه‌های GPIO متصل کنید؛ زیرا ممکن است باعث آسیب به برد شود.

همچنین بهتر است از پایه‌های GPIO 6 تا GPIO 11 استفاده نکنید، زیرا این پایه‌ها معمولاً به حافظه SPI Flash داخلی ESP32 متصل هستند.

برای پروژه‌های آموزشی، استفاده از GPIOهای عمومی مانند موارد زیر انتخاب مناسب‌تری است:

  • GPIO 18

  • GPIO 19

  • GPIO 21

  • GPIO 22

  • GPIO 23


کد های پروژه :

در اینجاهم میتونید کدهای پروژه رو دانلود کنید

برای دریافت فایل های پروژه باید عضویت پایه داشته باشید، عضویت رایگان است


نرم‌افزارهای مورد نیاز

برای اجرای این پروژه به موارد زیر نیاز دارید:

  • Arduino IDE

  • بسته پشتیبانی بردهای ESP32 در Arduino IDE

  • یک شبکه Wi-Fi ( اتصال مودم )

قبل از آپلود برنامه، مطمئن شوید که برد صحیح ESP32 در تنظیمات Arduino IDE انتخاب شده است.

 

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

هفده − دوازده =