راهنمای کامل ESP32 Pinout

چیپ ESP32 دارای ۴۸ پایه با عملکردهای متعدد است. تمام پایه‌ها در همه بردهای توسعه در دسترس نیستند و بعضی پایه‌ها برای استفاده توصیه نمی‌شوند.

سوالات زیادی درباره نحوه استفاده از GPIOهای ESP32 وجود دارد. کدام پایه‌ها مناسب هستند؟ کدام پایه‌ها باید اجتناب شوند؟ این راهنمای ساده و قابل فهم، مرجع کاملی برای GPIOهای ESP32 است.

توجه: همه GPIOها در تمامی بردهای توسعه در دسترس نیستند، اما هر 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ورودیخروجیتوضیحات
0pulled upOKPWM هنگام بوت، باید LOW باشد برای فلش کردن
1TXOKخروجی دیباگ هنگام بوت
2OKOKمتصل به LED برد، برای فلش باید floating یا LOW باشد
3OKRXHIGH هنگام بوت
4OKOK
5OKOKPWM هنگام بوت، پایه strap
6xxمتصل به حافظه SPI داخلی
7xxمتصل به حافظه SPI داخلی
8xxمتصل به حافظه SPI داخلی
9xxمتصل به حافظه SPI داخلی
10xxمتصل به حافظه SPI داخلی
11xxمتصل به حافظه SPI داخلی
12OKOKboot fail اگر HIGH، پایه strap
13OKOK
14OKOKPWM هنگام بوت
15OKOKPWM هنگام بوت، پایه strap
16OKOK
17OKOK
18OKOK
19OKOK
21OKOK
22OKOK
23OKOK
25OKOK
26OKOK
27OKOK
32OKOK
33OKOK
34OKورودی فقط
35OKورودی فقط
36OKورودی فقط
39OKورودی فقط

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)
توجه: پین‌های ADC2 زمانی که Wi-Fi فعال است قابل استفاده نیستند. بنابراین اگر در حال استفاده از Wi-Fi هستید و در گرفتن مقدار از یک GPIO مربوط به ADC2 مشکل دارید، می‌توانید به جای آن از یک GPIO مربوط به ADC1 استفاده کنید. این کار معمولاً مشکل شما را حل می‌کند.

کانال‌های 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

SPIMOSIMISOCLKCS
VSPIGPIO23GPIO19GPIO18GPIO5
HSPIGPIO13GPIO12GPIO14GPIO15

UART

۳ UART: UART0، UART1، UART2

ESP32 از حداکثر سه رابط UART پشتیبانی می‌کند: UART0، UART1 و UART2، که بسته به مدل برد ESP32 که استفاده می‌کنید متفاوت است.

  • UART0 معمولاً برای ارتباط با Serial Monitor هنگام بارگذاری برنامه و دیباگ رزرو شده است. با این حال، بعد از بارگذاری کد می‌توانید از آن برای ارتباط با دستگاه‌های دیگر هم استفاده کنید، اگر به Serial Monitor نیاز ندارید.

  • UART1 و UART2: برای ارتباط با دستگاه‌های خارجی در دسترس هستند.

مشابه I2C و SPI، این پایه‌های UART می‌توانند به هر پایه GPIO دلخواه روی ESP32 نگاشت (map) شوند. با این حال، در بیشتر مدل‌های برد، تخصیص پیش‌فرض پایه‌ها وجود دارد

UARTTXRXتوضیحات
UART0GPIO1GPIO3Serial Monitor، قابل تغییر به GPIO دیگر
UART1GPIO10GPIO9باید GPIO دیگر انتخاب شود
UART2GPIO17GPIO16قابل تغییر به 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  میتونین به تسلا شاپ مراجعه کنید.

One thought on “ESP32 Pinout Reference | کدام پایه ها مجاز به استفاده هستند!

  1. مریم گفت:

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

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

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