آموزش جامع انواع پایه های میکروکنترلر ESP32: از کدام پایه های ESP32 استفاده کنیم؟

فهرست مطالب

مقدمه

ویژگی‌ها و قابلیت‌های جذاب ESP32، این میکروکنترلر را به گزینه بسیار مناسبی برای انجام انواع پروژه‌ها و کاربردهای مربوط به اینترنت اشیا (Internet of Thing یا به اختصار IoT) تبدیل کرده است. برای استفاده بهینه از این ویژگی‌ها و توانایی‌های ESP32، شناخت کافی از پایه های آن الزامی‌ست. هدف در این آموزش، معرفی انواع پایه های موجود در این میکروکنترلر و ویژگی‌های مربوط به هر کدام از آن پایه هاست. پس تا انتهای آموزش با ما باشید!

آنچه در این آموزش یاد می گیرید

  • انواع پایه های ESP32 و ویژگی‌های آن‌ها

معرفی کامل پایه ها (Pinout) میکروکنترلر ESP32 (ESP-WROOM-32)

انواع مختلفی از میکروکنترلرهای ESP32 تولید شده و در بازار موجود است. میکروکنترلری که در این آموزش به بررسی و توضیح پایه های آن پرداخته‌ایم، میکروکنترلر ESP32-WROOM-32 است که به اختصار آن را WROOM32 نیز می‌نامند. این میکروکنترلر از معروف‌ترین و پر استفاده‌ترین میکروکنترلرهای سری ESP32 بوده و در بسیاری از بردهای توسعه مبتنی بر ESP32 استفاده شده است. از جمله این بردهای توسعه می‌توان به ماژول ESP32 Wemos Lolin32 و ESP32-CoreBoard اشاره کرد. همچنین در صورتی که از برد توسعه‌ای مبتنی بر میکروکنترلرهای ESP32 غیر از WROOM32 استفاده می‌کنید نیز این آموزش می‌تواند مفید باشد، چرا که انواع دیگر میکروکنترلرهای ESP32 نیز پایه‌ های بسیار مشابه و با کاربرد یکسان با WROOM32 دارند.

در عکس زیر می‌توانید انواع پایه های میکروکنترلر ESP32-WROOM-32، شماره پایه و کاربردهای آن را مشاهده کنید.

در ادامه به شرح جزئی‌تر پایه های این میکروکنترلر می‌پردازیم.

پایه های ESP32 به تفکیک

میکروکنترلر ESP32 در یک نگاه اجمالی دارای پایه های زیر است:

  • 18 پایه مبدل آنالوگ به دیجیتال (ADC) 12 بیتی
  • 2 پایه مبدل دیجیتال به آنالوگ (DAC) 8 بیتی
  • 3 رابط SPI
  • 2 رابط I2C
  • 3 رابط UART
  • 16 پایه PWM
  • 2 رابط I2S
  • 10 پایه حسگر لمسی

انواع پایه های ESP32 به شرح زیر است.

پایه های همه‌جانبه ورودی خروجی (GPIOs)

میکروکنترلر ESP32 دارای پایه های همه‌جانبه ورودی خروجی زیر است.

پایه های ADC

در مجموع 18 پایه مبدل آنالوگ به دیجیتال (ADC) 12 بیتی در میکروکنترلر ESP32 وجود دارد. 12 بیتی بودن این مبدل‌ها به این معناست که می‌توانند ولتاژ ورودی را به عددی بین 0 تا 4095 تبدیل کنند. 0 برای ورودی 0 ولت و 4095 برای ورودی 3.3 ولت.

این 18 پایه 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 با عملکرد Wifi تداخل دارند و در صورت راه‌اندازی Wifi ماژول ESP32 بهتر است در صورت نیاز به مبدل آنالوگ به دیجیتال، از پایه‌ ADC1 استفاده کنید.

پایه های DAC

میکروکنترلر ESP32 دارای 2 پایه مبدل دیجیتال به آنالوگ (DAC) 8 بیتی است. رزولوشن 8 بیتی مبدل‌ها نشان می‌دهد که می‌توانند در خروجی، ولتاژی بین 0 تا 3.3 ولت با دقت 3.3/255 ولت تولید کنند.

این 2 پایه DAC به شرح زیر است.

  • DAC1 (GPIO 25)
  • DAC2 (GPIO 26)

پایه های لمسی خازنی

همانطور که پیشتر اشاره شد، میکروکنترلر ESP32 دارای 10 پایه است که می‌توانند به صورت یک حسگر لمسی عمل کنند. همچنین کاربرد دیگر این پایه‌ ها خارج کردن میکرو از حالت خواب عمیق است. برای اطلاع از حالت خواب عمیق میکروکنترلر ESP، می‌توانید به لینک زیر مراجعه کنید.

لینک آموزش حالت خواب عمیق ESP32

10 پایه لمسی میکروکنترلر 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)

پایه های ساعت (RTC)

میکروکنترلر ESP32 در مجموع دارای 16 پایه RTC است که این پایه ها عمدتا در حالت خواب عمیق میکروکنترلر استفاده می‌شوند. همچنین این پایه ها در بیدار کردن میکروکنترلر از خواب عمیق نیز کاربرد دارند.

پایه های ساعت (RTC) ESP32 به شرح زیر است.

  • RTC_GPIO0 (GPIO 36)
  • RTC_GPIO3 (GPIO 39)
  • RTC_GPIO4 (GPIO 34)
  • RTC_GPIO5 (GPIO 35)
  • RTC_GPIO6 (GPIO 25)
  • RTC_GPIO7 (GPIO 26)
  • RTC_GPIO8 (GPIO 33)
  • RTC_GPIO9 (GPIO 32)
  • RTC_GPIO10 (GPIO 4)
  • RTC_GPIO11 (GPIO 0)
  • RTC_GPIO12 (GPIO 2)
  • RTC_GPIO13 (GPIO 15)
  • RTC_GPIO14 (GPIO 13)
  • RTC_GPIO15 (GPIO 12)
  • RTC_GPIO16 (GPIO 14)
  • RTC_GPIO17 (GPIO 27)

پایه های SPI

میکروکنترلر ESP-WROOM-32 دارای 3 رابط پیش‌فرض SPI است. یکی از این 3 رابط، برای ارتباط SPI حافظه فلش میکروکنترلر تعبیه شده است و استفاده از آن توصیه نمی‌شود. پایه های این رابط به شرح زیر است.

  • SCK/CLK (GPIO 6)
  • SDO/SD0 (GPIO 7)
  • SDI/SD1 (GPIO 8)
  • SHD/SD2 (GPIO 9)
  • SWP/SD3 (GPIO 10)
  • CSC/CMD (GPIO 11)

همانطور که گفته شد، میکروکنترلر ESP32 دارای 3 رابط SPI است و بجز یکی از آن‌ها که در بالا به آن اشاره شد و برای ارتباط با حافظه فلش استفاده می‌شود، می‌توان از 2 رابط Spi دیگر استفاده کرد. این دو رابط Spi با عنوان‌های HSpi (Hardware SPI) و دیگری VSPI (Virtual SPI) شناخته می‌شوند. پایه های مربوط به این دو رابط را می‌توانید در جدول زیر مشاهده کنید.

CS CLK MOSI MISO SPI
GPIO 15 GPIO 14 GPIO 13 GPIO 12 HSPI
GPIO 5 GPIO 18 GPIO 23 GPIO 19 VSPI
نکته

دقت کنید که محدود به استفاده از دو رابط معرفی شده در بالا نیستید و در صورت نیاز می‌توانید هر پایه دیگر esp32 را نیز به عنوان SPI تعریف کنید.

پایه های I2C

میکروکنترلر ESP32 دارای دو کانال داخلی I2C است و همچنین یک جفت پایه پیش‌فرض برای پروتکل ارتباطی I2C دارد. همچون SPI، در صورت نیاز می‌توانید هر کدام از پایه های دیگر میکروکنترلر را نیز به عنوان I2C تعریف کنید.

پایه های I2C پیش‌فرض ESP32 به شرح زیر است.

  • SDA (GPIO 21)
  • SCL (GPIO 22)

پایه های ارتباط سریال (UART)

در این میکروکنترلر، 3 رابط سریال به صورت پیش‌فرض وجود دارد و مابقی پایه ها را نیز می‌توان در کد به عنوان سریال تعریف کرد.

پایه های مربوط به این دو رابط را می‌توانید در جدول زیر مشاهده کنید.

CST RTS TXD RXD UART
GPIO 19 GPIO 22 GPIO 3 GPIO 1 UART0
GPIO 6 GPIO 11 GPIO 10 GPIO 9 UART1
GPIO 8 GPIO 7 GPIO 17 GPIO 16 UART2

پایه های PWM

ESP32 یک کنترلر تولید کننده PWM دارد که می‌توان به کمک آن در 16 کانال متفاوت سیگنال PWM تولید و هر کدام را به طور مستقل کنترل کرد.

برای تولید موج PWM، لازم است که ابتدا مقادیر

  • فرکانس سیگنال
  • پهنای پالس
  • کانال PWM

را تنظیم کنید.

در ادامه این سیگنال PWM را می‌توانید به عنوان خروجی هر پایه دلخواه ESP32 که توانایی تنظیم به عنوان خروجی دارد، قرار دهید. (پایه‌‌ های GPIO 34-39 نمی‌توانند به عنوان خروجی تنظیم شوند، در نتیجه نمی‌توان از آن‌ها برای تولید سیگنال PWM استفاده کرد.)

پایه های وقفه (Interrupt)

می‌توانید از تمام پایه های GPIO به عنوان وقفه استفاده کنید.

پایه های تغذیه

پایه های مربوط به تغذیه در برد ESP32 به شرح زیر است.

پایه‌ 3.3 ولت

پایه شماره 2 میکروکنترلر ESP32 همانطور که در عکس مشخص است، پایه اصلی تغذیه آن است. از آن جایی سطح منطقی که این میکروکنترلر در آن کار می‌کند، 3.3 ولت است، لازم است که یک ولتاژ دقیق در همین حدود برای تغذیه آن استفاده شود تا احتمال آسیب رسیدن به قطعه را کم کند.

پایه های GND

پایه های شماره 1، 15 و 38، پایه‌ های زمین میکروکنترلر ESP32 محسوب می‌شوند. هنگام تغذیه میکروکنترلر، لازم است که هر سه به پایه زمین منبع تغذیه خارجی متصل شوند.

پایه EN

پایه شماره 3، پایه فعال‌سازی ماژول است. این پایه اصطلاحا Active High بوده و برای فعال کردن میکروکنترلر لازم است که به ولتاژ 3.3 ولت وصل شود.

یک گام جلوتر

  • در ادامه پایه های حسگر لمسی ESP32 را راه‌اندازی کرده و یک LED را با آن کنترل کنید.

آموزش های مشابه

Comments (8)

  • سعید Reply

    سلام قسمت UART0 شماره پین های RX و TX جابه جا گذاشتین

    ژوئن 23, 2023 at 1:18 ب.ظ
    • محمد دمیرچی Reply

      با سلام
      ممنون از اطلاع رسانی شما دوست عزیز.
      اصلاح می شود

      ژوئن 24, 2023 at 10:07 ق.ظ
  • میلاد Reply

    سلام و عرض ادب
    چرا قسمت PWM رو کامل توضیح ندادید؟
    من میخوام الان بدونم کدوم پایه های esp32 قابلیت PWM دارند ؟
    این قسمت رو خوب توضبح ندادید

    آگوست 10, 2023 at 5:04 ب.ظ
    • محمد دمیرچی Reply

      با سلام
      تمام پایه های ESP می توانند به صورت PWM کار کنند. فقط چند پین خاص که فقط می توانند به عنوان ورودی کار کنند نمی توانند به عنوان PWM عمل کنند

      آگوست 13, 2023 at 1:24 ب.ظ
  • میلاد بهرام Reply

    سلام کیفیت آموزش تون خیلی بالا بود ولی حیف که ناقص هست و نتونستم استفاده کنم ، لطفا توضیحات مربوط به PWM رو کامل کنید چون لازم دارم بدونم که از کدوم پایه هاش به راحتی میشه برای تنظیم خروجی PWM استفاده کرد؟! من 4 تاشون رو نیاز دارم

    اکتبر 25, 2023 at 11:19 ق.ظ
    • محمد دمیرچی Reply

      با سلام
      در توضیحات آماده است تمامی پایه ها را می توانید به عنوان خروجی تنظیم کنید به جز پایه‌‌ های GPIO 34-39 نمی‌توانند به عنوان خروجی تنظیم کرد.
      ممنون از اطلاع رسانی شما.
      حتما عکس مربوط به این موضوع را نیز اضافه خواهیم کرد.

      اکتبر 28, 2023 at 9:23 ق.ظ
  • سید محمد حسین Reply

    سلام و عرض خسته نباشید
    در میکرو کنترلر esp32wrom32d
    از کدام پایه ها میتوان هم به عنوان ورودی استفاده کرد هم به عنوان خروجی
    چون دیتاشیت خیلی از پایه ها رو به عنوان ورودی خروجی معرفی کرده ولی نمیشه از همشون استفاده روش تشخصیش چطور هست؟

    مارس 25, 2024 at 6:26 ق.ظ
    • محمد دمیرچی Reply

      با سلام
      در میکرو های ESP32 برعکس میکرو های ATMega که هر پایه برای کار خاصی ساخته شده است. همه پایه ها را می توان برای هر کاری تخصیص داد.
      فقط چند نکته می باشد که باید در نظر داشته باشید. پایه های 36و39و34و35 فقط ورودی می توانند باشند. پایه های 6,7,8,9,10,11 هم به حافظه داخلی میکرو وصل شده اند و نمیتوانید از این پایه ها استفاده کنید.
      مورد دیگر نیز این می باشد که بعضی از پایه ها را در زمان روشن شدن نباید در حالت های خاصی قرار بگیرند وگرنه میکرو روشن نمی شود. که به اسم 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)

      مارس 25, 2024 at 9:59 ق.ظ

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

نشانی ایمیل شما منتشر نخواهد شد.