معرفی پایه های ESP32

به آموزش پایه های ESP32 خوش آمدید.

در این قسمت به معرفی پین های ورودی و خروجی ESP32 می پردازیم:

تراشه ESP32 48 تا پین داره که عملیات مختلفی رو میشه با اون پین ها انجام داد که البته بعضی از پین ها در بعضی از مدلهای این تراشه قابل استفاده نیستن.

تو شکل زیر میتونید پین های ESP-WROOM-32 رو ببینید:

پریفرال های ESP32  

پریفرالهای ESP32  شامل موارد زیر است:

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

مشخصات پین ها رو میتونید در نرم افزار مشخص کنید اما بعضی از اونها به صورت پیش فرض اختصاص داده شده اند. (شکل زیر نمونه ۳۶ پین ESP32 DEVKIT V1 DOIT board هست که جای پین ها بر اساس تولید کننده این تراشه میتونه تغییر کنه.)

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

پین های با رنگ سبز محدودیتی برای استفاده ندارن، پین های با رنگ زرد برای استفاده مناسب هستن اما باید مراقب بود چون ممکنه عملکردی غیر قابل پیش بینی در بوت داشته باشن. از پین های با رنگ قرمز هم پیشنهاد میشه که به عنوان ورودی و خروجی استفاده نکنید.

پین هایی که فقط باید ورودی باشن :

پین های GPIO 34 تا ۳۹ GPI هستن و هیچ مقاومت پول آپ و پول داون داخلشون ندارن. و نمیتونن به عنوان خروجی استفاده بشن:

GPIO34

GPIO35

GPIO36

GPIO39

ارتباط  SPI در  ESP-WROOM-32

پین های  GPIO6 تا GPIO11 در بعضی برد های ESP32  قرار دارن اما اینها به تراشه  ESP-WROOM-32 متصل هستند پس از اونها در پروژه ها تون استفاده نکنید.

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 10 تا سنسور داخلی لمسی داره. این سنسورها هرگونه تغییراتی رو تو هرچیزی که شارژ الکتریکی نگه دارن ، مثل پوست انسان، اندازه گیری میکنن. پس با لمس GPIOها با انگشت میتونن این تغییرات رو تشخیص بدن. پس به جای استفاده از دکمه های مکانیکی، این پین ها به راحتی در پدهای خازنی میتونن گنجانده و استفاده بشن . میتونید ازاینجا یاد بگیرید.

اون سنسورهای لمسی به این GPIO ها متصل هستن :

T0(GPIO4)

T1(GPIO0)

T2(GPIO2)

T3(GPIO15)

T4(GPIO13)

T5(GPIO12)

T6(GPIO14)

T7(GPIO27)

T8(GPIO33)

T9(GPIO32)

استفاده از این پین ها در آردوینو رو از اینجا ببینید.

مبدل آنالوگ به دیجیتال

ESP32  دارای ۱۸ تا کانال ورودی ۱۲ بیتی برای مبدل آنالوگ به دیجیتال است(در حالیکه  ESP8266 فقط یک کانال ۱۰ بیتی دارد). GPIO هایی که میتونن در مبدل آنالوگ به دیجیتال استفاده بشن به شرح زیر هستند :

ADC1-CH0(GPIO36)

ADC1-CH1(GPIO37)

ADC1-CH2(GPIO38)

ADC1-CH3(GPIO39)

ADC1-CH4(GPIO32)

ADC1-CH5(GPIO33)

ADC1-CH6(GPIO34)

ADC1-CH7(GPIO35)

ADC2-CH0(GPIO4)

ADC2-CH1(GPIO0)

ADC2-CH2(GPIO2)

ADC2-CH3(GPIO15)

ADC2-CH4(GPIO13)

ADC2-CH5(GPIO12)

ADC2-CH6(GPIO14)

ADC2-CH7(GPIO27)

ADC2-CH8(GPIO25)

ADC2-CH9(GPIO26)

کانالهای ورودی ADC رزولوشن ۱ بیتی دارن. به این معنی که میتونید رنج ورودی آنالوگ را از ۰ تا ۴۰۹۵ قرار بدین . ۰ یعنی صفر ولت و ۴۰۹۵ یعنی ۳.۳ ولت . پس محدوده ولتاژ ورودی آنالوگ از ۰ تا ۳.۳ ولت میتونه باشه. همچنین میتونید این محدوده رو در کد تعیین کنید.

پین های ADC در ESP32 رفتاری خطی ندارن بنابراین نمیتونید ولتاژی بین ۰ تا ۰.۱ ولت یا ۳.۲ تا ۳.۳ ولت رو تشخیص بدین. پس وقتی دارین از این پین ها استفاده میکنید ولتاژ هایی که به این شکل هستن رو باید مقدار اون رو به حافظه بسپارید. رفتار این پین ها مطابق شکل زیر است :

مبدل دیجیتال به آنالوگ

دو تا کانال ۸ بیتی برای تبدیل خروجی های دیجیتال به آنالوگ وجود داره:

DAC1(GPIO25)

DAC2(GPIO26)

GPIO های  RTC

 GPIO های که منتهی به زیرسیستم RTC کم توان هستند در مواقعی که  ESP32  در حالت SLEEP  عمیقی قرار داره استفاده میشن.با این پین ها میشه وقتی پردازنده ULP داره کار میکنه و ESP32  به حالت SLEEP عمیق میره ، از این GPIO های  RTC  میتونید استفاده کنید و از SLEEP  خارجشون کنید. اونها میتونن به عنوان 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 در ESP32  ، ۱۶ تا کانال داره که با پیکربندی شدن میشه سیگنالهای  PWM با ویژگی های مختلفی تولید کرد. همه پین هایی که میتونن خروجی باشن، به عنوان پین های PWM قابل استفاده هستن (GPIO های ۳۴ تا ۳۹ نمیتونن  PWM  تولید کنن)

برای اینکه یک PWM درست کنید باید این پارامترها رو در کد قرار بدین :

  • فرکانس سیگنال
  • سیکل وظیفه
  • کانال PWM
  • GPIO ای که از اون خروجی گرفته میشه.

I2C

ESP32  دو تا کانال I2C  داره و هر پینی میتونه به صورت SDA یا  SCL تنظیم بشه. وقتی که ESP32 رو با آردوینو استفاده میکنید پین های پیش فرض I2C اینها هستن :

GPIO21(SDA)

GPIO22(SCL)

 اما اگر قصد استفاده از پین دیگه ای رو دارید، وقتی از کتابخونه WIRE استفاده میکنید، فقط باید این کد  رو فراخوانی کنید:

Wire.begin(SDA, SCL);

SPI

پین هایی که به صورت پیش فرض برای SPI  هستن در زیر قرار داده شده :

وقفه ها

همه GPIO ها میتونن به عنوان پین وقفه پیکربندی بشن .

پین های استرپ

پین های استرپ در  ESP32 :

GPIO0

GPIO2

GPIO4

GPIO5  (زمان بوت شدن باید در حالت HIGH باشد)

GPIO12 (زمان بوت شدن باید در حالت LOW باشد)

GPIO15 (زمان بوت شدن باید در حالت HIGH باشد)

این پین ها برای قرار دادن ESP32 در بوت لودر و یا حافظه فلش استفاده می شوند. در اکثر بردهایی که پورت USB سریال روی خود دارند نیازی به نگرانی در مورد این پین ها ندارید زیرا خود برد این پین ها را در وضعیت مناسب مود فلش و یا بوت قرار  می دهد.

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

پین های HIGH در بوت

بعضی از GPIO ها وضعیت خود را در بوت و ریست به حالت HIGH  و یا خروجی PWM  تغییر می دهند. یعنی اگر خروجی هایی به این GPIO ها دارید در زمان بوت و یا ریست شدن  ESP32  ممکن است با نتایج غیر قابل پیش بینی مواجه بشین.

GPIO1

GPIO3

GPIO5

GPIO6  تا GPIO11 (متصل به SPI )

GPIO14

GPIO15

Enable (En)

En در واقع پین ۳.۳ ولت رگولاتوره که اگر به زمین مدار متصل بشه غیر فعال میشه. مثلا اگه این پین رو به یه push button  وصل کنید میشه برای ریست کردن  esp32  ازش استفاده کرد.

جریان کشی GPIO

مقدار ماکزیمم جریان کشی هر  GPIO برابر  40 میلی آمپره.

سنسور داخلی HALL EFFECT در ESP32

تغییرات میدان مغناطیسی در اطراف ESP32 با این سنسور قابل تشخیصه .

پایان معرفی پایه های ESP32

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

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

قبلا حساب کاربری ایجاد کرده اید؟
گذرواژه خود را فراموش کرده اید؟
Loading...