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.
Hi @fabkins
Thank you for your post. I have the very same screen and I’ve been struggling to make it show something for a few months now. Your code make it work!
I am having the same issue where wifi updates are really slow and fail due to time out. Did you find out a solution to that problem? If not, what is exactly that you mean by “putting the board back to initial settings”?
I have heard of some of these screens sharing the Wi-Fi pin with other hardware. This causes lot’s of issues with Wi-Fi updates. In this case you may have to update via USB.
You may want to look into using a different screen.
Using ESP-IDF 5.3 will fix that. There is new code in ESPHome to take advantage of a better display driver - it’s in the dev branch, not sure if it made it into the latest release.
esp32:
board: esp32-s3-devkitc-1
framework:
type: esp-idf
platform_version: 6.8.1
version: 5.3.0
sdkconfig_options:
CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240: "y"
CONFIG_ESP32S3_DATA_CACHE_64KB: "y"
CONFIG_SPIRAM_FETCH_INSTRUCTIONS: y
CONFIG_SPIRAM_RODATA: y