Development boards with TFT displays are effective and powerful IOT tools. Here are a few notes gained from working with two similar units, and the issues raised in moving applications between them.
The units at hand are the LILYGO ESP32 S2 T8 Display board, and the TTGO ESP32 T Display. To compare them:
| TTGO T Display | LILYGO S2 | |
![]() | ![]() | |
| Display | ST7789 240x135px 1.14 inch | ST7789 240x135px 1.14 inch |
| Size | 51.52 x 25.04 mm | 65.48 x 26.025 mm |
| Generation | – | S2 (Must select ESP32 S2 board to compile) |
| Flash size | 4MB or 16MB | 4MB |
| SDCard | Can be added | Onboard* |
| Battery support | Yes, plug included | Yes, plug included |
| Switches | RST, 2 general use | Power, RST, 1 General use |
| GPIO | 13 inc 7 touch | 24 inc 13 touch |
The T Display is smaller and has fewer IO pins, lacks the SD card socket, but is 2/3 shorter. Performance is similar, but I have yet to run any tests apart from getting functionality and learning the “traps”.
Both connect via USB-C which is reassuring.
How good is the (unloved) ESP32 S2 ?

Getting this one going wasn’t easy.
Unlike the T-Display, there is very little information about this one apart from the manufacturer’s GitHub (which is useful), but there’s a distinct shortage of enthusiasts and projects !?
Using the ST7789 libraries all looked well but the screen remained stubbornly blank. The needs to be turned on (GPIO 33). Once settled, it’s a powerful board and despite the surprising lack of resources, does almost everything without complaint. My only reservation was in getting the SD card to cooperate with Bodmer’s TFT_eSPI library, however I am prepared to think that this is peculiar to my setup. Otherwise, as examples in dMeccano show, the results are brilliant. Powerful monitoring and useful display. Using wifimanager.h (my preferred wifi) is rock solid, and the battery support means that a small monitor can be made portable and inconspicuous. Files stored in LittleFS are reliably and quickly handled. I have broken the power switch on one of these, but it’s clearly not meant for regular use.
Programming the S2 means selecting the ESP32S2 board. This means having an up to date (or development) boards manager that includes support for S2.
Occasionally it stumbles at 921600 baud uploads but is happy with 460800 baud. Compile with PSRAM enabled.
Talking to the screen needs the following setup:
Define these in the code if using ST7789.h
TFT_CS 34
TFT_RST 38
TFT_DC 37
TFT_MOSI 35
TFT_SCLK 36
TFT_BL 33
// Turn on the Backlight:
void setup() {
pinMode(33, OUTPUT);
digitalWrite(33, HIGH);
.....
}
If using TFT_eSPI to control the screen, create a User_Setup.h (or selected option) that includes the above definitions. There’s no need to address the Backlight in this case, as TFT_eSPI does that.
As if to confirm it’s lack of popularity, the S2 is now proving hard to source.
Slightly quirky ESP32 T-Display ?

Obviously not an S2 chip, and much loved compared with the S2. This board has many admirers and good online support.
In first use, it throws up a problem for OSX users, in that the comms protocol needs updating. This is evident when the Mac refuses to upload to the new port.
If this sounds like you, you’ll need https://github.com/WCHSoftGroup/ch34xser_macos to update the serial drivers.
Simple fix, but a “stone in the road”…
The same provisos apply regarding screen setups as S2 except the pinouts are different.
Define these in the code if using ST7789.h
// Screen settings for ESP32 T-Display
TFT_CS 5
TFT_RST 23
TFT_DC 16
TFT_MOSI 19
TFT_SCLK 18
TFT_BL 4
// Turn on the Backlight:
void setup() {
pinMode(4, OUTPUT);
digitalWrite(4, HIGH);
.....
}
Again, if using TFT_eSPI to control the screen, create a User_Setup.h (or selected option) that includes the above definitions. There’s no need to address the Backlight in this case, as TFT_eSPI does that.
The T display is a very powerful board. It is well supported, not expensive and available! Next project will be to add an SD card module.
Pin Reference for both variants
| Function | Notes | TTGO-T-Display | LILYGO S2 T8 Display |
| TFT | TFT_BL | 4 | 33 |
| TFT_CS | 5 | 34 | |
| TFT_MOSI | 19 | 35 | |
| TFT_SCLK | 18 | 36 | |
| TFT_DC | 16 | 37 | |
| TFT_RST | 23 | 38 | |
| TFT_MISO | -1 | ||
| SD Card | I2C_SDA 21 | SD_CS 10 | |
| I2C_SCL 22 | SD_MOSI 11 | ||
| RST 23 | SD_SCK12 | ||
| SD_MISO 13 | |||
| Get Voltage | ADC_EN | 14 | |
| ADC_PIN | 9 | 34 | |
| Button 1 | 0 | Reset.. | |
| Button 2 | 35 | 0 |
I2C reference for SDcard on T-Display is common usage.
