Для сложных проектов на базе ESP32 могут потребоваться несколько устройств, экран, управление, различные модули. Скажем наличие экрана позволит получать информацию, а если он сенсорный 2.8" TFT ILI9341, то еще и вводить ее. Это очень удобно! Если к усьройству подключить еще и радиомодуль, то появляется прекрасная возможность передавать информацию на расстояние.
Собственно здесь возникает лишь один вопрос, какие пины выбрать, чтобы проект не забуксовал из-за несогласованности получения и выдачи сигналов на ESP32. Эта статья как раз и станет гидом в это вопросе.
Итак, пинов ESP32 достаточно для одновременного подключения обоих устройств. Рекомендуемая распиновка с разделением SPI-интерфейсов:
Устройство | Сигнал | Пин ESP32 | Примечание |
---|---|---|---|
TFT ДИСПЛЕЙ | |||
VCC |
3.3V |
Перемычка J1 замкнута |
|
GND |
GND |
||
CS |
GPIO15 |
HSPI Chip Select | |
DC |
GPIO2 |
||
RST |
EN |
Автосброс | |
MOSI |
GPIO13 |
HSPI MOSI | |
SCK |
GPIO14 |
HSPI CLK | |
MISO |
GPIO12 |
HSPI MISO | |
LED |
GPIO21 |
ШИМ-управление подсветкой | |
СЕНСОР (XPT2046) | |||
T_CS |
GPIO33 |
||
T_IRQ |
GPIO36 |
Только ввод | |
LoRa E32 | |||
M0 |
GPIO22 |
Режим работы (обычно LOW ) |
|
M1 |
GPIO23 |
Режим работы (обычно LOW ) |
|
AUX |
GPIO34 |
Статус модуля (только ввод) | |
TX |
GPIO17 |
UART TX (ESP32 → LoRa) | |
RX |
GPIO16 |
UART RX (ESP32 ← LoRa) | |
VCC |
3.3V |
||
GND |
GND |
🔌 Ключевые особенности распиновки:
-
Разделение интерфейсов:
-
TFT+сенсор используют HSPI (пины
12,13,14
) -
LoRa E32 использует UART2 (пины
16,17
) -
Нет конфликтов SPI/UART
-
-
Управление LoRa:
-
Пины
M0/M1
вLOW
= режим передачи данных -
AUX
- мониторинг состояния модуля (не обязателен, но полезен)
-
-
Свободные пины ESP32:
GPIO4, 5, 18, 19, 25, 26, 27, 32, 35, 39
Могут использоваться для кнопок, SD-карты, сенсоров.
⚠️ Важные нюансы:
-
Питание:
-
Общий источник 3.3V: ESP32 выдает до 600 мА, но при одновременной работе:
-
TFT: ~120 мА (пик)
-
LoRa: ~120 мА (при передаче)
-
Рекомендация: Внешний источник 3.3V или отдельный DC-DC преобразователь.
-
-
-
Прошивка LoRa:
#include <SoftwareSerial.h> SoftwareSerial loraSerial(16, 17); // RX=16, TX=17 void setup() { pinMode(22, OUTPUT); // M0 pinMode(23, OUTPUT); // M1 digitalWrite(22, LOW); digitalWrite(23, LOW); // Активация режима передачи loraSerial.begin(9600); }
-
Конфликты пинов:
-
Избегайте
GPIO6-11
(используются для Flash-памяти) -
GPIO34/36/39
- только ввод, без подтяжки.
-
🔄 Альтернатива для SPI-LoRa:
Если у вас SPI-версия LoRa E32:
Сигнал | Пин ESP32 | |
---|---|---|
SCK |
GPIO18 |
VSPI CLK |
MISO |
GPIO19 |
VSPI MISO |
MOSI |
GPIO5 |
VSPI MOSI |
CS |
GPIO4 |
|
GND /VCC |
GND /3.3V |
В этом случае TFT остаётся на HSPI (12,13,14
), LoRa на VSPI (5,18,19
).