LILYGO TTGO T-Display: ESP32, який одразу показує результат

Звичайна налагоджувальна плата вміє багато, але розмовляє з розробником переважно рядками в Serial Monitor. У LILYGO TTGO T-Display є переконливіший спосіб: вбудований кольоровий екран. Підключили датчик — і одразу бачите показання. Отримали дані по Wi‑Fi — вивели графік або статус. Зібрали автономний прилад — уже не треба додавати окремий дисплей, розводити його живлення й шукати місце в корпусі.

Саме тому T-Display цікавіша, ніж просто «ще одна плата на ESP32». Це майже готова лицьова панель пристрою: мікроконтролер, екран, дві кнопки, USB‑C і заряджання одноелементного Li‑Po на одній вузькій друкованій платі.

Розпіновка класичної LILYGO TTGO T-Display V1.1. Ліва гребінка: GND, GND, 21, 22, 17, 2, 15, 13, 12, GND, GND, 3V3; права: 3V3, 36, 37, 38, 39, 32, 33, 25, 26, 27, GND, 5V. Дисплей ST7789V підключено по MOSI 19, SCLK 18, CS 5, DC 16, RST 23 і BL 4, дві кнопки — на GPIO0 та GPIO35.
Класична T-Display, V1.1: обидві гребінки, шість ліній дисплея та дві кнопки. Натисніть, щоб відкрити в повному розмірі.

Про яку саме плату йдеться

Назва T-Display перетворилася на ціле сімейство, тому перша технічна пастка — узяти характеристики не тієї моделі. Тут розглядається класична LILYGO/TTGO T-Display на вихідному ESP32, з екраном 1,14 дюйма та роздільною здатністю 135 × 240 точок. Це не T-Display-S3: у S3 інший процесор, екран 1,9 дюйма, інше підключення дисплея, інші GPIO і є PSRAM.

Актуальна документація LILYGO вказує для класичної плати SoC ESP32-D0WDQ6. У конкретних партій можуть відрізнятися обсяг Flash і мікросхема USB–UART, тому напис продавця чи чужий приклад коду не замінюють перевірки реальної плати.

Технічні характеристики

ВузолХарактеристикаПрактичне значення
МікроконтролерESP32-D0WDQ6Класичний ESP32, не S2/S3/C3
Процесор2 ядра Xtensa LX6, до 240 МГцВистачає для Wi‑Fi, інтерфейсу, датчиків і фонової логіки одночасно
Пам’ять520 КБ вбудованої SRAM, PSRAM немаєВеликі зображення та подвійна буферизація потребують ощадливої витрати пам’яті
FlashЗазвичай 4 МБ; існує варіант 16 МБРозмір треба перевірити до вибору таблиці розділів
Бездротовий зв’язокWi‑Fi 2,4 ГГц 802.11 b/g/n; Bluetooth 4.2 BR/EDR і BLEПідходить для MQTT, HTTP, ESP‑NOW, BLE-маяків і зв’язку з телефоном
ДисплейIPS TFT 1,14″, контролер ST7789VКольоровий екран із хорошими кутами огляду
Роздільна здатність135 × 240 у портретній орієнтації; зазвичай 240 × 135 у альбомнійЗручно для однієї великої величини, кількох статусів або невеликого графіка
Інтерфейс дисплея4-провідний SPI; штатний профіль TFT_eSPI використовує 40 МГцЕкран швидкий, але займає кілька GPIO
КеруванняДві кнопки: GPIO0 та GPIO35Можна зробити меню, гортання екранів, підтвердження або пробудження
ЖивленняUSB‑C або одноелементний Li‑Po; вбудоване заряджанняОснова для переносного приладу без окремого зарядного модуля
Контроль акумулятораADC GPIO34, увімкнення кола вимірювання GPIO14Заряд можна показувати просто в інтерфейсі
USBUSB‑C через міст USB–UARTУ вихідного ESP32 немає вбудованого USB Device; порт служить живленню, прошивці та послідовному зв’язку
USB–UARTВ актуальному продажу CH9102; на старих ревізіях траплялися CP210xЗа проблем із драйвером треба дивитися фактичний VID/PID, а не гадати за назвою плати
Логічні рівні3,3 В; GPIO не є 5-вольт-суміснимиСигнал 5 В потребує узгодження рівнів
ГабаритиБлизько 51,5 × 25 ммПлата помітно вужча за більшість збірок «DevKit + окремий TFT»
Середовища розробкиArduino IDE, PlatformIO, ESP-IDF; можливий MicroPythonДля швидкого старту простіше Arduino, для суворішого проєкту — ESP-IDF

Пара чисел допомагає відчути масштаб. Повний кадр у форматі RGB565 займає 135 × 240 × 2 = 64 800 байтів, тобто приблизно 63,3 КіБ. Два кадрові буфери — це вже близько 126,6 КіБ, не рахуючи Wi‑Fi-стека, задач і даних застосунку. Тому на цій платі особливо корисні часткове перемальовування, спрайти помірного розміру та виведення лише змінених ділянок.

Чому вбудований дисплей справді цінний

Екран тут корисний не як оздоба, а як інструмент розробки. Він скорочує шлях від прототипу до речі, якою можна користуватися без комп’ютера.

Але екран задає й обмеження. Він невеликий і не сенсорний, а шість сигналів ESP32 уже зайняті дисплеєм. Постійно ввімкнене підсвічування помітно впливає на автономність. Для складної графіки бракує PSRAM, тому T-Display найкраще розкривається не як «мікросмартфон», а як ясний інтерфейс із кількох добре обраних показників.

Що вже підключено до ESP32

Функція на платіGPIOЩо важливо знати
TFT MOSI19Дані до ST7789V
TFT SCLK18Тактова лінія дисплея
TFT CS5Вибір дисплея; водночас завантажувальний strapping-пін ESP32
TFT DC16Перемикання «команда/дані»
TFT RESET23Апаратне скидання контролера екрана
Підсвічування TFT4Можна вмикати, вимикати й регулювати PWM
Кнопка на GPIO00Також BOOT/strapping: утримання під час скидання переводить ESP32 у завантажувач
Друга кнопка35Лише вхід; внутрішніх підтяжок у GPIO35 немає
Вимірювання Li‑Po34ADC1, лише вхід
Увімкнення кола вимірювання14Перед читанням акумулятора GPIO14 зазвичай переводять у високий рівень

Ці контакти розумно вважати зайнятими. SPI теоретично допускає спільне використання ліній MOSI/SCLK кількома пристроями, але для першого проєкту безпечніше залишити GPIO18 та GPIO19 екранові, а зовнішній SPI винести на вільні контакти.

Роз’єми: повний розбір контактів

Орієнтація в таблиці — дисплей до користувача, USB‑C знизу.

Ліва гребінка, згори вниз

КонтактМожливостіОбмеження та вдале застосування
GNDЗемляДва контакти поспіль
GNDЗемля—
GPIO21Цифровий вхід/вихідРекомендований SDA для I²C
GPIO22Цифровий вхід/вихідРекомендований SCL для I²C
GPIO17Цифровий вхід/вихідОдин із найбезпроблемніших вільних GPIO; підходить для UART TX/PWM
GPIO2ADC2, Touch2, цифровий I/OStrapping-пін: зовнішня схема не повинна нав’язувати хибний рівень під час старту
GPIO15ADC2, Touch3, цифровий I/OStrapping і JTAG; використовувати обережно
GPIO13ADC2, Touch4, цифровий I/OПеретинається з JTAG, але зазвичай придатний після завантаження
GPIO12ADC2, Touch5, цифровий I/OStrapping і JTAG; особливо небажане активне зовнішнє навантаження під час скидання
GNDЗемляДва контакти поспіль
GNDЗемля—
3V3Живлення 3,3 ВНе GPIO

Права гребінка, згори вниз

КонтактМожливостіОбмеження та вдале застосування
3V3Живлення 3,3 ВНе GPIO
GPIO36 / SVPADC1_CH0, цифровий вхідЛише вхід, немає внутрішньої підтяжки
GPIO37ADC1_CH1, цифровий вхідЛише вхід, немає внутрішньої підтяжки
GPIO38ADC1_CH2, цифровий вхідЛише вхід, немає внутрішньої підтяжки
GPIO39 / SVNADC1_CH3, цифровий вхідЛише вхід, немає внутрішньої підтяжки
GPIO32ADC1_CH4, Touch9, цифровий I/OЧудовий універсальний GPIO і аналоговий вхід за працюючого Wi‑Fi
GPIO33ADC1_CH5, Touch8, цифровий I/OЧудовий універсальний GPIO і аналоговий вхід за працюючого Wi‑Fi
GPIO25ADC2_CH8, DAC1, цифровий I/OСправжній 8-бітний ЦАП; зручний як вихід, PWM або SCK зовнішнього SPI
GPIO26ADC2_CH9, DAC2, цифровий I/OДругий справжній 8-бітний ЦАП; зручний як MOSI зовнішнього SPI
GPIO27ADC2_CH7, Touch7, цифровий I/OУніверсальний GPIO; зручний як MISO зовнішнього SPI
GNDЗемля—
5VШина живлення 5 ВНе GPIO і не ознака 5-вольтової логіки

SVP і SVN — історичні імена аналогових входів SENSOR_VP та SENSOR_VN, тобто GPIO36 і GPIO39. Це не контакти живлення.

Як обирати GPIO без прикрих несподіванок

Для звичайних цифрових входів і виходів насамперед підходять GPIO17, 21, 22, 25, 26, 27, 32 і 33. GPIO21/22 логічно зберегти під I²C.

Для другого SPI офіційний заводський приклад LILYGO використовує зручну групу:

Сигнал зовнішнього SPIGPIO
SCK25
MOSI26
MISO27
CS33

Для аналогових датчиків за ввімкненого Wi‑Fi слід обирати ADC1: GPIO32, 33, 36, 37, 38 або 39. На класичному ESP32 ADC2 ділить ресурс із Wi‑Fi, тому читання GPIO2/12/13/15/25/26/27 як аналогових входів за працюючого радіо може не спрацювати. GPIO36–39 при цьому годяться лише на вхід і потребують зовнішньої підтяжки, якщо датчикові чи кнопці вона потрібна.

Є ще три правила, які рятують особливо багато часу:

  1. GPIO0, 2, 5, 12 і 15 зчитуються під час скидання як strapping-піни. Підключена периферія не повинна примусово змінювати їхні стартові рівні.
  2. GPIO34–39 — лише входи й не мають програмних pull-up/pull-down. На самій платі GPIO34 і GPIO35 уже зайняті акумулятором та кнопкою.
  3. Навантаження не можна живити безпосередньо від GPIO. Реле, мотор, соленоїд і потужну стрічку вмикають через транзистор, MOSFET або драйвер із потрібним захистом.

Живлення та автономність

Плата приймає живлення по USB‑C і підтримує одноелементний Li‑Po через двоконтактний роз’єм 1,25 мм. Акумулятор можна заряджати на платі, а його напругу — вимірювати через GPIO34 після ввімкнення кола контролю GPIO14. Це зручно для власного індикатора заряду, але відсоток не можна надійно отримати простою лінійною формулою: напруга Li‑Po змінюється нелінійно, а ADC вихідного ESP32 потребує калібрування.

T-Display не варто плутати з ультраощадливим датчиком лише тому, що сам ESP32 вміє deep sleep. В аматорських вимірюваннях класичної плати виходили орієнтири близько 66 мА в активному режимі, 80–140 мА за роботи Wi‑Fi і приблизно 9 мА в light sleep. Це не паспортні гарантії: результат залежить від яскравості, прошивки, якості живлення та ревізії плати. Головний практичний висновок — гасити або притлумлювати підсвічування, вимикати радіо між сеансами й будити пристрій кнопкою чи таймером.

Що збирають на T-Display: три показові кейси

1. Локальний екран Home Assistant

Один із найприродніших сценаріїв — показувати температуру, енергоспоживання, стан опалення або будь-який об’єкт Home Assistant. В опублікованому проєкті плата через ESPHome виводить на екран температуру духовки, але той самий шаблон підходить для часу наступного потяга, рівня бака чи швидкості інтернету. Цінність кейсу в мінімальному залізі: для стаціонарної панелі досить самої T-Display і живлення від USB.

2. Табло відправлень біля дверей

Відкритий проєкт ttgo-departure-board перетворює плату на табло громадського транспорту. Репозиторій містить 33 варіанти прошивки для мереж у 17 країнах: ESP32 підключається до Wi‑Fi, синхронізує час по NTP, запитує API приблизно раз на 30 секунд і щосекунди оновлює зворотний відлік. Дві кнопки перемикають зупинки й керують екраном. Це добрий приклад інтерфейсу, де 240 × 135 точок не мало: якщо показувати лише напрямок, лінію, платформу та хвилини, інформації рівно стільки, скільки потрібно перед виходом із дому.

3. Крихітний бездротовий монітор

У 2025 році помітним став проєкт, який передає зменшене зображення робочого столу по Wi‑Fi на сумісну плату T-Display. Комп’ютер порівнює кадри й надсилає лише змінені пікселі, застосовуючи пакетування та RLE. На майже статичній картинці автор отримав до 60 кадрів/с, а за активного руху — близько 5 кадрів/с із затримкою менш ніж 100 мс у хорошій мережі. Це не практична заміна монітора, зате чудова демонстрація того, як алгоритм економії трафіку дає змогу вичавити несподівано багато з ESP32 і маленького SPI-дисплея. Важливо: у проєкті використано сумісний TENSTAR із 16 МБ Flash, тому цю характеристику не можна автоматично переносити на будь-яку LILYGO.

Інший популярний пласт — міні-ігри. Дві кнопки, кольоровий екран і готові бібліотеки дали змогу зробити Space Shooter, Breakout і невеликі портативні збірки з кількома іграми. Це водночас розвага й непоганий навчальний стенд для спрайтів, частоти кадрів, обробки кнопок і керування пам’яттю.

Та сама T-Display у трьох сценаріях: із датчиком температури та показанням 22,6 °C на екрані, панеллю розумного дому з цифрами 428 Вт і 22,6 градуса та запущеною грою з підключеним до роз’єму Li‑Po акумулятором.
Одна плата, три ролі: переносний вимірювач, настільна панель і кишенькова консоль.

Чотири збірки каналу на T-Display

Канал Build Mode поки що чотири рази збирав щось на T-Display. В одному відео плата стає Bluetooth-колонкою: ESP32 приймає музику через A2DP, підсилювач MAX98357A подає звук на маленький динамік, а на екрані — живий аналізатор спектра. В іншому вона зчитує датчик руху MPU-6500 через SPI, а сторінка в браузері перетворює його дані на 3D-модель. У третьому вона утримує раму на тязі одного пропелера: MPU-6500 вимірює нахил, а ПІД-регулятор на ESP32 керує мотором через DRV8833. У четвертому вона працює як рівень і компас у надрукованому на 3D-принтері корпусі, разом з MPU-6500, магнітометром BMM150 і акумулятором 18650.

Що найчастіше шукають — і чому

У верхніх результатах за запитами про класичну T-Display повторюються чотири теми: перший запуск, налаштування TFT_eSPI, розпіновка та готові проєкти — годинники, погода, Home Assistant, MQTT-панелі та ігри. Це точно відображає сильні й слабкі сторони плати.

Людей приваблює можливість швидко отримати гарний результат, але найчастіше вони спотикаються об конфігурацію конкретного дисплея. Для TFT_eSPI потрібен профіль Setup25_TTGO_T_Display.h; у ньому зафіксовані ST7789V, геометрія 135 × 240 і правильні GPIO. В альтернативних стеках доводиться враховувати зміщення активної області матриці, порядок кольорів BGR і окреме керування підсвічуванням. Показова несправність: програма й сам LCD можуть працювати, але екран здається чорним просто тому, що GPIO4 не ввімкнув підсвічування.

Мінімальний тест для Arduino після вибору профілю TFT_eSPI має такий вигляд:

#include <TFT_eSPI.h>

TFT_eSPI tft;

void setup() {
  pinMode(4, OUTPUT);
  digitalWrite(4, HIGH);

  tft.init();
  tft.setRotation(1);              // 240 × 135
  tft.fillScreen(TFT_BLACK);
  tft.setTextColor(TFT_CYAN, TFT_BLACK);
  tft.drawString("Wi-Fi: OK", 12, 12, 4);
}

void loop() {}

В Arduino IDE виробник рекомендує профіль ESP32 Dev Module, частоту CPU 240 МГц, QIO, Flash 4 МБ для звичайної версії, вимкнену PSRAM і швидкість завантаження 921600. Якщо прошивка не стартує або завантажувач не відповідає, GPIO0 використовується як BOOT: утримати кнопку, коротко натиснути Reset, відпустити BOOT і повторити завантаження.

Сильні та слабкі сторони

ПлюсиМінуси
Кольоровий IPS уже встановлено й перевірено схемою платиЕкран невеликий, без сенсора
Wi‑Fi, Classic Bluetooth і BLEПокоління ESP32 старе: немає нативного USB і сучасних можливостей ESP32-S3
Дві кнопки, USB‑C, заряджання Li‑Po, контроль батареїНемає PSRAM; важка графіка швидко з’їдає SRAM
Компактніша за зв’язку DevKit + окремий TFTДисплей і сервісні вузли займають помітну кількість GPIO
Є Arduino, PlatformIO, ESP-IDF, TFT_eSPI і LVGL-прикладиУ ADC2 конфлікт із Wi‑Fi, а GPIO36–39 працюють лише на вхід
Добре підходить для автономних панелей і вимірювачівПідсвічування та Wi‑Fi обмежують час роботи від акумулятора
Два справжні ЦАП на GPIO25/26 і багато ADC1-входівРевізії відрізняються Flash і USB–UART, тому специфікацію конкретного примірника треба перевіряти

Підсумок

LILYGO TTGO T-Display цінна не рекордними характеристиками, а вдалим компонуванням. Вона перетворює невидиму роботу мікроконтролера на зрозумілий інтерфейс: пристрій одразу повідомляє стан, показує вимірювання, приймає команди двома кнопками й може працювати від акумулятора.

Для годинника на столі, Home Assistant-індикатора, переносного вимірювача, MQTT-пульта, міні-гри чи мережевого табло класична T-Display лишається дуже раціональною основою. Головне — пам’ятати про її вік і межі: не плутати з T-Display-S3, не розраховувати на PSRAM, берегти завантажувальні GPIO, використовувати ADC1 за активного Wi‑Fi і перевіряти обсяг Flash конкретної плати. Якщо проєктові вистачає 240 × 135 точок і двох кнопок, вбудований екран заощаджує не лише деталі, а й найдорожчий ресурс прототипування — час між ідеєю та першим наочним результатом.

Усе сказане вище, стиснуте в платформонезалежний апаратний довідник, за яким може працювати агент-програміст: класи розподілу виводів, електричні правила, канонічний GPIO-матрикс і машиночитний профіль плати.