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

Про яку саме плату йдеться
Назва 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 | Заряд можна показувати просто в інтерфейсі |
| USB | USB‑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-стека, задач і даних застосунку. Тому на цій платі особливо корисні часткове перемальовування, спрайти помірного розміру та виведення лише змінених ділянок.
Чому вбудований дисплей справді цінний
Екран тут корисний не як оздоба, а як інструмент розробки. Він скорочує шлях від прототипу до речі, якою можна користуватися без комп’ютера.
- Миттєвий зворотний зв’язок. Пристрій сам показує, чи підключився він до Wi‑Fi, яку IP-адресу отримав, що повернув датчик і чому не спрацював виконавчий вузол.
- Локальний інтерфейс. Дві кнопки й кольоровий екран дають змогу зробити меню, кілька сторінок, попередження та прості налаштування без мобільного застосунку.
- Діагностика на місці. Якщо датчик встановлено в електрощиті, теплиці чи на верстаті, ключові параметри видно поруч з обладнанням, а не лише в хмарі.
- Компактний завершений прототип. Після додавання акумулятора й корпусу T-Display уже схожа на кишеньковий прилад, пульт або мініатюрну панель моніторингу.
- Швидка демонстрація ідеї. Замовникові чи колезі простіше оцінити живий екран зі статусами, ніж потік чисел у терміналі.
Але екран задає й обмеження. Він невеликий і не сенсорний, а шість сигналів ESP32 уже зайняті дисплеєм. Постійно ввімкнене підсвічування помітно впливає на автономність. Для складної графіки бракує PSRAM, тому T-Display найкраще розкривається не як «мікросмартфон», а як ясний інтерфейс із кількох добре обраних показників.
Що вже підключено до ESP32
| Функція на платі | GPIO | Що важливо знати |
|---|---|---|
| TFT MOSI | 19 | Дані до ST7789V |
| TFT SCLK | 18 | Тактова лінія дисплея |
| TFT CS | 5 | Вибір дисплея; водночас завантажувальний strapping-пін ESP32 |
| TFT DC | 16 | Перемикання «команда/дані» |
| TFT RESET | 23 | Апаратне скидання контролера екрана |
| Підсвічування TFT | 4 | Можна вмикати, вимикати й регулювати PWM |
| Кнопка на GPIO0 | 0 | Також BOOT/strapping: утримання під час скидання переводить ESP32 у завантажувач |
| Друга кнопка | 35 | Лише вхід; внутрішніх підтяжок у GPIO35 немає |
| Вимірювання Li‑Po | 34 | ADC1, лише вхід |
| Увімкнення кола вимірювання | 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 |
| GPIO2 | ADC2, Touch2, цифровий I/O | Strapping-пін: зовнішня схема не повинна нав’язувати хибний рівень під час старту |
| GPIO15 | ADC2, Touch3, цифровий I/O | Strapping і JTAG; використовувати обережно |
| GPIO13 | ADC2, Touch4, цифровий I/O | Перетинається з JTAG, але зазвичай придатний після завантаження |
| GPIO12 | ADC2, Touch5, цифровий I/O | Strapping і JTAG; особливо небажане активне зовнішнє навантаження під час скидання |
| GND | Земля | Два контакти поспіль |
| GND | Земля | — |
| 3V3 | Живлення 3,3 В | Не GPIO |
Права гребінка, згори вниз
| Контакт | Можливості | Обмеження та вдале застосування |
|---|---|---|
| 3V3 | Живлення 3,3 В | Не GPIO |
| GPIO36 / SVP | ADC1_CH0, цифровий вхід | Лише вхід, немає внутрішньої підтяжки |
| GPIO37 | ADC1_CH1, цифровий вхід | Лише вхід, немає внутрішньої підтяжки |
| GPIO38 | ADC1_CH2, цифровий вхід | Лише вхід, немає внутрішньої підтяжки |
| GPIO39 / SVN | ADC1_CH3, цифровий вхід | Лише вхід, немає внутрішньої підтяжки |
| GPIO32 | ADC1_CH4, Touch9, цифровий I/O | Чудовий універсальний GPIO і аналоговий вхід за працюючого Wi‑Fi |
| GPIO33 | ADC1_CH5, Touch8, цифровий I/O | Чудовий універсальний GPIO і аналоговий вхід за працюючого Wi‑Fi |
| GPIO25 | ADC2_CH8, DAC1, цифровий I/O | Справжній 8-бітний ЦАП; зручний як вихід, PWM або SCK зовнішнього SPI |
| GPIO26 | ADC2_CH9, DAC2, цифровий I/O | Другий справжній 8-бітний ЦАП; зручний як MOSI зовнішнього SPI |
| GPIO27 | ADC2_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 використовує зручну групу:
| Сигнал зовнішнього SPI | GPIO |
|---|---|
| SCK | 25 |
| MOSI | 26 |
| MISO | 27 |
| CS | 33 |
Для аналогових датчиків за ввімкненого Wi‑Fi слід обирати ADC1: GPIO32, 33, 36, 37, 38 або 39. На класичному ESP32 ADC2 ділить ресурс із Wi‑Fi, тому читання GPIO2/12/13/15/25/26/27 як аналогових входів за працюючого радіо може не спрацювати. GPIO36–39 при цьому годяться лише на вхід і потребують зовнішньої підтяжки, якщо датчикові чи кнопці вона потрібна.
Є ще три правила, які рятують особливо багато часу:
- GPIO0, 2, 5, 12 і 15 зчитуються під час скидання як strapping-піни. Підключена периферія не повинна примусово змінювати їхні стартові рівні.
- GPIO34–39 — лише входи й не мають програмних
pull-up/pull-down. На самій платі GPIO34 і GPIO35 уже зайняті акумулятором та кнопкою. - Навантаження не можна живити безпосередньо від 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
Канал 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-матрикс і машиночитний профіль плати.



