Для сложных проектов на базе 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  

🔌 Ключевые особенности распиновки:

  1. Разделение интерфейсов:

    • TFT+сенсор используют HSPI (пины 12,13,14)

    • LoRa E32 использует UART2 (пины 16,17)

    • Нет конфликтов SPI/UART

  2. Управление LoRa:

    • Пины M0/M1 в LOW = режим передачи данных

    • AUX - мониторинг состояния модуля (не обязателен, но полезен)

  3. Свободные пины ESP32:

     
    GPIO4, 5, 18, 19, 25, 26, 27, 32, 35, 39 

    Могут использоваться для кнопок, SD-карты, сенсоров.

⚠️ Важные нюансы:

  1. Питание:

    • Общий источник 3.3V: ESP32 выдает до 600 мА, но при одновременной работе:

      • TFT: ~120 мА (пик)

      • LoRa: ~120 мА (при передаче)

      • Рекомендация: Внешний источник 3.3V или отдельный DC-DC преобразователь.

  2. Прошивка LoRa:

     
    Download
    #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);
    }
  3. Конфликты пинов:

    • Избегайте 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).