1. صفحه نخست
  2. آموزش ESP32
  3. راهنمای پایه های ESP32

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

مقدمه

پس از آشنایی و معرفی کامل برد esp32 و نصب و راه اندازی آن در arduino IDE, اکنون قصد داریم با پین های ورودی و خروجی تراشه ESP32 آشنا شویم. در این مطلب همچنین با کاربرد پایه های ESP32 آشنا خواهید شد.

پین های ESP-WROOM-32

از بردهای کمکی که برای این چیپ ESP32 وجود دارند, می توان NodeMCU را نام برد. تراشه ESP32 در سه تایپ  wroom , wrover و solo عرضه می شود.در شکل زیر پین های ESP-WROOM-32 را مشاهده می کنید:

پین های ESP-WROOM-32
پین های ESP-WROOM-32

 

نکته

همه GPIO ها قابل دسترسی در تمامی بردهای توسعه نیستند. اما هر GPIO خاص بدون در نظر گرفتن نوع برد توسعه ای که استفاده می کنید، به همان روش عمل می کند.

پین های ESP32
پین های ESP32

 

لوازم جانبی ESP32

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

ویژگی های مربوط به ADC و DAC به پین های ثابتی مختص می شود. یک مزیت تراشه ESP32؛ ویژگی مولتی پلکسی می باشد که شما می توانید UART یا I2C و یا SPI و PWM به پین دلخواه اختصاص دهید. بدین منظور کافی است انتخاب خود را در کدنویسی اعمال کنید.

پین های ESP32 DEVKIT V1

پین های ESP32 DEVKIT V1
پین های ESP32 DEVKIT V1

 

توضیح پایه های ESP32

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

راهنمای جدول

سبز استفاده از این پین ها مجاز است
زرد  استفاده از این پین ها مجاز است،اما توجه و احتیاط لازم را در هنگام بوت (راه اندازی) داشته باشید.
قرمز چه به عنوان ورودی یا خروجی, کار با این پایه ها توصیه نمی شود.
GPIO ورودی خروجی توضیح
0 pulled up OK outputs PWM signal at boot
1 TX pin OK debug output at boot
2 OK OK connected to on-board LED
3 OK RX pin HIGH at boot
4 OK OK
5 OK OK outputs PWM signal at boot
6 x x connected to the integrated SPI flash
7 x x connected to the integrated SPI flash
8 x x connected to the integrated SPI flash
9 x x connected to the integrated SPI flash
10 x x connected to the integrated SPI flash
11 x x connected to the integrated SPI flash
12 OK OK boot fail if pulled high
13 OK OK
14 OK OK outputs PWM signal at boot
15 OK OK outputs PWM signal at boot
16 OK OK
17 OK OK
18 OK OK
19 OK OK
20 OK OK
21 OK OK
22 OK OK
23 OK OK
24 OK OK
25 OK OK
26 OK OK
27 OK OK
28 OK OK
29 OK OK
30 OK OK
31 OK OK
32 OK OK
33 OK OK
34 OK input only
35 OK input only
36 OK input only
39 OK input only

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

پین های مختص ورودی / input only

پین های 34 تا 39 تنها به عنوان ورودی ست می شوند. این پین ها ورودی مقاومت pull-up یا pull-down ندارند:

  • GPIO 34
  • GPIO 35
  • GPIO 36
  • GPIO 39

حافظه فلش داخلی SPI در ESP-WROOM-32

GPIO 6 تا GPIO 11 در برخی از بردهای توسعه ESP32 وجود دارد. این پایه ها به حافظه فلش داخلی SPI در چیپ 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)

پایه های حسگر خازنی

برد ESP32 دارای 10 سنسور خارنی داخلی می باشد. این حسگرها می توانند تغییرات اعمال شده ای که دارای بار الکتریکی است، را تشخیص دهد. (مانند پوست انسان)

پایه های سنسور خارنی می توانند تغییرات ناشی از لمس GPIO ها ر تشخیص دهند. جالب است بدانید که این پین ها می توانند به راحتی در لنت های خازنی ادغام شده و جایگزین دکمه های مکانیکی شوند.

⇐ از پین های حسگر خازنی برای بیدار کردن برد ESP32 از حالت deep sleep نیز می توانید استفاده کنید.

حسگرهای لمسی داخلی به GPIOهای زیر متصل هستند:

  • 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

ESP32 دارای کانال های ورودی ADC 18 x 12 می باشد. (در حالیکه ESP8266 تنها 1x 10 ADC دارد. در لیست زیر GPIO های که می توانند به عنوان 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)

زمانی که از Wi-Fi استفاده می کنید, نمی توان پایه های ADC2 را متصل کرد. پس توصیه می شود که به جای ADC2 از ADC1 استفاده کنید.

↵ کانال های ورودی ADC دارای رزولوشن 12 بیتی می باشند. نتیجتاً مقادیر خوانده شده آنالوگ را در بازه ی 0 تا 4095 می توانید دریافت کنید:

  1. 0 مربوط به ولتاژ 0 
  2. 4095 مربوط به 3.3 ولت

پایه های ADC برد ESP32 دارای رفتار خطی نیستند. بدین معنا که؛ مقادیر بین 0 تا 0.1 ولت و یا 3.2 تا 3.3ولت را نمی توان جدا کرد.

برای درک بیشتر این مطلب به نمودار زیر در سایت گیت هاب توجه فرمایید:

نمودار_غیر خطی_پین های ADC_برد ESP32
نمودار_غیر خطی_پین های ADC_برد ESP32

 

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

2 کانال DAC 2×8 بیتی در برد ESP32 داریم. که سیگنال های دیجیتال را به آنالوگ در خروجی تبدیل می کند. اسامی این کانال ها به صورت زیر است:

  • DAC1 (GPIO25)
  • DAC2 (GPIO26)

GPIO های RTC

GPIO های ماژول RTC (ساعت فوق دقیق) در برد ESP32 وجود دارند که می توان از آن ها برای بیدار کردن ESP32 از deep sleep در حالت (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 ال ای دی در ESP32 دارای 16 کانال مستقل است. که می تواند برای تولید سیگنال های PWM با ساختارهای مختلفی پیکربندی شود.

همه پایه های ESP32 که به عنوان خروجی عمل می کنند، می توانند پین های PWM باشند. ( بجز GPIO های 34 تا 39 )

برای ست کردن یک سیگنال PWM؛ پارامترهای زیر را باید در کدنویسی تعریف کنید:

  • فرکانس سیگنال 
  • Duty cycle یا دوره کاری
  • کانال PWM
  • GPIO ای که می خواهید سیگنال خروجی برای آن تعریف شود

پروتکل I2C

ESP32 دارای 2 کانال I2C می باشد که هر پین می تواند به عنوان SDA یا SCL ست شود. وقتی که از برد ESP32 با نرم افزار Arduino IDE استفاده می کنید، پین های I2C به صورت پیش فرض عبارتند از:

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

اگر می خواهید از پین های دیگری استفاده کنید، در دستور کد مربوط به کتابخانه wire, باید آن را فرا بخوانید:

Wire.begin(SDA, SCL);

پروتکل SPI

جدول زیر, پین هایی هستند که به صورت پیش فرض برای پروتکل SPI تعریف شده اند:

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

وقفه یا Interrupt

همه پایه های ESP32 می توانند به عنوان وقفه عمل کنند.

پایه های HIGH at Boot

بعضی از GPIOها باعث حالت HIGH یا reset می شوند. بدین معنا که نتایج در خروجی ها تحت تاثیر اتصال این پایه ها, غیر قابل پیش بینی خواهند بود:

  • GPIO 1
  • GPIO 3
  • GPIO 5
  • GPIO 6 to GPIO 11 
  • GPIO 14
  • GPIO 15

فعال سازی (Enable)

enable؛ پایه فعال ساز و تنظیم کننده است که pull up می باشد. بنابراین با اتصال به زمین (ground), تنظیم کننده 3.3v غیر فعال می شود. به عنوان مثال؛ با اتصال این پین به یک دکمه فشاری، می توانید از پایه EN برای ری استارت کردن ESP32 استفاده کنید.

برای آموزش های بیشتر و تکمیلی با ادامه مجموعه ESP32 همراه باشید.🙂

آخرین آپدیت در آوریل 5, 2021

آیا این مقاله آموزشی مفید بود ؟

نوشته های مرتبط

لطفا نظر خود را بنویسید، این نظر میتواند تنها یک تشکر باشد.