راهنمای کامل ESP32 Pinout
چیپ ESP32 دارای ۴۸ پایه با عملکردهای متعدد است. تمام پایهها در همه بردهای توسعه در دسترس نیستند و بعضی پایهها برای استفاده توصیه نمیشوند.
سوالات زیادی درباره نحوه استفاده از GPIOهای ESP32 وجود دارد. کدام پایهها مناسب هستند؟ کدام پایهها باید اجتناب شوند؟ این راهنمای ساده و قابل فهم، مرجع کاملی برای GPIOهای ESP32 است.
ESP32 Peripherals
- ۱۸ کانال آنالوگ به دیجیتال (ADC)
- ۳ رابط SPI
- ۳ رابط UART
- ۲ رابط I2C
- ۱۶ کانال PWM
- ۲ مبدل دیجیتال به آنالوگ (DAC)
- ۲ رابط I2S
- ۱۰ GPIO لمسی خازنی

ویژگیهای ADC (مبدل آنالوگ به دیجیتال) و DAC (مبدل دیجیتال به آنالوگ) به پینهای ثابت و مشخص اختصاص داده شدهاند. با این حال، شما میتوانید تعیین کنید که کدام پینها برای UART، I2C، SPI، PWM و غیره استفاده شوند – کافی است آنها را در کد مشخص کنید. این امکان به دلیل قابلیت چندکارکردی (multiplexing) چیپ ESP32 وجود دارد.
اگرچه میتوانید ویژگیهای پینها را از طریق نرمافزار تعریف کنید، اما برخی پینها به صورت پیشفرض اختصاص داده شدهاند، همانطور که در تصویر زیر نشان داده شده است (این مثال برای برد ESP32 DEVKIT V1 DOIT با 36 پین است – مکان پینها ممکن است بسته به سازنده متفاوت باشد).
علاوه بر این، پینهایی وجود دارند که ویژگیهای خاصی دارند و ممکن است برای پروژه خاصی مناسب یا نامناسب باشند. جدول زیر نشان میدهد کدام پینها برای ورودی و خروجی مناسب هستند و کدام پینها باید با احتیاط استفاده شوند.
پینهایی که با رنگ سبز مشخص شدهاند، قابل استفاده هستند. پینهایی که با رنگ زرد مشخص شدهاند، قابل استفاده هستند اما باید دقت کنید زیرا ممکن است در هنگام بوت رفتار غیرمنتظره داشته باشند. پینهایی که با رنگ قرمز مشخص شدهاند، توصیه نمیشود برای ورودی یا خروجی استفاده شوند.
جدول پایهها و توصیهها
| GPIO | ورودی | خروجی | توضیحات |
|---|---|---|---|
| 0 | pulled up | OK | PWM هنگام بوت، باید LOW باشد برای فلش کردن |
| 1 | TX | OK | خروجی دیباگ هنگام بوت |
| 2 | OK | OK | متصل به LED برد، برای فلش باید floating یا LOW باشد |
| 3 | OK | RX | HIGH هنگام بوت |
| 4 | OK | OK | – |
| 5 | OK | OK | PWM هنگام بوت، پایه strap |
| 6 | x | x | متصل به حافظه SPI داخلی |
| 7 | x | x | متصل به حافظه SPI داخلی |
| 8 | x | x | متصل به حافظه SPI داخلی |
| 9 | x | x | متصل به حافظه SPI داخلی |
| 10 | x | x | متصل به حافظه SPI داخلی |
| 11 | x | x | متصل به حافظه SPI داخلی |
| 12 | OK | OK | boot fail اگر HIGH، پایه strap |
| 13 | OK | OK | – |
| 14 | OK | OK | PWM هنگام بوت |
| 15 | OK | OK | PWM هنگام بوت، پایه strap |
| 16 | OK | OK | – |
| 17 | OK | OK | – |
| 18 | OK | OK | – |
| 19 | OK | OK | – |
| 21 | OK | OK | – |
| 22 | OK | OK | – |
| 23 | OK | OK | – |
| 25 | OK | OK | – |
| 26 | OK | OK | – |
| 27 | OK | OK | – |
| 32 | OK | OK | – |
| 33 | OK | OK | – |
| 34 | OK | – | ورودی فقط |
| 35 | OK | – | ورودی فقط |
| 36 | OK | – | ورودی فقط |
| 39 | OK | – | ورودی فقط |
GPIOهای ورودی فقط
GPIO 34 تا 39 ورودی هستند و pull-up یا pull-down داخلی ندارند. بنابراین فقط به عنوان ورودی استفاده شوند.
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 39
پایههای SPI Flash داخلی ESP-WROOM-32
GPIO 6 تا 11 به حافظه SPI داخلی متصل هستند و نباید برای دیگر کارها استفاده شوند.
- GPIO 6 (SCK/CLK)
- GPIO 7 (SDO/SD0)
- GPIO 8 (SDI/SD1)
- GPIO 9 (SHD/SD2)
- GPIO 10 (SWP/SD3)
- GPIO 11 (CSC/CMD)
GPIOهای لمسی خازنی
ESP32 دارای ۱۰ سنسور لمسی داخلی است که میتوانند لمس با انگشت را تشخیص دهند و جایگزین دکمههای مکانیکی شوند.
- T0 (GPIO 4)
- T1 (GPIO 0)
- T2 (GPIO 2)
- T3 (GPIO 15)
- T4 (GPIO 13)
- T5 (GPIO 12)
- T6 (GPIO 14)
- T7 (GPIO 27)
- T8 (GPIO 33)
- T9 (GPIO 32)
کانالهای ADC و DAC
۱۸ کانال ADC دوازده بیتی
- ADC1_CH0 (GPIO 36)
- ADC1_CH1 (GPIO 37)
- ADC1_CH2 (GPIO 38)
- ADC1_CH3 (GPIO 39)
- ADC1_CH4 (GPIO 32)
- ADC1_CH5 (GPIO 33)
- ADC1_CH6 (GPIO 34)
- ADC1_CH7 (GPIO 35)
- ADC2_CH0 (GPIO 4)
- ADC2_CH1 (GPIO 0)
- ADC2_CH2 (GPIO 2)
- ADC2_CH3 (GPIO 15)
- ADC2_CH4 (GPIO 13)
- ADC2_CH5 (GPIO 12)
- ADC2_CH6 (GPIO 14)
- ADC2_CH7 (GPIO 27)
- ADC2_CH8 (GPIO 25)
- ADC2_CH9 (GPIO 26)
کانالهای DAC
۲ کانال هشت بیتی DAC
- DAC1 (GPIO25)
- DAC2 (GPIO26)
GPIOهای RTC
در ESP32، پشتیبانی از GPIOهای RTC وجود دارد. این GPIOها که به زیرسیستم کممصرف RTC متصل هستند، میتوانند زمانی که ESP32 در حالت خواب عمیق (Deep Sleep) قرار دارد، استفاده شوند. این GPIOهای RTC میتوانند برای بیدار کردن ESP32 از حالت خواب عمیق زمانی که پردازنده Ultra Low Power (ULP) در حال اجرا است، به کار گرفته شوند. GPIOهای زیر میتوانند به عنوان منبع بیدارکننده خارجی استفاده شوند.
- RTC_GPIO0 (GPIO36)
- RTC_GPIO3 (GPIO39)
- RTC_GPIO4 (GPIO34)
- RTC_GPIO5 (GPIO35)
- RTC_GPIO6 (GPIO25)
- RTC_GPIO7 (GPIO26)
- RTC_GPIO8 (GPIO33)
- RTC_GPIO9 (GPIO32)
- RTC_GPIO10 (GPIO4)
- RTC_GPIO11 (GPIO0)
- RTC_GPIO12 (GPIO2)
- RTC_GPIO13 (GPIO15)
- RTC_GPIO14 (GPIO13)
- RTC_GPIO15 (GPIO12)
- RTC_GPIO16 (GPIO14)
- RTC_GPIO17 (GPIO27)
PWM
تمام پایههایی که خروجی هستند میتوانند PWM تولید کنند (GPIO34 تا 39 نمیتوانند).
برای تنظیم یک سیگنال PWM، شما باید پارامترهای زیر را در کد تعریف کنید:
- Signal’s frequency
- Duty cycle
- PWM channel
- GPIO where you want to output the signal
I2C
دو کانال I2C و هر پایه میتواند SDA یا SCL باشد. پیشفرض Arduino IDE:
- SDA: GPIO21
- SCL: GPIO22
اگر میخواهید هنگام استفاده از کتابخانه Wire از پینهای دیگری استفاده کنید، کافی است فراخوانی کنید:
Wire.begin(SDA, SCL);SPI
| SPI | MOSI | MISO | CLK | CS |
|---|---|---|---|---|
| VSPI | GPIO23 | GPIO19 | GPIO18 | GPIO5 |
| HSPI | GPIO13 | GPIO12 | GPIO14 | GPIO15 |
UART
۳ UART: UART0، UART1، UART2
ESP32 از حداکثر سه رابط UART پشتیبانی میکند: UART0، UART1 و UART2، که بسته به مدل برد ESP32 که استفاده میکنید متفاوت است.
UART0 معمولاً برای ارتباط با Serial Monitor هنگام بارگذاری برنامه و دیباگ رزرو شده است. با این حال، بعد از بارگذاری کد میتوانید از آن برای ارتباط با دستگاههای دیگر هم استفاده کنید، اگر به Serial Monitor نیاز ندارید.
UART1 و UART2: برای ارتباط با دستگاههای خارجی در دسترس هستند.
مشابه I2C و SPI، این پایههای UART میتوانند به هر پایه GPIO دلخواه روی ESP32 نگاشت (map) شوند. با این حال، در بیشتر مدلهای برد، تخصیص پیشفرض پایهها وجود دارد
| UART | TX | RX | توضیحات |
|---|---|---|---|
| UART0 | GPIO1 | GPIO3 | Serial Monitor، قابل تغییر به GPIO دیگر |
| UART1 | GPIO10 | GPIO9 | باید GPIO دیگر انتخاب شود |
| UART2 | GPIO17 | GPIO16 | قابل تغییر به GPIO دیگر |
درباره UART1 (GPIO 9 و GPIO 10) – این پایهها به حافظه SPI فلش داخلی ESP32 متصل هستند، بنابراین نمیتوانید مستقیماً از آنها استفاده کنید. برای استفاده از UART1 جهت ارتباط با دستگاههای دیگر، باید پایههای متفاوتی را با استفاده از کتابخانه HardwareSerial تعریف کنید.
پایه Interrupts
تمام پایههای GPIO میتوانند بهعنوان Interrupt یا وقفه تنظیم شوند.
Strapping Pins
پایه های ESP32 که به عنوان Strapping Pins استفاده می شوند.
- GPIO 0 (must be LOW to enter boot mode)
- GPIO 2 (must be floating or LOW during boot)
- GPIO 4
- GPIO 5 (must be HIGH during boot)
- GPIO 12 (must be LOW during boot)
- GPIO 15 (must be HIGH during boot)
این پایهها برای قرار دادن ESP32 در حالت Bootloader یا Flashing استفاده میشوند. در اکثر بردهای توسعه با USB/Serial داخلی، نیازی نیست نگران وضعیت این پایهها باشید، زیرا برد بهطور خودکار پایهها را برای حالت فلش یا بوت تنظیم میکند.
با این حال، اگر دستگاهها یا ماژولهایی به این پایهها متصل باشند، ممکن است هنگام آپلود کد جدید، فلش کردن ESP32 یا ریست کردن برد با مشکل مواجه شوید. دلیل آن این است که آن دستگاهها مانع ورود ESP32 به حالت صحیح میشوند. مستندات Boot Mode Selection را مطالعه کنید تا در مسیر درست قرار بگیرید. پس از ریست، فلش یا بوت، این پایهها به حالت عادی خود باز میگردند و طبق انتظار عمل میکنند.
High at Boot
برخی از پایههای GPIO در زمان بوت یا ریست به حالت HIGH تغییر میکنند یا سیگنالهای PWM تولید میکنند. این یعنی اگر خروجیهایی به این پایهها متصل کرده باشید، ممکن است هنگام ریست یا بوت ESP32 نتایج غیرمنتظرهای دریافت کنید.
- GPIO 1
- GPIO 3
- GPIO 5
- GPIO 6 to GPIO 11 (connected to the ESP32 integrated SPI flash memory – not recommended to use).
- GPIO 14
- GPIO 15
پایه EN و جریان GPIO
پین Enable (EN)، پین فعالسازی رگولاتور ۳.۳ ولت است. این پین به صورت Pull-up است، بنابراین برای غیرفعال کردن رگولاتور ۳.۳ ولت باید آن را به زمین متصل کنید. این یعنی میتوانید این پین را به یک دکمه فشاری (Pushbutton) وصل کرده و با آن ESP32 خود را دوباره راهاندازی کنید.
GPIO current drawn
حداکثر جریان مجاز کشیده شده از هر GPIO طبق بخش «شرایط عملیاتی توصیهشده» در دیتاشیت ESP32 برابر ۴۰ میلیآمپر است.
سنسور Hall داخلی
ESP32 همچنین دارای یک سنسور اثر هال داخلی است که تغییرات میدان مغناطیسی اطراف آن را تشخیص میدهد.
جمعبندی
این راهنمای کامل ESP32 Pinout مرجع کاملی برای GPIOها، ADC، DAC، I2C، SPI، UART، PWM، Touch و RTC است. نظرات و تجربیات خود را با ما به اشتراک بگذارید. همچنین برای خرید انواع ESP میتونین به تسلا شاپ مراجعه کنید.








ممنون از توضیحات مفیدتون.