5inch display ILI6122 & ILI5960 need help to add it to ESPHome

Hello,

I’m trying to use ESPHome on this ESP32 display with ILI6122 & ILI5960 display since 2 f…ing days…

This screen are not suported by ESPHome now, and i need to find a way to add it.

They are comaptible with Arduino_GFX : GitHub - moononournation/Arduino_GFX: Arduino GFX developing for various color displays and various data bus interfaces

In the ESPHome documentation, it seem that we can add a custom .h file ?

But i’m php programmer, so C++ … i know nothin…

Can you confirm that would be work, and help me to make it work ?

Here the actual .yaml file

esphome:
  name: test-ecran
  friendly_name: test ecran
  platformio_options:
    board_upload.flash_size: 4MB

esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "XT5STUD+u/CHsafZjbkNfWx+V7QqzfDg88wPeZRCGMQ="

ota:
  password: "9ec75745d335a43f701bd677f124acb9"

wifi:
  ssid: "OpenWrt"
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Test-Ecran Fallback Hotspot"
    password: "9ZmHosjwBycx"

captive_portal:

display:
  - platform: ili9xxx
    cs_pin: GPIO10  # Correspond à SD_CS
    dc_pin: GPIO11  # Correspond à SD_MOSI
    reset_pin: GPIO13  # Correspond à SD_MISO
    model: ???????
    id: my_display
    rotation: 0  # Ajustez selon votre besoin
    lambda: |-
      it.line(0, 0, 50, 50);


spi:
  clk_pin: GPIO12  # Correspond à SD_SCK
  mosi_pin: GPIO11  # Correspond à SD_MOSI
  miso_pin: GPIO13  # Correspond à SD_MISO

# Broches pour l'écran tactile GT911
i2c:
  sda: GPIO19  # Correspond à TOUCH_GT911_SDA
  scl: GPIO20  # Correspond à TOUCH_GT911_SCL
  id: gt911

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

As you see i used the ili9xxx that are not working with this screen.

Thanks.

1 Like

Hi i just got this screen
Did you have any luck?
Thanks

Not with ESP Home, only GFX Arduino have the good driver

Is there a way to get a home assistant dashboard from there?

Hi @MakerNix,
I ordered an Elecrow ESP32 7.0-inch, I thought the ilixxxx display driver, but I was wrong. It’s an EK9716BD3 + EK73002ACGB.
The esp is the same as the 5 inch, your configuration for esphome is good, the esp starts?

Have you asked for help on the esphome github or made a request feature for screen and touchscreen?

Maybe you can try with openhasp to track configuration for those displays.

I’m using sunton 8048S050 from aliexpress and openhasp work with it. Not without some bugs but works.

2 Likes

Can you share the file for 3D printing the box?

Sure: openHASP ESP32-S3 Sunton 8048S050 Display Desk Stand by Szaman - MakerWorld

Hi,
thanks for the voice of OpenHasp. I was able to compile a firmware for ESP32 display-7.0 Inch with the settings shared by DaveDuncanson. It works, finally I can use ESP with HA.

I still have to make a nice dashboard :wink:

Hi @WarC0zes,

recently I got the same display, and I was wondering if you could share your esphome configuration for these devices. I’ve tried it myself without any luck up to now, and I’ve seen you spent a lot of effort on this project. I would highly appreciate your help. TIA

Hi,
The screen doesn’t work with ESPHome, there is no RGB screen driver. You must use Arduino or PlatformIO which have screen and touch drivers.

I used openHASP, with a shared configuration for the 7 inch.I compiled a firmware with the configuration using the doc and gitpod to compile.

copy the elecrow-esp32-s3-tft.ini (the link below) to user_setups/esp32s3/

in the platformio_override.ini file modify it as such:

[platformio]
extra_configs =
    ; Uncomment or edit the lines to show more User Setups in the PIO sidebar
    user_setups/esp32s3/elecrow-esp32-s3-tft.ini

and

extra_default_envs =
    ; Comment unneeded environments or create extra
    ; arduitouch-esp32_ili9341
    ; d1-mini-esp32_ili9341
    ; d132-unoshield
    ; esp12e-st7735
    ; esp32dev-mrb3511
    ; esp32dev-ili9488
    elecrow-s3-8048C070_4MB

Save Ctrl + S and type platformio run in the command line area for compile.
After, download firmware in build_output\firmware.

Then flash the ESP with Flash Download Tools:

choise COM port
SPI SPEED 80MHz
SPI MODE QIO
select the firmware and type 0 in the box.

Switch the ESP to upload mode (Why need putting the ESP32 displays into "upload mode" with the BOOT and RESET button? — ELECROW - FORUM) and start flash.

Follow the instructions for the first start Wifi Setup - openHASP

WIP:

@WarC0zes - many thanks.

this is an awesome tutorial.

Hallo, here is elecrow-esp32-s3-tft-50.ini for 5" display.
I also didn’t notice the other controller and believed the display to be ESPhome compatible… But it’s not!

;***************************************************;
;    Elecrow ESP32-S3 TFT 5.0"                          ;
;          - Wizee-ESP32 WZ8048C050                 ;
;          - Custom esp32-s3 board                        ;
;          - ILI6122/ILI5960 display driver                 ;
;          - gt911 touch controller                             ;
;***************************************************;
;
; https://www.elecrow.com/esp32-display-5-inch-hmi-display-rgb-tft-lcd-touch-screen-support-lvgl.html
;

[elecrow-esp32-s3-tft-50]
extends = arduino_esp32s3_v2
board = esp32-s3-devkitc-1
board_build.arduino.memory_type = qio_opi

build_flags =
    ${arduino_esp32s3_v2.build_flags}
    ${esp32s3.ps_ram}

;region -- ArduinoGFX build options ------------------------
    -D HASP_LV_USE_SW_ROTATE=0
    -D TFT_BCKL=2   ;#define GFX_BL 2
;endregion

lib_deps =
    ${arduino_esp32s3_v2.lib_deps}
    ;;;;;;;${arduinogfx.lib_deps}
    ${lovyangfx.lib_deps}
    Arduino_RPi_DPI_RGBPanel_mod
    ${goodix.lib_deps}

board_build.partitions = huge_app.csv

[elecrow-tft-common-pins]
build_flags =


 
; Bus Settings - LovyanGFX Library //     ; Bus Settings - Ardunio_GFX Library
  -D LGFX_USE_V1=1
  -D TFT_B0=8   ;8 /* B0 */,
  -D TFT_B1=3   ;3 /* B1 */, 
  -D TFT_B2=46  ;46 /* B2 */,
  -D TFT_B3=9   ;9 /* B3 */, 
  -D TFT_B4=1   ;1 /* B4 */,
  
  -D TFT_G0=5   ;5 /* G0 */,
  -D TFT_G1=6   ;6 /* G1 */,
  -D TFT_G2=7   ;7 /* G2 */,
  -D TFT_G3=15  ;15 /* G3 */,
  -D TFT_G4=16  ;16 /* G4 */,
  -D TFT_G5=4   ;4 /* G5 */,
  
  -D TFT_R0=45  ;45 /* R0 */,
  -D TFT_R1=48  ;48 /* R1 */,
  -D TFT_R2=47  ;47 /* R2 */,
  -D TFT_R3=21  ;21 /* R3 */,
  -D TFT_R4=14  ;14 /* R4 */,
  -D RGB_DRIVER=1   ;
  
  -D TFT_DE=40      ;40 /* DE */,
  -D TFT_VSYNC=41   ;41 /* VSYNC */,
  -D TFT_HSYNC=39   ;39 /* HSYNC */,
  -D TFT_PCLK=0     ;0 /* PCLK */,

[env:elecrow-s3-8048C050_4MB]
extends = elecrow-esp32-s3-tft-50, flash_4mb

build_flags =
    -D HASP_MODEL="Elecrow WZ8048C050"
    -D HASP_LOG_LEVEL=LOG_LEVEL_VERBOSE
    -D HASP_USE_CAPTIVE_PORTAL=0
  ;  -D HASP_USE_CUSTOM=1
  ;  -D MQTT_TOPIC_CUSTOM="SmartPICoop"


    ${elecrow-esp32-s3-tft-50.build_flags}
    ${elecrow-tft-common-pins.build_flags}

    ; Panel Settings ILI6122/LI5960
    -D TFT_WIDTH=800            ;800 /* width */,
    -D TFT_HEIGHT=480           ;480 /* height */, 

    -D TFT_HSYNC_POLARITY=0     ;0 /* hsync_polarity */,
    -D TFT_HSYNC_FRONT_PORCH=8  ;8 /* hsync_front_porch */, 
    -D TFT_HSYNC_PULSE_WIDTH=1  ;???Pio_4 /* hsync_pulse_width */ ???Ard_1 /* hsync_pulse_width */,
    -D TFT_HSYNC_BACK_PORCH=32  ;???Pio_43 /* hsync_back_porch */,???Ard_32 /* hsync_back_porch */,    
    -D TFT_VSYNC_POLARITY=0     ;0 /* vsync_polarity */,
    -D TFT_VSYNC_FRONT_PORCH=8  ;8 /* vsync_front_porch */,  
    -D TFT_VSYNC_PULSE_WIDTH=1  ;???Pio_4 /* vsync_pulse_width */ ???Ard_1 /* vsync_pulse_width */,   
    -D TFT_VSYNC_BACK_PORCH=8   ;Pio_12 /* vsync_back_porch */ ???Ard_ 8 /* vsync_back_porch */,   
    -D TFT_PCLK_ACTIVE_NEG=1    ;1 /* pclk_active_neg */,
    -D TFT_PREFER_SPEED=16000000  ;16000000 /* prefer_speed */
    -D TFT_AUTO_FLUSH=1         ;true /* auto_flush */
   
    ; Touch Settings GT911
    -D HASP_USE_LGFX_TOUCH=1
    -D TOUCH_WIDTH=800
    -D TOUCH_HEIGHT=480
    -D TOUCH_DRIVER=0x911
    -D TOUCH_SCL=20
    -D TOUCH_SDA=19
    -D TOUCH_IRQ=-1
    -D TOUCH_RST=-1
    -D I2C_TOUCH_ADDRESS=0x5D 
    -D I2C_TOUCH_FREQUENCY=400000

lib_deps =
    ${elecrow-esp32-s3-tft-50.lib_deps}

The procedure is the same as for a 7" display.
Copy the elecrow-esp32-s3-tft-50.ini to user_setups/esp32s3/
in the platformio_override.ini file modify it as such:

[platformio]
extra_configs =
    ; Uncomment or edit the lines to show more User Setups in the PIO sidebar
    user_setups/esp32s3/elecrow-esp32-s3-tft-50.ini

and

extra_default_envs =
    ; Comment unneeded environments or create extra
    ; arduitouch-esp32_ili9341
    ; d1-mini-esp32_ili9341
    ; d132-unoshield
    ; esp12e-st7735
    ; esp32dev-mrb3511
    ; esp32dev-ili9488
    ; elecrow-s3-8048C070_4MB
    elecrow-s3-8048C050_4MB
1 Like

@MakerNix I see the thread jumped to the 7" model which has a different screen. Did you ever get the 5" working in ESPHome?

Hi,
The 5 inch doesn’t have a supported driver under ESPHome. Elecrow has modified its product page and removed ESPHome support ESP32 display-5.0 Inch HMI Display 800x480 RGB TFT LCD Touch Screen Compatible with Arduino/LVGL

You can use it with Arduino or PlatformIO, which has the driver.

With OpenHASP, it works well and you can integrate it with Home Assistant.


Is there someplace that explains the various pieces you need to design the UI and connect it to HA? I’ve been going through the tutorial videos on the Elecrow site, and they’re talking about using Arduino and Squareline Studio. There’s also mention here of OpenHASP, but the information there doesn’t mention anything I’ve found yet about the UI design. Would I do that with Squareline Studio (which seems to generate Arduino code) and then somehow use OpenHASP to create linkage between the UI I create and the data in HA? Or is there a GUI designer in OpenHASP I haven’t found yet?

It would be enough :slightly_smiling_face:

https://haspdesigner.qrisonline.nl/

2 Likes

Hi! I purchased the same 5 inch display from elecrow and tried to create a configuration for openHasp firmware based on your instructions and the instructions above for 7 inches.
I ran into a problem:
When specified inside platformio_override.ini
extra_default_envs = elecrow-s3-8048C070_4MB
platformio throws an error:
[{
“resource”: “/c:/…/…/…/openHASP/platformio.ini”,
“owner”: “PlatformIO”,
“severity”: 8,
“message”: “Unknown environment names ‘elecrow-s3-8048C070_4MB’. Valid names are ‘ttgo_esp32_poe-ili9341, az-touch-mod-esp32_ili9341_8MB, esp32dev-mrb3511, d1-r32-unoshield_ili9486_adc, esp32-one_st7796 , elecrow-s3- 8048C050_4MB, d1-r32-unoshield_ili9341_adc, az-touch-mod-esp32_ili9341_4MB, my_custom_build, d1-mini-esp32_ili9341, lolin-d32-pro_ili9341’”,
“startLineNumber”: 1,
“startColumn”: 1,
“endLineNumber”: 1,
“endColumn”: 1
}].
could you tell me how to solve this problem?
I’m new to this and may have missed something.

I seem to have successfully compiled the firmware file.
I used env: elecrow-s3-8048C050_4MB instead of elecrow-s3-8048C070_4MB. This is because Platformio (as I understood) does not recognize elecrow-s3-8048C070_4MB. However, the screen still does not start.

As I mentioned earlier, I am using the following setup: Elecrow ESP32-S3 TFT 5.0. Could someone share their .bin firmware file or the entire project for analysis? I would be very grateful for your help.

using the procedure explained by xFallon i got an image on my 5 inch display, but its not really working, the screen is not stable and the widgets on the screen keep flickering and changing position so nothing is really readable. any idea what is going wrong? thanks!!