Найти в Дзене
Заметки кота

Вывод изображения на экран с карты памяти через ESP32: TFT+ESP32+SD

В этой статье разбирается минимальный рабочий пример подключения TFT-дисплея и SD-карты к ESP32 (модуль ESP-WROOM-32) и вывод изображения с карты памяти на экран. Рассматриваются важные моменты выбора пинов, организация работы с двумя шинами SPI и возможные места возникновения ошибок. Для работы примера нужны следующие библиотеки Arduino: Все они доступны через менеджер библиотек Arduino IDE. Библиотека TFT_eSPI требует конфигурации под конкретный дисплей и пины ESP32.
Вместо изменения стандартного User_Setup.h внутри библиотеки рекомендуется: Таким образом библиотека будет точно соответствовать выбранному драйверу дисплея (ST7789V), размерам экрана (240×320) и указанным пинам ESP32.
Код демонстрирует вывод JPEG-файла с карты памяти прямо на TFT. 👉 Посмотреть исходный код: https://gist.github.com/IvanBiv/49efdbb1e81c256e66e2821bb946481d Используемая картинка: Для стабильной работы TFT и SD с ESP32 необходимо: В результате можно получить минимальный рабочий проект, который выво
Оглавление

Подключение TFT-дисплея и SD-карты к ESP32 (ESP-WROOM-32)

В этой статье разбирается минимальный рабочий пример подключения TFT-дисплея и SD-карты к ESP32 (модуль ESP-WROOM-32) и вывод изображения с карты памяти на экран. Рассматриваются важные моменты выбора пинов, организация работы с двумя шинами SPI и возможные места возникновения ошибок.

-2

Схема подключения (ESP32-WROOM-32 + TFT ST7789V + SD)

TFT-дисплей (подключён к VSPI):

  • MOSI (DIN) → GPIO23
  • SCLK (CLK) → GPIO18
  • CS → GPIO27
  • DC → GPIO22
  • RESET → GPIO21
  • VCC → 3.3V
  • GND → GND

SD-карта (подключена к HSPI):

  • CS → GPIO5
  • SCK → GPIO25
  • MISO → GPIO32
  • MOSI → GPIO26
  • VCC → 3.3V (или 5V, если на модуле есть преобразователь уровня)
  • GND → GND

Почему так?

  • TFT вынесен на VSPI (стандартная шина для дисплеев, поддерживаемая библиотекой TFT_eSPI).
  • SD вынесена на HSPI, чтобы исключить конфликты при одновременной работе с экраном и картой.
  • Все выбранные GPIO безопасны для использования (не мешают загрузке ESP32).

-3

Внешние зависимости

Для работы примера нужны следующие библиотеки Arduino:

  • TFT_eSPI – для работы с TFT-дисплеем.
  • JPEGDecoder – для декодирования изображений формата JPEG.
  • SD (или SdFat, если нужна высокая скорость) – для работы с SD-картой.

Все они доступны через менеджер библиотек Arduino IDE.

Настройка TFT_eSPI (User_Setup.h)

Библиотека TFT_eSPI требует конфигурации под конкретный дисплей и пины ESP32.

Вместо изменения стандартного User_Setup.h внутри библиотеки рекомендуется:

  1. Скачать файл User_Setup.h, подготовленный под вашу схему подключения (дан в проекте):
    https://gist.github.com/IvanBiv/246f4a4bf0200bb3ef617958796416fa
  2. Открыть папку библиотеки TFT_eSPI (Arduino/libraries/TFT_eSPI).
  3. Заменить в ней файл User_Setup.h на скачанный.
  4. Пересобрать проект.

Таким образом библиотека будет точно соответствовать выбранному драйверу дисплея (ST7789V), размерам экрана (240×320) и указанным пинам ESP32.

Минимально рабочий код


Код демонстрирует вывод JPEG-файла с карты памяти прямо на TFT.

👉 Посмотреть исходный код:

https://gist.github.com/IvanBiv/49efdbb1e81c256e66e2821bb946481d

Используемая картинка:

TFT_ST7789V_240x320__ESP-WROOM-32__SD__show_jpg_file — Яндекс Диск

Возможные проблемы

  1. Цвета перепутаны – нужно изменить порядок в настройке библиотеки (TFT_RGB_ORDER на TFT_BGR или наоборот).
  2. SD не инициализируется – проверьте частоту SPI (часто стабильнее на 4–10 МГц), корректность подключения пинов и питание.
  3. ESP32 не стартует – значит, выбран неподходящий GPIO (занят системой загрузки).
  4. Изображение некорректное или рваное – скорее всего, TFT и SD подключены к одной SPI-шине, нужно развести их по VSPI и HSPI.

Как улучшить проект

  • Добавить меню для выбора изображения с карты.
  • Реализовать перелистывание картинок с помощью кнопок или сенсора.
  • Поддержка разных форматов (BMP, PNG).
  • Увеличение скорости работы за счёт оптимизации буфера вывода.

Итог

Для стабильной работы TFT и SD с ESP32 необходимо:

  • подключать их к разным SPI-шинам (VSPI и HSPI);
  • правильно подбирать GPIO, чтобы не задействовать BOOT-пины;
  • корректно настроить библиотеку TFT_eSPI.

В результате можно получить минимальный рабочий проект, который выводит изображения с SD-карты на TFT-экран.

Купить

www.avito.ru
www.avito.ru