T5 E-Paper S3 Pro

I just got the newer (newest) rev of the T5 E-Paper S3… which is the T5 E-Paper S3 Pro.

Lora SX1262
Touch GT911 (0x5D)
Driver IC ED047TC1 (4.7 inches, 960x540 , 16 gray)
Battery Capacity 1500mAh
Battery Chip BQ25896 (0x6B), BQ27220 (0x55)
RTC PCF85063 (0x51)

I have the RTC, touch, home, and a few small things working, but not the display. I have been trying all the random display components for older models out there, but nothing works.

A component for the touch of these doesn’t work, isn’t documented, and, from what I can tell, has not been used on GitHub. I wish whoever is accepting PR’s for this project would demand documentation…

Anyhow…

Regular boilerplate and this is working…so I thought I would chuck out a thread.

If I have the energy, I might start hacking at the older components to see if I can get one updated with the newer library.

I would like thoughts and comments on what these two battery controllers are doing. I am digging through the code now and am unsure why I care about them (because I am guessing they help me go into low power, which is the idea here, making a wireless home controller with wireless charging!)


i2c:
  sda: GPIO06
  scl: GPIO05
  scan: true

time:
  - platform: pcf85063
    update_interval: never
    address: 0x51
  - platform: homeassistant
    on_time_sync:
      then:
        pcf85063.write_time:

touchscreen:
  - platform: gt911
    id: lilygo_touchscreen
    interrupt_pin: GPIO15
    address: 0x5D
    #setup_priority: -100

    on_touch:
      - lambda: |-
            ESP_LOGI("cal", "x=%d, y=%d, x_raw=%d, y_raw=%0d",
                touch.x,
                touch.y,
                touch.x_raw,
                touch.y_raw
                );
1 Like

BTW is classic sloppy fresh-outtah-China style, I’m finding mistakes in the docs already, the i2c pins are wrong, and so forth.

I’m also having issues getting the display to work, if you figure it out please update the thread!

I’ve recently got one of these devices, hoping to be able to use it as a handy remote control.

I’ve got running and updating fine, with the RTC seemingly working fine, i2c scan completes, shows expected results. Expander populates 8 pins as expected.

This is my config:

esphome: 
  name: s5dev
  friendly_name: "S5 Pro Dev"
  min_version: 2024.11.0
  name_add_mac_suffix: false
  on_boot:
    then:
      pcf85063.read_time:
  platformio_options:
    board_build.f_flash: 80000000L
    board_build.flash_mode: qio
    board_build.psram_type: opi
    board_build.arduino.memory_type: qio_opi
    build_flags: 
      - "-DBOARD_HAS_PSRAM" #OK
      - "-DARDUINO_USB_MODE=1" #OK
      - "-DARDUINO_USB_CDC_ON_BOOT=1" #OK
  libraries:
    - "SPI"
i2c:
  sda: GPIO39
  scl: GPIO40
  scan: true
  id: bus_a
esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: arduino
  variant: esp32s3
  flash_size: 16MB

# Enable logging
logger:
improv_serial:
# Allow Over-The-Air updates
ota:
- platform: esphome

web_server:
  port: 80

time:
  - platform: pcf85063
    id: RTCTime
    timezone: "America/Chicago"

wifi:
  ssid: !secret iot_wifi
  password: !secret wifi_password

pca9554:
  - id: 'pca9554a_device'
    address: 0x20

sensor:
  # WiFi Signal     
  - platform: wifi_signal
    name: "WiFi Signal Sensor"
    id: wifisignal
    update_interval: 20s

The WiFi Connects fine, shows signal etc. Haven’t been able to get any combination of anything to make the screen do anything. Would be a great portable controller!

[16:28:14][I][logger:171]: Log initialized
[16:28:14][C][safe_mode:079]: There have been 0 suspected unsuccessful boot attempts
[16:28:14][D][esp32.preferences:114]: Saving 1 preferences to flash...
[16:28:14][D][esp32.preferences:143]: Saving 1 prefere[I][app:100]: ESPHome version 2025.3.3 compiled on Apr  8 2025, 21:22:07
[16:28:14][C][wifi:600]: WiFi:
[16:28:14][C][wifi:428]:   Local MAC: [redacted]
[16:28:14][C][wifi:433]:   SSID: [redacted]
[16:28:14][C][wifi:436]:   IP Address: [redacted]
[16:28:14][C][wifi:440]:   BSSID: [redacted]
[16:28:14][C][wifi:441]:   Hostname: 's5dev'
[16:28:14][C][wifi:443]:   Signal strength: -40 dB ▂▄▆█
[16:28:14][C][wifi:447]:   Channel: 11
[16:28:14][C][wifi:448]:   Subnet: 255.255.252.0
[16:28:14][C][wifi:449]:   Gateway: 10.0.0.1
[16:28:14][C][wifi:450]:   DNS1: 10.0.0.1
[16:28:14][C][wifi:451]:   DNS2: 0.0.0.0
[16:28:14][C][pca9554:048]: PCA9554:
[16:28:14][C][pca9554:049]:   I/O Pins: 8
[16:28:14][C][pca9554:050]:   Address: 0x20
[16:28:14][C][logger:177]: Logger:
[16:28:14][C][logger:178]:   Max Level: DEBUG
[16:28:14][C][logger:179]:   Initial Level: DEBUG
[16:28:14][C][logger:181]:   Log Baud Rate: 115200
[16:28:14][C][logger:182]:   Hardware UART: USB_CDC
[16:28:14][C][i2c.arduino:071]: I2C Bus:
[16:28:14][C][i2c.arduino:072]:   SDA Pin: GPIO39
[16:28:14][C][i2c.arduino:073]:   SCL Pin: GPIO40
[16:28:14][C][i2c.arduino:074]:   Frequency: 50000 Hz
[16:28:14][C][i2c.arduino:086]:   Recovery: bus successfully recovered
[16:28:14][I][i2c.arduino:096]: Results from i2c bus scan:
[16:28:14][I][i2c.arduino:102]: Found i2c device at address 0x20
[16:28:14][I][i2c.arduino:102]: Found i2c device at address 0x51
[16:28:14][I][i2c.arduino:102]: Found i2c device at address 0x55
[16:28:14][I][i2c.arduino:102]: Found i2c device at address 0x5D
[16:28:14][I][i2c.arduino:102]: Found i2c device at address 0x68
[16:28:14][I][i2c.arduino:102]: Found i2c device at address 0x6B
[16:28:14][C][pcf85063:022]: PCF85063:
[16:28:14][C][pcf85063:023]:   Address: 0x51
[16:28:14][C][pcf85063:027]:   Timezone: 'CST6CDT,M3.2.0,M11.1.0'
[16:28:14][C][web_server:285]: Web Server:
[16:28:14][C][web_server:286]:   Address: s5dev.local:80
[16:28:14][C][mdns:116]: mDNS:
[16:28:14][C][mdns:117]:   Hostname: s5dev
[16:28:14][C][esphome.ota:073]: Over-The-Air updates:
[16:28:14][C][esphome.ota:074]:   Address: s5dev.local:3232
[16:28:14][C][esphome.ota:075]:   Version: 2
[16:28:14][C][safe_mode:018]: Safe Mode:
[16:28:14][C][safe_mode:020]:   Boot considered successful after 60 seconds
[16:28:14][C][safe_mode:021]:   Invoke after 10 boot attempts
[16:28:14][C][safe_mode:023]:   Remain in safe mode for 300 seconds
[16:28:14][C][improv_serial:032]: Improv Serial:
[16:28:14][C][wifi_signal.sensor:010]: WiFi Signal 'WiFi Signal Sensor'
[16:28:14][C][wifi_signal.sensor:010]:   Device Class: 'signal_strength'
[16:28:14][C][wifi_signal.sensor:010]:   State Class: 'measurement'
[16:28:14][C][wifi_signal.sensor:010]:   Unit of Measurement: 'dBm'
[16:28:14][C][wifi_signal.sensor:010]:   Accuracy Decimals: 0

Referencing this: GitHub - Xinyuan-LilyGO/T5S3-4.7-e-paper-PRO: UI written for the LilyGo-EPD47-S3 project

1 Like