I cannot seem to get the Waveshare 4.3 ESP32 touch display to display anything. I am using the RPI_DPI_RGB driver using the provided settings for Waveshare. I have this display working fine under VS Code and have double checked the pin configuration for that and they are identical as that in ESPHome YAML.
I originally had LVGL and the touch configured but for diagnostics stripped it down to bare minimum. So the code above the “display” section is vanilla config with the exception I changed the platform type from arduino to esp-idf. It uploads, i can visit the device’s web page. It just doesn’t seem to do anything with the display.
I assume the Lambda function would display something after display setup. I’m really new to ESPHome so I could be doing something silly. I’ve attached the YAML I used.
Help ?
substitutions:
name: esphome-web-97f488
friendly_name: Control Panel
esphome:
name: ${name}
friendly_name: ${friendly_name}
min_version: 2024.6.0
name_add_mac_suffix: false
platformio_options:
board_build.flash_mode: dio
project:
name: esphome.web
version: dev
esp32:
board: esp32-s3-devkitc-1
framework:
type: esp-idf
# Enable logging
logger:
# Enable Home Assistant API
api:
# Allow Over-The-Air updates
ota:
- platform: esphome
# Allow provisioning Wi-Fi via serial
improv_serial:
wifi:
# Set up a wifi access point
ap: {}
# In combination with the `ap` this allows the user
# to provision wifi credentials to the device via WiFi AP.
captive_portal:
dashboard_import:
package_import_url: github://esphome/firmware/esphome-web/esp32s3.yaml@main
import_full_config: true
# Sets up Bluetooth LE (Only on ESP32) to allow the user
# to provision wifi credentials to the device.
esp32_improv:
authorizer: none
# To have a "next url" for improv serial
web_server:
display:
- platform: rpi_dpi_rgb
auto_clear_enabled: false
color_order: RGB
pclk_frequency: 16MHz
dimensions:
width: 800
height: 480
de_pin:
number: 5
hsync_pin:
number: 46
ignore_strapping_warning: true
vsync_pin:
number: 3
ignore_strapping_warning: true
pclk_pin: 7
hsync_back_porch: 30
hsync_front_porch: 210
hsync_pulse_width: 30
vsync_back_porch: 4
vsync_front_porch: 4
vsync_pulse_width: 4
data_pins:
red:
- 1 #r3
- 2 #r4
- 42 #r5
- 41 #r6
- 40 #r7
blue:
- 14 #b3
- 38 #b4
- 18 #b5
- 17 #b6
- 10 #b7
green:
- 39 #g2
- 0 #g3
- 45 #g4
- 48 #g5
- 47 #g6
- 21 #g7
lambda: |-
auto black = Color(0, 0, 0);
auto red = Color(255, 0, 0);
auto green = Color(0, 255, 0);
auto blue = Color(0, 0, 255);
auto white = Color(255, 255, 255);
it.filled_circle(20, 32, 15, black);
it.filled_circle(40, 32, 15, red);
it.filled_circle(60, 32, 15, green);
it.filled_circle(80, 32, 15, blue);
it.filled_circle(100, 32, 15, white);
Ok, I found an example on this thread from @Jon_2232 :
I couldn’t get it to compile initially. The item that seem to give a display was:
psram:
mode: octal
speed: 80MHz
But I had a lot of corruption and the synch didnt seem to be quite right. I think the corruption was probably due to where ever memory was being used wasnt a great place.
I used my timing settings and then folded in Jon’s code and got it to compile and it is displaying his clock demo.
Out of interest do you have issues with doing wifi updates? It seems really slow, so slow that it disconnects, or its really fast. I often have to do reboot it just before I’m about to upload.
I’ve even had to resort to putting the board back to initial settings. It’s as if when running it cant process the connection.