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

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

برای اضافه کردن ارتباط بی‌سیم به پروژه‌های امبدد یا ساخت دستگاه‌های اینترنت اشیاء، ESP32 از محبوب‌ترین گزینه‌ها به شمار می‌آید. این پلتفرم گزینه پردازنده دو هسته‌ای برای کاربردهای پردازش‌محور را ارائه می‌دهد و داشتن WiFi و Bluetooth داخلی طراحی را ساده‌تر می‌کند. همچنین تعداد کافی پین‌های ورودی/خروجی، حافظه و امکانات تطبیق‌پذیری دارد که پاسخگوی بسیاری از نیازهای پروژه‌هاست.

شرکت Espressif که تراشهESP32 را تولید می‌کند، ماژول‌ها و بوردهای توسعه هم عرضه می‌کند. اگر قصد طراحی PCB سفارشی با ESP32 را دارید، استفاده از ماژول ESP32-WROOM-32 انتخاب مناسبی است. به‌کارگیری ماژول به‌جای چیپ بی‌سیم مزایایی دارد؛ از جمله اینکه ماژول اغلب از قبل تاییدیه های لازم مانند FCC را دارد و نیازی به اقدامات جداگانه برای رعایت قوانین رادیویی نیست که این موضوع فرایند تولید را ساده می‌کند.

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

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

پین اوت ESP32-WROOM-32

ماژول ESP32-WROOM-32 در مجموع 38 پین دارد. پین اوت ماژول به شکل زیر است:

نمایش کلی پین اوت ماژول ESP32-WROOM-32

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

GPIO ها

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

نقشه موقعیت و عملکرد GPIO های ماژول ESP32-WROOM-32

کدام 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

GPIO های فقط ورودی

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

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

همهٔ GPIOها را می‌توان به عنوان منبع وقفه پیکربندی کرد. (مقداردهی و مدیریت دقیق وقفه‌ها وابسته به روش پیاده‌سازی نرم‌افزاری است.)

تصویر کوچک مقاله پیشنهادی مرتبط با وقفههای GPIO در ESP32

پین‌های ADC

ماژول ESP32-WROOM-32 دو بلاک مبدل آنالوگ به دیجیتال دارد: ADC1 و ADC2. هر بلاک چندین کانال در اختیار دارد:

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

رزولوشن 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ها برای تبدیل سیگنال دیجیتال به ولتاژ آنالوگ کاربردی هستند.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید
محل پینهای DAC دو کاناله در ماژول ESP32-WROOM-32

پین‌های لمسی (Touch)

ماژول شامل ده پین با قابلیت لمس خازنی با برچسب‌های TOUCH0 تا TOUCH9 است. این پین‌ها با اندازه‌گیری تغییر ظرفیت کار می‌کنند وقتی انگشت یا جسم هادی در نزدیکی آن‌ها قرار گیرد.

کاربردها شامل دکمه‌های لمسی، اسلایدر لمسی یا تشخیص سادهٔ ژست است. همچنین می‌توان از آن‌ها برای بیدار کردن ESP32 از حالت deep sleep استفاده کرد که به صرفه‌جویی در مصرف انرژی کمک می‌کند.

نقشهٔ پینهای لمسی TOUCH0 تا TOUCH9 در ماژول

I2C

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

با این حال، GPIO21 معمولاً به عنوان SDA و GPIO22 به عنوان SCL به عنوان پیش‌فرض شناخته می‌شوند تا کار با کدها و کتابخانه‌های آردوینو ساده‌تر شود.

پیشنهاد استفاده از GPIO21 به عنوان SDA و GPIO22 به عنوان SCL برای I2C

SPI

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

مانند I2C، تخصیص پین‌های SPI نیز انعطاف‌پذیر است و می‌توان از GPIOهای مختلف به عنوان خط‌های SPI استفاده کرد.

نمایش پینهای مربوط به SPI های مختلف در ESP32-WROOM-32

UART

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

محل پینهای UART در ماژول ESP32-WROOM-32

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

علاوه بر پین‌های پایه TX و RX، UARTها از RTS و CTS برای کنترل جریان سخت‌افزاری نیز پشتیبانی می‌کنند، هرچند استفاده از آن‌ها کمتر رایج است.

PWM

تقریباً همهٔ GPIOها را می‌توان برای تولید خروجی PWM پیکربندی کرد.

نمونهای از قابلیت پینها برای تولید سیگنال PWM

PWM در ESP32 با رزولوشن بالا قابل پیکربندی است، معمولاً تا 16 بیت، که کنترل دقیق‌تری را فراهم می‌کند. فرکانس PWM نیز قابل تنظیم است و از چند هرتز تا چند ده مگاهرتز قابل انتخاب است که برای کاربردهایی از قبیل کنترل موتور تا کم‌نور کردن LED مناسب است.

پین‌های RTC

برخی از GPIOها به زیرسیستم کم‌مصرف RTC متصل شده و به عنوان RTC GPIO شناخته می‌شوند. این پین‌ها می‌توانند برای بیدار کردن ESP32 از حالت deep sleep و برای ارتباط با قطعات وابسته به RTC مورد استفاده قرار گیرند.

پینهای متصل به زیرسیستم RTC و کاربرد در بیدار کردن از deep sleep

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

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

پینهای استراپ (GPIO0, GPIO2, GPIO5, GPIO12, GPIO15) در ماژول

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

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

پین‌های تغذیه ولتاژ مورد نیاز ماژول را تامین می‌کنند:

3V3، پین تغذیهٔ اصلی که باید با منبع تغذیهٔ 3.3V پایدار تامین شود.

GND، پین زمین (مرجع مدار).

محل پینهای تغذیه 3V3 و GND روی ماژول ESP32-WROOM-32

پین EN (Enable)

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

محل پین EN (Enable) روی ماژول ESP32-WROOM-32

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

کدام 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 یا اتصال سخت‌افزار به این پین‌ها باید احتیاط کرد.

نظر خود را اعلام کنید

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

محمد رحیمی

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

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

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