معرفی کامل ESP32-WROOM-32 (راهنمای کامل پین ها و ویژگی ها)

برای اضافه کردن ارتباط بیسیم به پروژههای امبدد یا ساخت دستگاههای اینترنت اشیاء، ESP32 از محبوبترین گزینهها به شمار میآید. این پلتفرم گزینه پردازنده دو هستهای برای کاربردهای پردازشمحور را ارائه میدهد و داشتن WiFi و Bluetooth داخلی طراحی را سادهتر میکند. همچنین تعداد کافی پینهای ورودی/خروجی، حافظه و امکانات تطبیقپذیری دارد که پاسخگوی بسیاری از نیازهای پروژههاست.
شرکت Espressif که تراشهESP32 را تولید میکند، ماژولها و بوردهای توسعه هم عرضه میکند. اگر قصد طراحی PCB سفارشی با ESP32 را دارید، استفاده از ماژول ESP32-WROOM-32 انتخاب مناسبی است. بهکارگیری ماژول بهجای چیپ بیسیم مزایایی دارد؛ از جمله اینکه ماژول اغلب از قبل تاییدیه های لازم مانند FCC را دارد و نیازی به اقدامات جداگانه برای رعایت قوانین رادیویی نیست که این موضوع فرایند تولید را ساده میکند.
در طراحی PCB سفارشی، آشنایی با پین اوت ESP32-WROOM-32 اهمیت زیادی دارد. در ادامه پین اوت و جزئیات عملکردی هر پین را بررسی میکنیم.
پین اوت ESP32-WROOM-32
ماژول ESP32-WROOM-32 در مجموع 38 پین دارد. پین اوت ماژول به شکل زیر است:

در ادامه هر یک از پینها و نقش آنها را با جزئیات بیشتری میبینیم.
GPIO ها
ماژول ESP32-WROOM-32 دارای 32 GPIO است که با تنظیم رجیسترهای مربوطه میتوان عملکردهای مختلفی به آنها اختصاص داد. انواع GPIO شامل دیجیتال-فقط، فعالشده برای آنالوگ و فعالشده برای لمس خازنی است. اکثر GPIOهای دیجیتال را میتوان با مقاومتهای داخلی pull-up یا pull-down پیکربندی کرد یا آنها را در حالت high-impedance قرار داد.

کدام GPIOها امن هستند؟
با وجود تعداد زیاد پینها و عملکردهای متنوع، برخی پینها برای همهٔ کاربردها مناسب نیستند. جدول زیر نشان میدهد کدام پینها بهطور کلی ایمناند، کدامها نیاز به احتیاط دارند و کدامها بهتر است استفاده نشوند.
| پین | برچسب پین | GPIO | قابل استفاده؟ | دلیل |
|---|---|---|---|---|
| 4 | SENSOR_VP | GPIO36 | احتیاط | فقط ورودی؛ قابل تنظیم به خروجی نیست |
| 5 | SENSOR_VN | GPIO39 | احتیاط | فقط ورودی؛ قابل تنظیم به خروجی نیست |
| 6 | IO34 | GPIO34 | احتیاط | فقط ورودی؛ قابل تنظیم به خروجی نیست |
| 7 | IO35 | GPIO35 | احتیاط | فقط ورودی؛ قابل تنظیم به خروجی نیست |
| 8 | IO32 | GPIO32 | ایمن | |
| 9 | IO33 | GPIO33 | ایمن | |
| 10 | IO25 | GPIO25 | ایمن | |
| 11 | IO26 | GPIO26 | ایمن | |
| 12 | IO27 | GPIO27 | ایمن | |
| 13 | IO14 | GPIO14 | ایمن | |
| 14 | IO12 | GPIO12 | احتیاط | باید هنگام بوت LOW باشد |
| 16 | IO13 | GPIO13 | ایمن | |
| 17 | SHD/SD2 | GPIO9 | اجتناب شود | متصل به حافظهٔ فلش |
| 18 | SWP/SD3 | GPIO10 | اجتناب شود | متصل به حافظهٔ فلش |
| 19 | SCS/CMD | GPIO11 | اجتناب شود | متصل به حافظهٔ فلش |
| 20 | SCK/CLK | GPIO6 | اجتناب شود | متصل به حافظهٔ فلش |
| 21 | SDO/SD0 | GPIO7 | اجتناب شود | متصل به حافظهٔ فلش |
| 22 | SDI/SD1 | GPIO8 | اجتناب شود | متصل به حافظهٔ فلش |
| 23 | IO15 | GPIO15 | احتیاط | باید هنگام بوت HIGH باشد؛ اگر LOW کشیده شود، لاگ شروع کار حذف میشود |
| 24 | IO2 | GPIO2 | احتیاط | باید هنگام بوت LOW باشد و به LED روی برد متصل است |
| 25 | IO0 | GPIO0 | احتیاط | باید هنگام بوت HIGH باشد و برای پروگرام کردن LOW میشود |
| 26 | IO4 | GPIO4 | ایمن | |
| 27 | IO16 | GPIO16 | ایمن | |
| 28 | IO17 | GPIO17 | ایمن | |
| 29 | IO5 | GPIO5 | احتیاط | باید هنگام بوت HIGH باشد |
| 30 | IO18 | GPIO18 | ایمن | |
| 31 | IO19 | GPIO19 | ایمن | |
| 33 | IO21 | GPIO21 | ایمن | |
| 34 | RXD0 | GPIO3 | اجتناب شود | پین Rx؛ برای فلش و اشکالزدایی استفاده میشود |
| 35 | TXD0 | GPIO1 | اجتناب شود | پین Tx؛ برای فلش و اشکالزدایی استفاده میشود |
| 36 | IO22 | GPIO22 | ایمن | |
| 37 | IO23 | GPIO23 | ایمن |
تصویر زیر نشان میدهد کدام GPIOها را میتوان با خیال راحت استفاده کرد.

GPIO های فقط ورودی
پینهای شمارهٔ 4، 5، 6 و 7 را نمیتوان به عنوان خروجی پیکربندی کرد. این پینها را میتوان بهعنوان ورودی دیجیتال یا آنالوگ و یا برای کاربردهای دیگر استفاده کرد، اما برخلاف بسیاری از GPIOهای دیگر، اینها مقاومت pull-up یا pull-down داخلی ندارند.
پینهای وقفه (Interrupt)
همهٔ GPIOها را میتوان به عنوان منبع وقفه پیکربندی کرد. (مقداردهی و مدیریت دقیق وقفهها وابسته به روش پیادهسازی نرمافزاری است.)

پینهای ADC
ماژول ESP32-WROOM-32 دو بلاک مبدل آنالوگ به دیجیتال دارد: ADC1 و ADC2. هر بلاک چندین کانال در اختیار دارد:
- ADC1: شامل 6 کانال (برچسبگذاری شده به صورت ADC1_CH0 و ADC1_CH3 تا ADC1_CH7).
- ADC2: شامل 10 کانال (برچسبگذاری شده از ADC2_CH0 تا ADC2_CH9).

رزولوشن ADCها در ESP32 تا 12 بیت قابل پیکربندی است. یعنی ADC میتواند 4096 مقدار گسسته (2^12) را تشخیص دهد. با توجه به ولتاژ کاری 3.3 V، رزولوشن معادل 3.3 V / 4096 واحد، یا حدود 0.0008 ولت (0.8 mV) به ازای هر واحد است.
هشدار:
وقتی Wi‑Fi فعال است، پینهای ADC2 قابل استفاده نیستند. اگر نیاز به Wi‑Fi دارید، از پینهای ADC1 استفاده کنید.
پینهای DAC
ماژول ESP32-WROOM-32 دارای دو مبدل دیجیتال به آنالوگ 8 بیتی است. این DACها برای تبدیل سیگنال دیجیتال به ولتاژ آنالوگ کاربردی هستند.

پینهای لمسی (Touch)
ماژول شامل ده پین با قابلیت لمس خازنی با برچسبهای TOUCH0 تا TOUCH9 است. این پینها با اندازهگیری تغییر ظرفیت کار میکنند وقتی انگشت یا جسم هادی در نزدیکی آنها قرار گیرد.
کاربردها شامل دکمههای لمسی، اسلایدر لمسی یا تشخیص سادهٔ ژست است. همچنین میتوان از آنها برای بیدار کردن ESP32 از حالت deep sleep استفاده کرد که به صرفهجویی در مصرف انرژی کمک میکند.

I2C
ماژول ESP32-WROOM-32 دو رابط باس I2C دارد، اما پین اختصاصی ثابت برای I2C ارائه نمیدهد. به عبارت دیگر، تخصیص پینها انعطافپذیر است و هر GPIO را میتوان به عنوان SDA (خط داده) یا SCL (خط کلاک) پیکربندی کرد.
با این حال، GPIO21 معمولاً به عنوان SDA و GPIO22 به عنوان SCL به عنوان پیشفرض شناخته میشوند تا کار با کدها و کتابخانههای آردوینو سادهتر شود.

SPI
ماژول از سه SPI پشتیبانی میکند: SPI اصلی، HSPI و VSPI. معمولاً HSPI و VSPI برای مصارف عمومی استفاده میشوند، در حالی که یکی از SPIها برای ارتباط با حافظهٔ فلش ماژول بهکار میرود.
مانند I2C، تخصیص پینهای SPI نیز انعطافپذیر است و میتوان از GPIOهای مختلف به عنوان خطهای SPI استفاده کرد.

UART
ماژول ESP32-WROOM-32 سه رابط UART دارد: UART0، UART1 و UART2. این رابطها برای ارتباط سریال با سنسورها، ماژولها یا برای لاگگیری و دیباگینگ کاربرد دارند.

توجه: پینهای UART1 (GPIO9 و GPIO10) برای ارتباط با حافظهٔ SPI فلش ماژول استفاده میشوند، بنابراین معمولاً قابل استفاده نیستند. با این حال، میتوان با استفاده از bit-banging، پروتکل UART را روی GPIOهای دیگر پیادهسازی کرد.
علاوه بر پینهای پایه TX و RX، UARTها از RTS و CTS برای کنترل جریان سختافزاری نیز پشتیبانی میکنند، هرچند استفاده از آنها کمتر رایج است.
PWM
تقریباً همهٔ GPIOها را میتوان برای تولید خروجی PWM پیکربندی کرد.

PWM در ESP32 با رزولوشن بالا قابل پیکربندی است، معمولاً تا 16 بیت، که کنترل دقیقتری را فراهم میکند. فرکانس PWM نیز قابل تنظیم است و از چند هرتز تا چند ده مگاهرتز قابل انتخاب است که برای کاربردهایی از قبیل کنترل موتور تا کمنور کردن LED مناسب است.
پینهای RTC
برخی از GPIOها به زیرسیستم کممصرف RTC متصل شده و به عنوان RTC GPIO شناخته میشوند. این پینها میتوانند برای بیدار کردن ESP32 از حالت deep sleep و برای ارتباط با قطعات وابسته به RTC مورد استفاده قرار گیرند.

پینهای استراپ (Strapping)
پنج پین استراپ روی ESP32 وجود دارد: GPIO0، GPIO2، GPIO5، GPIO12 و GPIO15. وضعیت این پینها هنگام راهاندازی تعیین میکند که ESP32 وارد حالت BOOT (اجرای برنامه از فلش) یا FLASH (آپلود برنامه روی فلش) شود.

اگر به این پینها قطعات جانبی متصل کنید، ممکن است هنگام فلش کردن فریمور جدید با مشکل مواجه شوید، چون آن سختافزار اضافی میتواند مانع از ورود ESP32 به حالت مناسب شود.
پینهای تغذیه
پینهای تغذیه ولتاژ مورد نیاز ماژول را تامین میکنند:
3V3، پین تغذیهٔ اصلی که باید با منبع تغذیهٔ 3.3V پایدار تامین شود.
GND، پین زمین (مرجع مدار).

پین EN (Enable)
پین EN کنترل فعال یا غیرفعال بودن ESP32 را بر عهده دارد. وقتی EN به سطح HIGH کشیده شود، چیپ فعال و عملیاتی است؛ وقتی EN به LOW کشیده شود، چیپ غیرفعال خواهد بود.

سوالات متداول
کدام GPIOها را نمیتوان به عنوان خروجی استفاده کرد؟
پینهای شمارهٔ 4 (GPIO36)، 5 (GPIO39)، 6 (GPIO34) و 7 (GPIO35) فقط به صورت ورودی قابل استفادهاند و نمیتوان آنها را به خروجی تبدیل کرد. همچنین این پینها مقاومتهای pull-up/pull-down داخلی ندارند.
آیا میتوان همزمان از ADC2 و Wi‑Fi استفاده کرد؟
خیر. وقتی Wi‑Fi فعال است، پینهای مربوط به ADC2 قابل استفاده نیستند. در صورت نیاز به Wi‑Fi، بهتر است از کانالهای ADC1 استفاده کنید.
پینهای استراپ چه نقشی دارند و چه نکاتی باید رعایت شود؟
پینهای استراپ GPIO0، GPIO2، GPIO5، GPIO12 و GPIO15 نقش تعیینکنندهای در حالت بوت ایفا میکنند؛ وضعیت آنها تعیین میکند که ماژول وارد حالت اجرای برنامه از فلش یا حالت پروگرام شدن شود. اتصال قطعات جانبی به این پینها میتواند مانع ورود ماژول به حالت درست هنگام راهاندازی یا فلش کردن شود، بنابراین هنگام طراحی PCB یا اتصال سختافزار به این پینها باید احتیاط کرد.











