Розпінування ESP32

ESP32 — популярний мікроконтролер із вбудованим Wi-Fi та Bluetooth, використовується в IoT-проектах. Для успішної роботи з платою важливо розуміти призначення її контактів.

Чіп ESP32 оснащений 48 мультифункціональними контактами. Не всі контакти доступні на всіх платах ESP32 і деякі контакти не можна використовувати.
На малюнку нижче показано розпіновку чіпа ESP-WROOM-32. Використовуйте його як довідковий матеріал, якщо ви використовуєте голу мікросхему ESP32 для складання власної плати:
Не всі GPIO доступні на всіх платах розробки, але кожен конкретний GPIO працює однаково, незалежно від плати розробки, що використовується. Якщо ви починаєте працювати з ESP32, рекомендуємо прочитати наше керівництво: Початок роботи з платою розробки ESP32.
Периферія ESP32
- 18 каналів аналого-цифрового перетворювача (АЦП)
- 3 інтерфейси SPI
- 3 інтерфейси UART
- 2 інтерфейси I2C
- 16 вихідних каналів ШІМ
- 2 цифро-аналогові перетворювачі (ЦАП)
- 2 інтерфейси I2S
- 10 ємнісних датчиків GPIO
Функції АЦП (аналого-цифровий перетворювач) та ЦАП (цифро-аналоговий перетворювач) призначаються певним статичним контактам. Тим не менш, в коді програми ви можете призначити якісь контакти як UART, I2C, SPI, PWM і т. д. Це можливо завдяки функції мультиплексування чіпа ESP32.
Хоча ви можете визначати властивості контактів у програмному забезпеченні, є контакти, призначені за замовчуванням, як показано на малюнку (це приклад плати ESP32 DEVKIT V1 DOIT з 36 контактами — розташування контактів може змінюватися в залежності від виробника).
Крім того, є контакти з певними функціями, які роблять їх відповідними або не підходящими для конкретного проекту. У наступній таблиці показано, які контакти найкраще використовувати як входи, виходи, а з якими слід бути обережними.
Контакти, виділені зеленим, підходять для використання. Ті, що виділені жовтим кольором, підходять для використання, але на них варто звернути увагу, оскільки вони можуть мати несподівану поведінку, в основному при завантаженні. Контакти, виділені червоним, не рекомендується використовувати як входи або виходи.
GPIO | Введення | Контакт | Особливості |
---|---|---|---|
0 | підключений через підтягуючий резистор | OK | виводить ШІМ сигнал під час завантаження |
1 | TX пін | OK | налагоджувальний контакт під час завантаження |
2 | OK | OK | підключений до вбудованого світлодіода, повинен залишатися плаваючим або перебувати у стані LOW для переходу в режим миготіння |
3 | OK | RX пін | виводить сигнал високого рівня під час завантаження |
4 | OK | OK | |
5 | OK | OK | виводить ШИМ сигнал під час завантаження. |
6 | X | X | підключений до вбудованої флеш-пам'яті SPI |
7 | X | X | підключений до вбудованої флеш-пам'яті SPI |
8 | X | X | підключений до вбудованої флеш-пам'яті SPI |
9 | X | X | підключений до вбудованої флеш-пам'яті SPI |
10 | X | X | підключений до вбудованої флеш-пам'яті SPI |
11 | X | X | підключений до вбудованої флеш-пам'яті SPI |
12 | OK | OK | ESP32 не завантажується, якщо вхід підтягнутий до HIGH, що з'єднує контакт |
13 | OK | OK | |
14 | OK | OK | виводить ШІМ сигнал під час завантаження |
15 | OK | OK | виводить ШІМ сигнал під час завантаження |
16 | OK | OK | |
17 | OK | OK | |
18 | OK | OK | |
19 | OK | OK | |
21 | OK | OK | |
22 | OK | OK | |
23 | OK | OK | |
25 | OK | OK | |
26 | OK | OK | |
27 | OK | OK | |
32 | OK | OK | |
33 | OK | OK | |
34 | OK | лише вхід | |
35 | OK | лише вхід | |
36 | OK | лише вхід | |
39 | OK | лише вхід |
Піни входу
GPIOs 34-39 є GPI - тобто працюють тільки в режимі введення, так як вони не оснащені резистором, що підтягує.
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 39
SPI flash на ESP-WROOM-32
GPIO з 6 по 11 мають контакти на деяких платах розробки ESP32, але ці контакти приєднані до вбудованого модуля SPI flash на чіпі 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. Ці контакти легко інтегруються в ємнісні контактні майданчики та замінюють механічні кнопки. Ємнісні сенсорні контакти можна використовувати для виведення ESP32 з режиму глибокого сну. Ці внутрішні датчики торкання підключені до цих контактів 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)
Аналого-цифровий перетворювач (АЦП)
ESP32 має 18 вхідних 12-бітових каналів АЦП (тоді як ESP8266 має лише 1 10-бітний АЦП). Нижче перераховані GPIO, які можна використовувати як АЦП, і з відповідні канали:
- 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)
Примітка: контакти АЦП2 не можна використовувати під час використання Wi-Fi. Тому, якщо ви використовуєте Wi-Fi і у вас виникають проблеми з отриманням значення з виходу АЦП2 GPIO, спробуйте використати замість нього вихід АЦП1 GPIO — це має вирішити проблему.
Вхідні канали АЦП мають роздільну здатність 12 біт. Це означає, що ви можете отримувати аналогові показання в діапазоні від 0 до 4095, де 0 відповідає 0, а 4095 - 3,3 В. Ви також можете задати дозвіл каналів в коді, а також діапазон АЦП.
Висновки АЦП ESP32 немає лінійного поведінки. Ви, ймовірно, не зможете відрізнити 0 від 0,1 або 3,2 від 3,3 В. Це необхідно враховувати при використанні контактів АЦП. Ви отримаєте поведінку, схожу на показану на наступному малюнку.
Цифро-аналоговий перетворювач (ЦАП)
ESP32 має два 8-бітових канали ЦАП для перетворення цифрових сигналів в аналогові вихідні сигнали напруги. Канали ЦАП:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
RTC GPIOs
ESP32 підтримує RTC GPIO. Висновки GPIO, підключені до RTC з низьким енергоспоживанням, можуть використовуватися, коли ESP32 знаходиться в режимі глибокого сну. Ці RTC GPIO можна використовувати для виведення ESP32 із режиму глибокого сну під час роботи співпроцесора з ультранизким енергоспоживанням (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)
Широтно-імпульсна модуляція (ШІМ)
Контролер світлодіодів ESP32 із ШІМ має 16 незалежних каналів, які можна налаштувати для генерації ШІМ-сигналів із різними характеристиками. Усі контакти, які можуть працювати як виходи, можуть використовуватися як контакти ШІМ (контакти GPIO з 34 до 39 не підтримують генерацію ШІМ).
Для встановлення ШИМ-сигналу необхідно визначити такі параметри в коді:
- частота сигналу;
- коефіцієнт заповнення;
- канал ШІМ;
- Порт GPIO, який ви хочете подати сигнал.
I2C
При використанні ESP32 з Arduino IDE слід використовувати стандартні контакти ESP32 I2C (підтримувані бібліотекою Wire):
- GPIO 21 (SDA)
- GPIO 22 (SCL)
Serial Peripheral Interface (SPI)
За промовчанням призначення контактів для SPI:
SPI | MOSI | MISO | CLK | CS |
---|---|---|---|---|
VSPI | GPIO 23 | GPIO 19 | GPIO 18 | GPIO 5 |
HSPI | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
UART
ESP32 підтримує до трьох інтерфейсів UART: UART0, UART1 і UART2, залежно від моделі плати ESP32, що використовується.
Порт UART0 зазвичай резервується для зв'язку з послідовним монітором під час завантаження та налагодження. Однак його також можна використовувати для зв'язку з іншими пристроями після завантаження коду, якщо монітор не потрібен. UART1 та UART2: доступні для зв'язку із зовнішніми пристроями. Як і I2C і SPI, ці контакти UART можна призначити будь-якому контакту GPIO ESP32. Однак, на більшості моделей плат вони мають стандартне призначення контактів. Для більшості плат ESP32 призначення контактів UART є наступним:
UART Port | TX | RX | Remarks |
---|---|---|---|
UART0 | GPIO 1 | GPIO 3 | Used for Serial Monitor and uploading code; Can be assigned to other GPIOs; |
UART1 | GPIO 10 | GPIO 9 | Must be assigned to other GPIOs |
UART2 | GPIO 17 | GPIO 16 | Can be assigned to other GPIOs |
Що стосується UART1 (GPIO 9 і GPIO10), ці контакти GPIO підключені до флеш-пам'яті ESP32 SPI, тому використовувати їх не можна. Щоб використати UART1 для зв'язку з іншими пристроями, необхідно визначити інші контакти за допомогою бібліотеки HardwareSerial.
Переривання
Всі GPIO можна настроїти на переривання.
Зв'язувальні контакти
Чіп ESP32 має такі зв'язувальні контакти:
- GPIO 0
- GPIO 2
- GPIO 4
- GPIO 5
- GPIO 12
- GPIO 15
Вони використовуються для переведення ESP32 у режим завантажувача або прошивки. На більшості плат з вбудованим USB/послідовним портом вам не потрібно турбуватися про стан цих контактів. Плата сама переводить контакти в стан, необхідний для прошивки чи завантаження. Докладніше про вибір режиму завантаження ESP32 можна дізнатися тут.
Однак, якщо до цих контактів підключено периферійні пристрої, можуть виникнути проблеми із завантаженням нового коду, прошивкою ESP32 або скиданням налаштувань плати. Якщо до цих контактів підключено периферійні пристрої, і виникають проблеми із завантаженням коду або прошивкою ESP32, можливо, ці пристрої заважають ESP32 перейти в потрібний режим. Ознайомтеся з документацією щодо вибору режиму завантаження, щоб дізнатися, як це зробити. Після скидання налаштувань, прошивки або завантаження ці контакти працюють як слід.
Контакти HIGH при завантаженні
Деякі GPIO змінюють стан на HIGH або виводять ШИМ-сигнали під час завантаження чи скидання. Це означає, що якщо до цих GPIO підключені виходи, ви можете отримати несподівані результати під час скидання або завантаження ESP32.
- GPIO 1
- GPIO 3
- GPIO 5
- GPIO 6–GPIO 11 (підключений до інтегрованої флеш-пам'яті SPI ESP32 – не рекомендується використовувати).
- GPIO 14
- GPIO 15
Enable (EN)
Вивід «Enable» (EN) – це контакт увімкнення регулятора напруги 3,3 В. Він підтягнутий до потенціалу, тому для відключення регулятора напруги 3,3 В його слід підключити до заземлення. Це означає, що цей контакт можна використовувати, підключивши його до кнопки, наприклад, для перезапуску ESP32.
Потужний струм GPIO
Абсолютний максимальний струм, споживаний кожним GPIO, становить 40 мА відповідно до розділу «Рекомендовані умови експлуатації» у технічному описі ESP32.
Вбудований датчик Холла ESP32
ESP32 також має вбудований датчик Холла, який виявляє зміни магнітного поля навколо нього.
На завершення
Сподіваємося, цей довідковий посібник з GPIO-портів ESP32 був вам корисним. Якщо у вас є додаткові поради щодо GPIO-портів ESP32, будь ласка, поділіться ними в коментарях нижче.