Hardware Matrix

Is ST7735 1.8 Color TFT Display (128x160) Compatible with Home Assistant (ESPHome)?

Verdict Badge
VERDICT: [ COMPATIBLE (MANUAL CONFIG REQUIRED) ]
Protocol: SPI / 3.3V
Bridge Needed: NO

Electrical Specifications

Always confirm pin assignments against the manufacturer datasheet before wiring.

Not yet documented. Electrical specifications for this device have not been confirmed against a manufacturer datasheet, so none are shown here rather than showing estimates. Submit verified specifications if you have the datasheet to hand.

Compatibility Overview

1.8 inch full-color TFT display for compact sensor dashboards status monitors and menu screens.

Wiring ST7735 1.8 Color TFT Display (128x160) to ESP32

Module pin ESP32 Note
VCC 3V3 Bare panels are 3.3V parts. Some Chinese 1.8" modules carry a regulator and a J1 jumper: bridged, they take 3.3V logic directly.
GND GND
SCK / SCL GPIO18 SPI clock. The silkscreen borrows I2C names; nothing here is I2C.
SDA / MOSI GPIO23
CS GPIO5
A0 / DC GPIO16 Data/command select.
RESET GPIO17
LED / BL GPIO4 Backlight. Through the PWM output in the config it becomes a dimmable light; tied to 3.3V it is simply on.

Host pins are the ones the configuration on this page uses. Move a pin here and change it in the YAML — they are documented together so they cannot disagree.

Technical Specification Matrix

Feature / Attribute Specification / Status
Hardware Protocol SPI / 3.3V
Bridge Required NO
Border Router Needed None
Hardware Capabilities & Peripherals
Color TFT Screen Backlight Dimmer

Note: these entities come from the ESPHome configuration you flash — each one needs its matching component in that YAML before it appears.

Pairing Complexity Plug-and-Play
Factory Reset Instruction Hold BOOT button for 2s.

Wire, Flash, Adopt, Check

1

Wire it up

Follow the wiring table above. The ESP32 pins there are the ones the configuration uses, so if you move one, change it in both places.

2

Flash the configuration

Create a new device in the ESPHome dashboard (the Home Assistant add-on) and paste the configuration below into it, or save it as emb_esp32_st7735_esphome.yaml and run esphome run emb_esp32_st7735_esphome.yaml. The first flash goes over USB. If it is not detected, hold BOOT button for 2s to put it in download mode. Every update after that is over the air.

3

Adopt it in Home Assistant

Settings → Devices & Services. A node on the same network shows up as a discovered ESPHome device within a minute of joining Wi-Fi; choose Configure and enter the API encryption key from your secrets.yaml. If discovery does not find it, add the ESPHome integration by hand with the node's IP address.

4

Check it works

Hello appears top-left on a black background with the backlight on. A shifted image with a noisy stripe is the model; a lit backlight and nothing else is the SPI wiring or the DC pin; a dark screen with a picture faintly visible is the backlight polarity.

ESPHome Configuration

Starting configuration for ST7735 1.8 Color TFT Display (128x160) on ESP32. Untested on hardware — verify wiring and pins against your own board.

# ESPHome configuration for ST7735 1.8 Color TFT Display (128x160)
# Host: ESP32. Pin numbers below are host-side defaults — any free
# GPIO will do, and you should change them to match your own wiring.

esphome:
  name: emb_esp32_st7735_esphome
  friendly_name: "ST7735 1.8 Color TFT Display (128x160)"

esp32:
  board: esp32dev
  framework:
    type: esp-idf

logger:

api:
  encryption:
    key: !secret api_encryption_key

ota:
  - platform: esphome
    password: !secret ota_password

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

spi:
  clk_pin: GPIO18
  mosi_pin: GPIO23
  miso_pin: GPIO19

# model names the panel variant by the colour of the tab on the protective
# film the glass shipped with (black, green or red). The variants differ in
# their column and row offsets, so a wrong model shows the image shifted with
# a band of noise along one edge.
display:
  - platform: st7735
    model: INITR_BLACKTAB
    cs_pin: GPIO5
    dc_pin: GPIO16
    reset_pin: GPIO17
    rotation: 0
    device_width: 128
    device_height: 160
    col_start: 0
    row_start: 0
    eight_bit_color: true
    update_interval: 1s
    lambda: |-
      it.print(0, 0, id(roboto), "Hello");

font:
  - file: "gfonts://Roboto"
    id: roboto
    size: 14

# The LED pin drives the backlight. Through a PWM output it becomes a
# dimmable light in Home Assistant instead of a wire tied to 3.3V.
output:
  - platform: ledc
    pin: GPIO4
    id: backlight_pwm

light:
  - platform: monochromatic
    output: backlight_pwm
    name: "Backlight"
    restore_mode: ALWAYS_ON

Before you flash: the !secret values come from your secrets.yaml, and the GPIO numbers are host-side defaults rather than properties of this part — change them to match how you actually wired it.

What Appears in Home Assistant

Backlight
light

Dimmable, from the ledc output on the LED pin. Displays themselves have no entity; pull state in with text_sensor: platform: homeassistant.

Known Problems and Fixes

Tab colour is the model

The colour of the tab on the protective film — black, green or red — names the panel variant, and the variants differ in column and row offsets. INITR_BLACKTAB in the config is the common one. A wrong model shows the image shifted with a band of noise along one edge; try the other tabs before anything else.

SDA and SCL are SPI

The silkscreen uses I2C names for SPI lines. Wiring them to GPIO21 and GPIO22 and adding an i2c: block is the first thing that goes wrong with this display.

Colour depth versus RAM

eight_bit_color: true halves the frame buffer, which on an ESP32 barely matters (the full 16-bit buffer is 40kB) but on an ESP8266 is the difference between building and not. Set it false for full colour on an ESP32.

Tearing

If the image tears or shows stray lines, lower the SPI clock: data_rate: 20MHz on the display block.

Backlight current

The LED pin draws around 20mA through the module's own resistor, which a GPIO can supply. Modules with a transistor on the backlight need the pin inverted; the picture is there but dark if so.

🛠️ Hardware Correction & Field Contributions

Report a Pinout Error or Submit Tested Code Snippets

Found a pin mapping quirk or built a custom ESPHome YAML driver for ST7735 1.8 Color TFT Display (128x160)? Submit a pull request or report corrections to our index.

Frequently Asked Questions

Does ST7735 1.8 Color TFT Display (128x160) work without an internet connection?
100% local rendering via ESPHome display.
How is ST7735 1.8 Color TFT Display (128x160) powered and wired to the host board?
3.3V VCC SPI (CS=GPIO5 DC=GPIO16 RST=GPIO17 SCK=GPIO18 SDA=GPIO23).
How does the host board reach Home Assistant (ESPHome)?
Wi-Fi 2.4GHz.

Alternatives

Related Compatibility Matrix Guides