آموزش ESP32آموزش اینترنت اشیا

معرفی کامل برد ESP32 S3 DevKitC + امکانات

برد توسعه ESP32‑S3 DevKitC برای پاسخ‌گویی به نیازهای پردازشی حجیم در کاربردهای AIoT ساخته شده است. پردازنده مرکزی آن یک میکروپروسسور دو هسته‌ای Xtensa 32‑بیتی LX7 است که تا 240 MHz کار می‌کند و دستورالعمل‌های برداری ویژه‌ای برای تسریع وظایف یادگیری ماشینی و پردازش سیگنال پیشرفته دارد.

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

پین اوت ESP32‑S3 DevKitC

DevKitC برای نمونه‌سازی بسیار مناسب طراحی شده و در دو طرفش دو ردیف 22 پینی دارد که جمعاً 44 نقطه اتصال اصلی را فراهم می‌کنند. فاصله پایه‌ها استاندارد 2.54 mm است، بنابراین برد به‌راحتی روی برد بورد استاندارد قرار می‌گیرد یا با هدرهای معمولی روی برد مدار چاپی جای می‌گیرد.

دوره آموزش ESP32 دوره آموزش اینترنت اشیا حرفه ای دوره آموزش اینترنت اشیا مقدماتی دوره آموزش آردوینو

نقشه پین‌ها در تصویر زیر نمایش داده شده است:

نقشه پیناوت ESP32‑S3 DevKitC نمایش کلی پینها

در ادامه پین‌ها و عملکرد هر یک را بررسی می‌کنیم و از GPIOها شروع می‌کنیم.

GPIO ها

روی هدرهای ESP32‑S3 DevKitC، مجموعاً 36 پین GPIO در دسترس هستند: GPIO0 تا GPIO21 و همچنین GPIO35 تا GPIO48.

نمای نزدیک هدرها و شمارهگذاری GPIO روی برد DevKitC

قانون مهم و حیاتی این است که ESP32‑S3 با منطق 3.3V کار می‌کند. بنابراین هرگز نباید پین‌های GPIO را به منبع 5V متصل کنید؛ این کار ممکن است برد را به‌طور دائمی آسیب بزند.

The GPIO Matrix و IO MUX

یکی از قابلیت‌های قدرتمند ESP32‑S3 وجود GPIO Matrix است؛ مانند یک سامانه داخلی مسیردهی که اجازه می‌دهد تقریباً هر تابع دیجیتال مانند PWM، I2C، SPI، UART، I2S یا TWAI را با تغییر نرم‌افزاری به تقریباً هر پین فیزیکی اختصاص دهید.

این انعطاف‌پذیری یک محدودیت کوچک دارد: سیگنال‌ها از طریق GPIO Matrix عبور می‌کنند که مقداری تأخیر وارد می‌کند. برای اغلب پروژه‌ها این تأخیر قابل چشم‌پوشی است، اما در سیگنال‌های بسیار سریع یا اندازه‌گیری‌های آنالوگ حساس می‌تواند مشکل‌ساز شود.

برای این وضعیت‌ها، ESP32‑S3 مسیر GPIO Matrix را دور می‌زند و از IO MUX استفاده می‌کند.

IO MUX بعضی پین‌های فیزیکی را مستقیماً به سخت‌افزار اختصاصی داخل چیپ وصل می‌کند. بعضی از این اتصالات ثابت و قابل جابجایی نیستند، در حالی که برخی اتصالات دارای تخصیص پیش‌فرض هستند اما می‌توان آنها را از طریق GPIO Matrix منتقل کرد. توابعی که به‌صورت کامل به IO MUX وابسته‌اند شامل کانال‌های ADC، رابط JTAG داخلی، کنترلر USB Serial/JTAG و اتصالات سرعت‌بالای SPI برای حافظه داخلی هستند.

به طور خلاصه، سیگنال‌های پیرامونی (peripheral) در ESP32‑S3 را می‌توان این‌گونه گروه‌بندی کرد:

نوع مسیردهی نمونه‌هایی از پیرامون معنی
ثابت به پین‌های مشخص از طریق IO MUX ADC1, ADC2, Touch این توابع باید از پین‌های تعیین‌شده استفاده کنند و قابل جابجایی در نرم‌افزار نیستند.
متصل به پین‌های پیش‌فرض IO MUX، ولی قابل هدایت دوباره از طریق GPIO Matrix UART0, UART1, SPI2 این توابع محل‌های استانداردی دارند، اما در صورت نیاز می‌توان آنها را به GPIOهای دیگر منتقل کرد.
به‌صورت پیش‌فرض به پین ثابت اختصاص نیافته و از طریق GPIO Matrix مسیردهی می‌شوند UART2, SPI3, I2C, I2S, TWAI, LED PWM, LCD and Camera, SD/MMC, MCPWM این توابع انعطاف‌پذیرند و می‌توانند در نرم‌افزار به پین‌های مختلف اختصاص یابند.

کدام GPIO ها امن‌ترند و کدام‌ها احتیاط می‌خواهند؟

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

  • ایمن – اولویت بالا؛ کاملاً امن برای استفاده.
  • با احتیاط – رفتارشان، به‌ویژه هنگام بوت، ممکن است غیرقابل‌پیش‌بینی باشد؛ مراقب باشید.
GPIO وضعیت نوع یادداشت‌ها
GPIO0 با احتیاط Strapping Pin تعیین‌کننده حالت بوت اصلی (HIGH برای بوت عادی، LOW وارد Download Mode می‌شود); وضعیت پیش‌فرض: HIGH (Pull-up)
GPIO1 ایمن
GPIO2 ایمن
GPIO3 با احتیاط Strapping Pin انتخاب‌کننده منبع سیگنال JTAG; وضعیت پیش‌فرض: Floating
GPIO4 ایمن
GPIO5 ایمن
GPIO6 ایمن
GPIO7 ایمن
GPIO8 ایمن
GPIO9 ایمن
GPIO10 ایمن
GPIO11 ایمن
GPIO12 ایمن
GPIO13 ایمن
GPIO14 ایمن
GPIO15 ایمن
GPIO16 ایمن
GPIO17 ایمن
GPIO18 ایمن
GPIO19 با احتیاط USB به‌صورت دائم به سیگنال تفاضلی USB سرعت‌بالا D- متصل است
GPIO20 با احتیاط USB به‌صورت دائم به سیگنال تفاضلی USB سرعت‌بالا D+ متصل است
GPIO21 ایمن
GPIO35 با احتیاط PSRAM برای Octal Flash یا Octal PSRAM در بردهای مجهز به حافظه Octal رزرو شده است
GPIO36 با احتیاط PSRAM برای Octal Flash یا Octal PSRAM در بردهای مجهز به حافظه Octal رزرو شده است
GPIO37 با احتیاط PSRAM برای Octal Flash یا Octal PSRAM در بردهای مجهز به حافظه Octal رزرو شده است
GPIO38 ایمن
GPIO39 با احتیاط JTAG JTAG TCK برای دیباگ
GPIO40 با احتیاط JTAG JTAG TDO برای دیباگ
GPIO41 با احتیاط JTAG JTAG TDI برای دیباگ
GPIO42 با احتیاط JTAG JTAG TMS برای دیباگ
GPIO43 با احتیاط UART‑TX به‌عنوان UART0 TX (کنسول/bootloader) استفاده می‌شود؛ تغییر آن ممکن است خروجی کنسول را غیر فعال کند
GPIO44 با احتیاط UART‑RX به‌عنوان UART0 RX (کنسول/bootloader) استفاده می‌شود؛ تغییر آن ممکن است برنامه‌ریزی سریال و لاگ دیباگ را از کار بیندازد
GPIO45 با احتیاط Strapping Pin تعیین‌کننده ولتاژ VDD_SPI برای حافظه خارجی. LOW باعث 3.3V و HIGH باعث 1.8V می‌شود. وضعیت پیش‌فرض: LOW (Pull‑down)
GPIO46 با احتیاط Strapping Pin کنترل چاپ پیام‌های دیباگ ROM هنگام بوت. اگر HIGH شود، پیام‌های تشخیصی روی کنسول اولیه چاپ می‌شوند. وضعیت پیش‌فرض: LOW (Pull‑down)
GPIO47 ایمن
GPIO48 ایمن

تصویر زیر نشان می‌دهد کدام GPIOها به‌صورت ایمن قابل استفاده‌اند:

نمودار نشاندهنده GPIO های ایمن و خطرناک روی برد

پین‌ های وقفه (Interrupt Pins)

برخلاف میکروکنترلرهایی که پین وقفه اختصاصی دارند، ESP32‑S3 از یک Interrupt Matrix پیشرفته استفاده می‌کند که اجازه می‌دهد هر پین GPIO عملکردی به‌عنوان منبع وقفه خارجی پیکربندی شود.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

ESP32‑S3 چهار حالت تریگر مختلف را پشتیبانی می‌کند که تعیین می‌کنند چه زمانی وقفه رخ دهد:

حالت شرط تریگر موارد معمول استفاده
RISING تغییر پین از LOW به HIGH تشخیص فشردن کلید (pull‑down)
FALLING تغییر پین از HIGH به LOW تشخیص فشردن کلید (pull‑up)
CHANGE تغییر وضعیت پین (هر دو جهت) خواندن انکودر، شمارش پالس
LOW پین در سطح LOW باقی می‌ماند رویدادهای تریگر سطحی

RTC GPIO ها

برخی GPIOها به واحد RTC (real‑time clock) و سیستم کم‌مصرف متصل هستند و به آنها RTC GPIO گفته می‌شود. در ESP32‑S3 DevKitC این پین‌ها عبارتند از GPIO0 تا GPIO21.

نقشه پینهای متصل به مدار RTC در ESP32‑S3 DevKitC

این پین‌ها هنگام قرارگیری چیپ در مد خواب عمیق (deep sleep) اهمیت دارند؛ آنها می‌توانند با رویداد خارجی مانند فشردن دکمه، تشخیص حرکت توسط سنسور PIR یا اعلان از شتاب‌سنج، چیپ را از خواب بیدار کنند.

Strapping Pins (پین‌های استرپینگ)

Strapping pins مجموعه‌ای از GPIOهای حساس هستند که رفتار میکروکنترلر را در لحظه بوت تعیین می‌کنند. در میلی‌ثانیه‌های ابتدایی بوت یا ری‌ست، چیپ ولتاژ این پین‌ها را می‌خواند و بر اساس آن تصمیماتی درباره وضعیت بوت، فعال‌سازی دیباگ و ولتاژ حافظه می‌گیرد.

چهار پین استرپینگ مهم در ESP32‑S3 عبارتند از GPIO0، GPIO3، GPIO45 و GPIO46.

پینهای استرپینگ (GPIO0, GPIO3, GPIO45, GPIO46) روی برد
شماره پین وضعیت داخلی پیش‌فرض عملکرد اصلی در دنباله بوت
GPIO0 Pull‑up (HIGH) تعیین حالت بوت اصلی. اگر HIGH بماند، چیپ به‌صورت عادی از حافظه بوت می‌کند. اگر در زمان ری‌ست LOW شود، وارد Download Mode می‌شود و امکان فلش از طریق USB یا UART را فراهم می‌کند.
GPIO3 Floating انتخاب پیکربندی منبع سیگنال JTAG برای دیباگ پیشرفته.
GPIO45 Pull‑down (LOW) تنظیم ولتاژ حافظه خارجی. LOW باعث 3.3V و HIGH باعث 1.8V می‌شود.
GPIO46 Pull‑down (LOW) کنترل چاپ پیام‌های تشخیصی در زمان بوت. اگر HIGH شود، پیام‌های دیباگ روی کنسول اولیه چاپ می‌شوند.

هر یک از این پین‌ها دارای مقاومت کششی (pull‑up یا pull‑down) ضعیف داخلی است که حالت پیش‌فرض پین را تعیین می‌کند. بنابراین در وضعیت عادی نیازی به انجام کاری ندارید چون برد آنها را برای استفاده معمولی پیکربندی کرده است.

هشدار:

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

مثال: اگر سرویسی باعث شود GPIO0 هنگام روشن شدن برد در حالت LOW بماند، ESP32‑S3 وارد Download Mode شده و کد شما اجرا نخواهد شد.

مشکل جدی‌تر: اگر ماژولی GPIO45 را در زمان بوت HIGH کند، چیپ ولتاژ رگولاتور حافظه را روی 1.8V تنظیم خواهد کرد؛ در صورتی که فلش برد برای 3.3V طراحی شده باشد، سیستم بلافاصله دچار brownout شده و بوت مختل می‌شود.

پین‌های مربوط به SPI Flash و PSRAM

برای دستیابی به کارایی پردازشی بالا، ESP32‑S3 به حافظه‌های داخلی SPI Flash (برای ذخیره فرم‌ویر و داده‌ها) و PSRAM (برای حافظه موقت برنامه‌ها) وابسته است. ارتباط بین پردازنده و این حافظه‌ها در سرعت‌های بسیار بالا انجام می‌شود، بنابراین پین‌های اتصال به‌طور ویژه رزرو شده و نباید برای کاربر عادی مورد استفاده قرار بگیرند.

پین‌های استاندارد Quad‑SPI (GPIO26 تا GPIO32)

در ماژول‌های استاندارد ESP32‑S3، GPIO26 تا GPIO32 به‌صورت دائمی به حافظه‌های SPI Flash و PSRAM در حالت Quad‑SPI متصل شده‌اند. بنابراین این پین‌ها نباید برای کاربردهای کاربری استفاده شوند.

خوشبختانه در DevKitC این پین‌ها روی هدرها قرار ندارند، اما آگاهی از وجود آنها مهم است، خصوصاً اگر از برد دیگری استفاده کنید یا طراحی سفارشی با چیپ خام داشته باشید.

پین‌های توسعه Octal‑SPI (GPIO33 تا GPIO37)

یکی از تفاوت‌های ESP32‑S3 با برخی چیپ‌های قبلی، پشتیبانی از حافظه Octal‑SPI بسیار سریع است. این حافظه برای کارهای سنگینی مانند نگهداری مدل‌های هوش مصنوعی یا رندرینگ گرافیک حجیم ضروری است.

اگر برد شما از حافظه Octal استفاده کند (در نسخه‌های چیپ مانند ESP32‑S3R8 یا ESP32‑S3R8V مشخص می‌شود)، باس حافظه توسعه می‌یابد و پنج پین اضافی GPIO33 تا GPIO37 به‌طور کامل رزرو می‌شوند.

نمایش پینهای توسعه Octal‑SPI (GPIO33 تا GPIO37)

پین‌های ADC

ESP32‑S3 دو ADC نوع SAR با عملکرد بالا دارد: ADC1 و ADC2. این ADCها امکان خواندن ولتاژ آنالوگ از سنسورها مانند پتانسیومتر، سنسور نور یا سنسور دما را فراهم می‌کنند. در DevKitC تعداد 20 پین برای ورودی آنالوگ در دسترس است.

GPIO1 تا GPIO10 به ADC1 تعلق دارند و GPIO11 تا GPIO20 به ADC2 تعلق دارند.

نقشه پینهای ADC روی ESP32‑S3 DevKitC

هر دو ADC رزولوشن 12‑بیتی دارند، یعنی بازه ورودی را به 4096 سطح مجزا (0 تا 4095) تقسیم می‌کنند.

نکته:

چون ماژول ADC2 توسط Wi‑Fi نیز استفاده می‌شود، وقتی Wi‑Fi فعال است ADC2 قابل استفاده نیست. بنابراین اگر پروژه شما نیاز هم‌زمان به Wi‑Fi و ورودی آنالوگ دارد، بهتر است از پین‌های ADC1 استفاده کنید.

کاهش سطح (ADC Attenuation)

درون چیپ، ADC از یک ولتاژ مرجع داخلی به نام Vref برای اندازه‌گیری سیگنال‌ها استفاده می‌کند. مقدار دقیق Vref بین چیپ‌ها متفاوت است، اما مقدار میانه حدود 1.1V است.

برای اندازه‌گیری ولتاژهای بالاتر از Vref به‌طور ایمن، ESP32‑S3 از ویژگی نرم‌افزاری به نام attenuation استفاده می‌کند که ولتاژ ورودی را قبل از پردازش توسط ADC مقیاس می‌دهد. با افزایش مقدار attenuation در کد، محدوده قابل اندازه‌گیری افزایش می‌یابد.

چهار گزینه attenuation در دسترس است:

پیکربندی attenuation محدوده ولتاژ قابل اندازه‌گیری
ADC_ATTEN_DB_0 (0 dB) 0 mV ~ 950 mV
ADC_ATTEN_DB_2_5 (2.5 dB) 0 mV ~ 1250 mV
ADC_ATTEN_DB_6 (6 dB) 0 mV ~ 1750 mV
ADC_ATTEN_DB_11 (11 dB) 0 mV ~ 3100 mV

پین‌های لمسی خازنی (Capacitive‑Touch)

ESP32‑S3 دارای 14 پین برای حسگر لمسی خازنی است: GPIO1 تا GPIO14.

پینهای حساس به لمس خازنی (Touch) در برد

این پین‌ها تغییرات ظرفیت خازنی را ثبت می‌کنند و می‌توانند حضور نمونه‌ای مانند انگشت را تشخیص دهند. همچنین می‌توانید مواد رسانا مانند فویل آلومینیوم یا پارچه رسانا را به این پین‌ها متصل کنید تا آن ماده به‌عنوان پنل لمسی عمل کند و دکمه یا لامپ لمسی بسازید.

I2C

ESP32‑S3 دو کنترلر سخت‌افزاری I2C مستقل دارد که می‌توانند در حالت‌های استاندارد (100 kbit/s)، فست (400 kbit/s) و سرعت‌های بالاتر بسته به ظرفیت باس کار کنند.

برخلاف برخی توابع دیگر، کنترلرهای I2C به پین ثابت اختصاص داده نشده‌اند و از طریق GPIO Matrix می‌توانند به هر GPIO دلخواه نگاشت شوند.

هشدار:

هنگام سیم‌کشی I2C حتماً مقاومت‌های پول‑آپ خارجی برای خطوط SDA و SCL اضافه کنید—معمولاً بین 4.7 kΩ تا 10 kΩ. در صورتی که از مقاومت‌های کششی داخلی ضعیف چیپ (~45 kΩ) استفاده کنید، سیگنال‌ها ممکن است روی خطوط طولانی یا باس‌هایی با ظرفیت بالا خیلی کند بالا بروند و باعث خطا یا قطع کار باس شوند.

UART

ESP32‑S3 سه کنترلر UART سخت‌افزاری دارد: UART0، UART1 و UART2.

پینهای UART پیشفرض و محل اتصال آنها

UART0 عمدتاً برای کنسول و دیباگ استفاده می‌شود. به‌صورت پیش‌فرض UART0 به GPIO43 برای TX و GPIO44 برای RX اختصاص دارد. این پین‌ها پیام‌های بوت‌لودر ROM را خروجی می‌دهند و امکان دیباگ از طریق Serial Monitor را فراهم می‌کنند؛ تغییر این پین‌ها در نرم‌افزار به‌شدت نامطلوب است زیرا کنسول اصلی دیباگ را غیر فعال می‌کند.

UART1 به‌صورت پیش‌فرض GPIO17 برای TX و GPIO18 برای RX دارد، ولی می‌توان آن را از طریق GPIO Matrix به دیگر پین‌ها منتقل کرد.

UART2 به‌طور کامل پیش‌فرضاً تخصیص نیافته و می‌توان آن را آزادانه به هر GPIO نگاشت کرد.

کنترلر UART TX RX توضیحات
UART0 GPIO43 GPIO44 کنسول دیباگ اصلی. تغییر تخصیص به‌شدت نامطلوب است.
UART1 GPIO17 GPIO18 پین‌های پیش‌فرض نشان داده شده‌اند، اما می‌توانند به هر GPIO نگاشت شوند.
UART2 تخصیص نیافته تخصیص نیافته کاملاً آزاد برای نگاشت به هر GPIO.

SPI

ESP32‑S3 دارای چهار کنترلر SPI است: SPI0، SPI1، SPI2 و SPI3.

نقشه کلی پینهای SPI روی DevKitC

SPI0 و SPI1 اختصاصی برای حافظه داخلی Flash و PSRAM هستند و قابل استفاده برای کاربر نیستند. بنابراین فقط SPI2 و SPI3 برای کاربردهای شما در دسترس‌اند.

به‌صورت پیش‌فرض SPI2 از طریق IO MUX به پین‌های زیر متصل است:

سیگنال SPI نقشه پین SPI2
SCK / CLK GPIO12
MOSI GPIO11
MISO GPIO13
CS (Chip Select) GPIO10

هرچند SPI2 را می‌توان از طریق GPIO Matrix به پین‌های دیگر نیز نگاشت، توصیه می‌شود از پین‌های سخت‌افزاری پیش‌فرض استفاده کنید زیرا اتصال مستقیم IO MUX تأخیر داخلی را دور می‌زند و امکان دستیابی به فرکانس‌های بسیار بالا تا 80 MHz را فراهم می‌کند.

SPI3 به‌صورت پیش‌فرض تخصیص نیافته و می‌توان آن را آزادانه به هر GPIO نگاشت کرد.

I2S

ESP32‑S3 دو واحد I2S (I2S0 و I2S1) دارد که برای انتقال صوت دیجیتال همگام با کیفیت بالا طراحی شده‌اند.

اتصال I2S معمولاً حداقل سه خط سیگنال نیاز دارد: Bit Clock (BCLK)، Word Select (WS) و Serial Data (DIN/DOUT). در برخی موارد از Master Clock (MCLK) نیز برای همگام‌سازی استفاده می‌شود.

نمونه نرخ‌های صوتی استاندارد مانند 44.1 kHz و 48 kHz در محدوده‌ای هستند که GPIO Matrix می‌تواند به‌خوبی از پس آنها برآید؛ بنابراین I2S را می‌توان به تقریباً هر پین GPIO موجود نگاشت کرد.

PWM

تمام پین‌های قابل‌دسترسی در DevKitC، شامل GPIO0 تا GPIO21 و GPIO35 تا GPIO48، قابلیت خروجی سیگنال PWM با رزولوشن بالا را دارند.

نمایش قابلیتهای PWM و تخصیص پینها

می‌توان از دو روش برای مدیریت PWM استفاده کرد که بسته به پیچیدگی پروژه انتخاب می‌شوند.

LED PWM Controller (LEDC)

برای کارهای معمولی مانند کم‌نور یا روشن کردن LED، کنترل سرووهای کوچک یا کنترل یک عنصری گرمایشی ساده از LEDC استفاده می‌شود. این کنترلر هشت کانال PWM مستقل فراهم می‌کند و امکان کنترل فرکانس و Duty Cycle با دقت بالا را می‌دهد. از آنجا که این سیگنال‌ها از طریق GPIO Matrix قابل هدایتند، می‌توان آنها را به تقریباً هر پینی اختصاص داد.

Motor Control PWM (MCPWM)

برای کنترل موتورهای پیچیده، ESP32‑S3 دارای MCPWM است؛ سخت‌افزار اختصاصی که برای راه‌اندازی H‑bridgeها، موتورهای DC براش‌دار و BLDC طراحی شده است. این کنترلر ویژگی‌هایی مانند insertion زمان مرده (dead‑time) سخت‌افزاری، مدیریت خطا و مدولاسیون حامل را پشتیبانی می‌کند.

Two‑Wire Automotive Interface (TWAI/CAN)

TWAI پیاده‌سازی سخت‌افزاری native پروتکل CAN در ESP32‑S3 است و مطابق ISO 11898‑1 (CAN 2.0B) عمل می‌کند و شناسه‌های 11‑بیتی و 29‑بیتی را پشتیبانی می‌کند.

از آنجا که سرعت‌های استاندارد CAN تا 1 Mbps می‌رسد، سیگنال‌های TWAI (TX, RX, BUS‑OFF و CLKOUT) را می‌توان از طریق GPIO Matrix به هر پین در دسترس مسیردهی کرد.

با این حال، ESP32‑S3 بر پایه منطق 3.3V کار می‌کند و قادر به تولید سیگنال تفاضلی مورد نیاز یک باس CAN واقعی نیست. برای اتصال DevKitC به یک باس CAN واقعی باید از ترانسیور جداگانه 3.3V CAN استفاده کنید.

USB‑OTG

یکی از مزایای مهم ESP32‑S3، کنترلر USB 1.1 OTG با پشتیبانی full‑speed است.

این رابط USB به‌صورت دائم به GPIO19 برای D‑ و GPIO20 برای D+ متصل است. این پین‌ها امکان شبیه‌سازی کنسول سریال (CDC) و دیباگ JTAG سخت‌افزاری را از طریق یک کابل Type‑C فراهم می‌کنند.

اتصالات USB‑OTG روی GPIO19 و GPIO20 با پورت Type‑C

هشدار:

از آنجا که GPIO19 و GPIO20 به USB داخلی متصل‌اند، از استفاده از آنها برای اهداف دیگر اجتناب کنید. اگر این پین‌ها را دوباره پیکربندی کنید، اتصال داخلی USB قطع شده و دسترسی USB از بین می‌رود.

پین‌های JTAG سخت‌افزاری سنتی

اگر نیاز باشد که GPIO19 و GPIO20 را برای کارهای دیگر آزاد کنید، ESP32‑S3 از JTAG سخت‌افزاری سنتی نیز پشتیبانی می‌کند.

به‌صورت پیش‌فرض این رابط از طریق IO MUX به پین‌های زیر متصل است:

سیگنال JTAG پین GPIO پیش‌فرض
MTCK GPIO39
MTDO GPIO40
MTDI GPIO41
MTMS GPIO42
پینهای JTAG سختافزاری (MTCK, MTDO, MTDI, MTMS)

اگر دیباگ سخت‌افزاری JTAG در طراحی نهایی لازم نباشد، این چهار پین را می‌توان دوباره به‌عنوان GPIO عادی استفاده کرد.

پین LED RGB داخلی

برد DevKitC دارای یک LED آدرس‌پذیر WS2812 داخلی است که برای بازخورد بصری مفید است.

محل اتصال LED بستگی به نسخه سخت‌افزاری برد دارد: در DevKitC‑1 v1.0 LED به GPIO48 متصل است، در حالی که در DevKitC‑1 v1.1 به GPIO38 متصل شده است.

محل اتصال LED آدرسپذیر WS2812 روی برد DevKitC

بنابراین همواره قبل از نوشتن کد نسخه برد خود را بررسی کنید تا LED در پین مورد انتظار روشن شود.

پین‌های تغذیه

DevKitC چند پین تغذیه دارد که هم برای تغذیه خود برد استفاده می‌شوند و هم می‌توانند برای تأمین توان سنسورها و ماژول‌های خارجی به کار روند.

پینهای تغذیه شامل 5V، 3V3 و پورت Type‑C روی برد

پورت‌های Type‑C USB (پورت USB‑to‑UART و پورت USB داخلی ESP32‑S3) روش اصلی تغذیه برد هستند. اتصال به کامپیوتر یا آداپتور دیواری 5V را به یک رگولاتور LDO روی برد می‌دهد که آن را به 3.3V پایدار تبدیل می‌کند، ولتاژی که چیپ و دیگر قطعات برد به آن نیاز دارند.

پین 5V یک روش دیگر برای تغذیه برد است. با اتصال یک پک باتری یا آداپتور خارجی که بین 4.3V تا 6.0V تأمین می‌کند می‌توانید برد را مستقیم تغذیه کنید. دقیقاً مانند تغذیه USB، رگولاتور داخلی این ولتاژ را به 3.3V تبدیل می‌کند.

پین 3V3 بسته به پیکربندی می‌تواند نقش دوگانه داشته باشد. در بیشتر موارد وقتی برد از طریق USB یا پین 5V تغذیه می‌شود، پین 3V3 یک خروجی است و 3.3V پایدار برای سنسورهای کوچک فراهم می‌کند. باید به جریان کلی مصرفی توجه کنید، زیرا ESP32‑S3 می‌تواند در اوج ارسال Wi‑Fi تا 500mA بکشد.

همچنین پین 3V3 می‌تواند به‌عنوان ورودی استفاده شود؛ اگر منبع خارجی 3.3V پایداری دارید می‌توانید آن را مستقیم وارد 3V3 کنید تا مسیر رگولاتور روی برد دور زده شود و ولتاژ مستقیماً به منطق میکروکنترلر برسد.

پین‌های کنترلی

دکمههای BOOT و RESET و اتصال آنها به GPIO

دکمه BOOT (GPIO0) مستقیماً به GPIO0 متصل است. نگه داشتن این دکمه باعث می‌شود منطق استرپینگ به طور فیزیکی LOW شود و ESP32‑S3 وارد حالت bootloader شود.

دکمه RESET (CHIP_PU) به خط فعال‌سازی چیپ (CHIP_PU) متصل است. با فشردن کوتاه این دکمه، تغذیه منطق دیجیتال قطع شده و میکروکنترلر بلافاصله ریست می‌شود.

سوالات متداول

آیا می‌توانم GPIOها را به 5V متصل کنم؟

خیر. ESP32‑S3 با منطق 3.3V کار می‌کند و اتصال پین‌های GPIO به 5V ممکن است باعث آسیب دائمی به برد شود.

کدام ADC برای پروژه‌ای که هم‌زمان از Wi‑Fi استفاده می‌کند مناسب‌تر است؟

بهتر است از پین‌های ADC1 (GPIO1 تا GPIO10) استفاده کنید چون ADC2 توسط Wi‑Fi نیز به‌کار گرفته می‌شود و در زمان فعال بودن Wi‑Fi قابل استفاده نیست.

اگر در زمان بوت GPIO0 یا GPIO45 به سطح نامناسب کشیده شوند چه اتفاقی می‌افتد؟

اگر GPIO0 هنگام بوت LOW شود، چیپ وارد Download Mode می‌شود و از اجرای معمول برنامه جلوگیری می‌کند. اگر GPIO45 در زمان بوت HIGH شود، رگولاتور حافظه روی 1.8V تنظیم می‌شود که در صورت وجود فلش 3.3V می‌تواند باعث brownout و عدم بوت شود؛ بنابراین هنگام وصل کردن مدارها به این پین‌ها باید دقت کرد.

5 (1 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

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

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