در این مقاله پایه های ماژول ESP32 همچنین کاربردهای آن ها را برای شما توضیح داده ایم. تا انتهای مقاله همراه ما باشید.
پایه های ESP32
تصویر فوق شماتیک پایه های ESP32 نشان می دهد.
پایه های ESP32 با کاربردهای مختلف در شکل بالا مشخص شده است که شامل موارد زیر میباشند:- 18 کانال مبدل آنالوگ به دیجیتال
- 10 پایه ورودی/خروجی همه منظوره با قابلیتهای حسی
- 3 رابط فرستنده و گیرنده سریال
- 3 رابط سریال
- 2 رابط I2C
- 16 مدولاسیون پهنای پالس
- 2 مبدل دیجیتال به آنالوگ
- 2 رابط I2S
ماژول ESP32 wroom32 دارای ۲۵ پایه ورودی/خروجی همهمنظوره میباشد. که بعضی از پایه ها فقط برای ورودی هستند مثل:
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 39
توجه داشته باشید که همهی پایه های ورودی دارای مقاومت pullup نیستند.
پایه هایی که دارای مقاومت pullup هستند:
- GPIO14
- GPIO16
- GPIO17
- GPIO18
- GPIO19
- GPIO21
- GPIO22
- GPIO23
پایه هایی که فاقد مقاومت pullup هستند:
- GPIO13
- GPIO25
- GPIO26
- GPIO27
- GPIO32
- GPIO33
پایه های مبدل آنالوگ به دیجیتال (ADC)
پایه های ADC با رنگ زرد در شکل مشخص شده است.
پایه های مبدل دیجیتال به آنالوگ (DAC)
شامل 2 کانال 8 بیت است که به پایه های GPIO25 و GPIO26 متصل است.
درایور DAC این امکان را داده است که ولتاژ دلخواه برای این کانالها ست شود.
پایههای ورودی و خروجی RTC
این پایه ها برای زیرسیستمهای کمتوان استفاده میشوند به عنوان مثال برای زمانی که ESP32 در حالت خواب است.
- RTC_GPIO3 (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 کاربرد دارد که باید برای تولید این سیگنال پارامترهای زیر تعریف شوند:
- فرکانس سیگنال
- چرخه کار (duty cycle)
- کانال pwm
- GPIO ای که میخواهید سیگنال خروجی در آن باشد.
سریال
ESP32 دارای پورتهای زیر است:
- TX0
- RX0 : GPIO3(U0RXD), GPIO1(U0TXD)
- RX2 : GPIO316(U2RXD), GPIO17(U2TXD)
پایههای ورودی و خروجی
شامل 25 پایه است که هر پایه می تواند بعنوان یک پایه همهمنظوره استفاده شود. توجه کنید که پایه های ورودی/خروجی 6-11 معمولاً برای رابط سریال فلش استفاده میشوند. پایه های ورودی/خروجی 34-39 فقط به عنوان پایه های ورودی می توانند استفاده شوند و مقاومت pullup و pulldown ندارند.
پایههای فراهم کردن توان
برای فراهم کردن توان 3 راهکار وجود دارد:
- استفاده از USB
- استفاده از پایههای VIN و GND: ولتاژ ورودی بین ۵ تا ۱۳ ولت (unregulated)
- استفاده از پایههای V3.3 و GND: ولتاژ ورودی دقیقاً بین ۳ تا ۳.۳ ولت (regulated)
همچنین از پایه EN میشود برای شروع مجدد دستگاه در حالت regulated استفاده کرد.
SPI
بصورت پیش فرض نقشهی پایههای رابط سریال ورودی/خروجیهای همه منظوره بصورت زیر است:
وقفهها
از همهی پایه های ورودی/خروجی همهمنظوره می توان بعنوان وقفه استفاده کرد.
برای تعریف عملکرد پایه های GPIO باید کتابخانه زیر به کد اضافه شود:
#include "driver/gpio.h"
انتخاب یک پین
void gpio_pad_select_gpio(uint8_t gpio_num);
جهت یک پین
esp_err_t gpio_set_direction(gpio_num_t gpio_num, gpio_mode_t mode);
اگر یک پین ورودی باشد، وضعیت آن را با تابع زیر میتوان مشخص کرد:
int gpio_get_level(gpio_num_t gpio_num);
اگر پین خروجی باشد،میتوان وضعیت آن را با تابع زیر تغییر داد:
esp_err_t gpio_set_level(gpio_num_t gpio_num, uint32_t level);
هر پین شامل مقاومت میباشد که با تابع زیر میتوان آنها را فعال کرد:
esp_err_t gpio_set_pull_mode(gpio_num_t gpio_num, gpio_pull_mode_t pull);
تنظیم یکباره همه پینها
برای تنظیم یکباره پینها میتوانیم از struct زیر استفاده کنیم:
gpio_config_t pin_config;
برای نمونه اگر بخواهیم پینهای 2، 3 و 7 خروجی باشند و مقاومتها غیرفعال شوند به شیوهی زیر عمل میکنیم:
pin_config.pin_bit_mask = GPIO_SEL2 | GPIO_SEL_3 | GPIO_SEL_7 ; pin.config.mode = GPIO_MODE_OUTPUT; pin_config.pull_up_en = GPIO_PULLUP_DISABLE; pin_config.pull_down_en = GPIO_PULLDOWN_DISABLE; pin_config.intr_type = GPIO_PIN_INTR_DISABLE;
یا اگر بخواهیم پین 6 و 8 ورودی باشند:
pin_config.pin_bit_mask = GPIO_SEL_6 | GPIO_SEL_8; pin_config.mode = GPIO_MODE_INPUT; pin_config.pull_up_en = GPIO_PULLUP_ENABLE; pin_config.pull_down_en = GPIO_PULLDOWN_DISABLE; pin_config.intr_type = GPIO_PIN_INTR_DISABLE;
بعد از انجام تنظیمات با دستور زیر آنها را بکار میگیریم:
gpio_config(&pin_config)
3 دیدگاه