Waveshare ESP32-S3-Touch-AMOLED-2.06 Watch

Is anybody playing with one of these yet?

I would be interested in any tips in programming this using esphome. I have one on order and it winging its way to the UK as we speak.

2 Likes

Just got mine today. Working on getting the display working but no luck so far. Here’s the relevant parts I’ve tried if anyone has any suggestions (I’m mostly guessing my way through it):

spi:
  id: quad_spi
  type: quad
  clk_pin: 11
  data_pins: [4, 5, 6, 7]

display:
  - platform: qspi_dbi
    id: lcd_display
    model: CUSTOM #CO5300
    data_rate: 80MHz
    spi_mode: mode0
    dimensions:
      width: $screen_width
      height: $screen_height
      offset_width: 0
    color_order: rgb
    invert_colors: false
    brightness: 255
    cs_pin: 12
    reset_pin: 8
    enable_pin: 13

Glad to here someone else is playing with this, not got mine yet, but will almost certainly need a lot of help.

Just looking through the docs, found this.

init_sequence (Optional, A list of byte arrays): Specifies the init sequence for the display. This is required when using the CUSTOM model - but may be empty. If specified for other models this data will be sent after the pre-configured sequence.

No idea about it but ??? :slight_smile:

Hey I’ve started playing with the amoled 1.75, I’ve used the doc for the pin + the Arduino example for the init sequence and I’m able to show some text (with green bar on the right and bottom).

Here is my code so probably worth updating the pin with the schema of the 2.06 version:

spi:
  id: quad_spi
  type: quad
  clk_pin: 38
  data_pins: [4, 5, 6, 7]

display:
  - platform: qspi_dbi
    model: CUSTOM
    id: my_display
    cs_pin: 12          # LCD CS
    reset_pin: 39       # LCD RESET
    # enable_pin: <if your board has one>
    # te_pin: 13        # optional TE pin

    dimensions:
      width: 454
      height: 454

    data_rate: 80MHz
    color_order: rgb

    init_sequence:
      - [0x11]              # Sleep Out
      - [0xFE, 0x00]
      - [0xC4, 0x80]        # SPI Mode Control
      - [0x3A, 0x55]        # Pixel Format: 16bpp
      - [0x53, 0x20]        # CTRL Display1
      - [0x63, 0xFF]        # Brightness HBM
      - [0x29]              # Display On
      - [0x51, 0xD0]        # Brightness Normal
      - [0x58, 0x00]        # WCE: Contrast Enhancement Off

What do you mean by this?

Still waiting for my parcel to arrive.

Pin seems different from 1.75 for the display so with the documentation on wave share for 2.06 version, you will need to adapt the code

this seems to work for me, and not as slow as qspi:

display:
  - platform: mipi_spi
    id: main_display
    model: AXS15231
    cs_pin: 12
    reset_pin: 8
    update_interval: never

    dimensions:
      width: 432
      height: 504

    data_rate: 80MHz
    color_order: rgb

    init_sequence:
      - [0x11]              # Sleep Out
      - [0xFE, 0x00]
      - [0xC4, 0x80]        # SPI Mode Control
      - [0x3A, 0x55]        # Pixel Format: 16bpp
      - [0x53, 0x20]        # CTRL Display1
      - [0x63, 0xFF]        # Brightness HBM
      - [0x29]              # Display On
      - [0x51, 0xD0]        # Brightness Normal
      - [0x58, 0x00]        # WCE: Contrast Enhancement Off

the ft3168 touchscreen driver is a bitch though…

full working yaml for home assistant voice assist, except touch functionality: xiaozhi-esphome/devices/Under_Development/Wrist_Watch.yaml at ebd372cae10191ff1e84aaafdc3c6ec0200cea52 · RealDeco/xiaozhi-esphome · GitHub

1 Like

Thanks for that, I will have a play as soon as evri remember where I live. :thinking:

I guess the touch part is still an issue?

@RealDeco you’re a legend! So far I got the display and speaker working from your example. I managed to get the brightness working but it only works with QSPI so I couldn’t do MIPI. I haven’t copied everything from your example yet, excited to try out the voice assistant.

Any ideas on how to get the current charging state and battery level?

1 Like

i just updated yaml with working touch :+1:

2 Likes

RealDeco You are a star, hopefully my watch will arrive tomorrow and I will be able to play, not sure when as there is a lot going on here tomorrow.

1 Like

it’s a AXP2101 power manager which is one of the 5 I2C component, most likely on address 0x34 but the only external library i can find isn’t working… but at least touch is working now :slight_smile:

updated the yaml again to include brightness control with mipi :+1:

@RealDeco oh wow that’s excellent! I don’t see it in the link you posted, did you push the update to the repo?

I’m trying to figure out how to get the display to sleep but it seems like write_command, turn_on/off isn’t an option here. Any ideas? I’m still using QSPI so maybe that’s why.

Also you mentioned 5 I2C devices but my scan shows me 6, not sure if this helps but here’s what I get:

[23:37:20][I][i2c.idf:110]: Found device at address 0x18
[23:37:20][I][i2c.idf:110]: Found device at address 0x34
[23:37:20][I][i2c.idf:110]: Found device at address 0x38
[23:37:20][I][i2c.idf:110]: Found device at address 0x40
[23:37:20][I][i2c.idf:110]: Found device at address 0x51
[23:37:20][I][i2c.idf:110]: Found device at address 0x6B

I believe the code is here now, not had a chance to play yet as the watch is not here yet.

i posted the direct link to the yaml in “under development” where it starts, but yes it’s in the devices/waveshare now

you are right, there’s 6, but it only shows 5 on the pinout (the ones using gpio 14 & 15), i’m guessing the 6th one is the IO extender.

EDIT: i was remembering wrong, it’s some other waveshare displays that use io extender, too many displays :laughing:

QMI8658 6-axis sensor
PCF85063 RTC (realtime clock)
AXP2101 power manager
ES8311 audio codec
FT3168 touch
ES7210 audio codec

What’s the battery life like on this thing?

Battery life is really poor but I guess it needs a bit more work on sleep modes.

Any how thanks to #RealDeco I have managed to create this so far, tilt sensor is working with time on the idle page. Need to make the screen sleep when not needed.

2 Likes