Hardware testing

We often do not have this board ourselves. Community testing helps establish what actually works. A successful report is evidence for the maintainer to review, not an automatic compatibility claim.

Board details & configuration
Model
Elecrow DIS02170A v1.4
Chip, RAM and flash
ESP32-S3-WROOM-1-N16R8, 512K RAM, 16M flash
Display and touch
7", 800x480, capacitive single touch
Already tried
I have the display working at a basic level with ESPHome
Configuration status
partial
View shared configuration
logger:
  level: DEBUG
  
api:
  encryption:
    key: ${API_KEY}

ota:
  - platform: esphome
    password: !secret ota_password

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

esphome:
  name: ${DEVICE_NAME}
  friendly_name: ${DEVICE_FRIENDLY_NAME}
  platformio_options:
    build_flags: "-DBOARD_HAS_PSRAM"
    board_build.esp-idf.memory_type: qio_opi
    board_build.flash_mode: dio
  on_boot:
    # Turn on backlight
    priority: 600
    then:
      - lambda: |-
          uint8_t cmd[1] = { 0x00 }; // Brightness range 0-245, 0 brightest
          id(bus_a).write(0x30, cmd, 1);  // STC8H1K28 is at address 0x30

esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: esp-idf
    sdkconfig_options: 
      CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240: y
      CONFIG_ESP32S3_DATA_CACHE_64KB: y
      CONFIG_SPIRAM_FETCH_INSTRUCTIONS: y
      CONFIG_SPIRAM_RODATA: y

psram:
  mode: octal
  speed: 80MHz

i2c:
  sda: GPIO15
  scl: GPIO16
  scan: true
  id: bus_a
  
display:
  - platform: rpi_dpi_rgb
    id: main_display
    color_order: RGB
    invert_colors: True
    update_interval: never
    auto_clear_enabled: false
    dimensions:
      width: 800
      height: 480
    de_pin: 42
    hsync_pin: 40
    vsync_pin: 41
    pclk_pin: 39
    pclk_frequency: 20MHz
    hsync_pulse_width: 4
    hsync_front_porch: 8
    hsync_back_porch: 8
    vsync_pulse_width: 4
    vsync_front_porch: 8
    vsync_back_porch: 8
    data_pins:
      red:
        - 7 #r1
        - 17 #r2
        - 18 #r3
        - 3 #r4
        - 46 #r5
      green:
        - 9 #g0
        - 10 #g1
        - 11 #g2
        - 12 #g3
        - 13 #g4
        - 14 #g5
      blue:
        - 21 #b1
        - 47 #b2
        - 48 #b3
        - 45 #b4
        - 38 #b5
  
touchscreen:
  platform: gt911
  id: my_touchscreen
  display: main_display
  update_interval: 50ms
  address: 0x5D
  on_release: # to trigger the turn off display when idle
      - lambda: |-
                uint8_t cmd[1] = { 247 }; // Buzzer off
                id(bus_a).write(0x30, cmd, 1);
      - if:
          condition: lvgl.is_paused
          then:
            - logger.log: "LVGL resuming"
            - switch.turn_off: switch_antiburn
            - lvgl.widget.redraw:

  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
              );
          uint8_t cmd[1] = { 246 }; // Buzzer on
          id(bus_a).write(0x30, cmd, 1);


i2s_audio:
- id: "i2s_out"
  i2s_lrclk_pin: GPIO6
  i2s_bclk_pin: GPIO5
- id: "i2s_in"
  i2s_lrclk_pin: GPIO2
  i2s_bclk_pin: GPIO19

microphone:
- platform: i2s_audio
  adc_type: external
  #pdm: true
  id: mic_i2s
  channel: right
  i2s_audio_id: i2s_in
  bits_per_sample: 16bit
  i2s_din_pin: GPIO20

speaker:
  - platform: i2s_audio
    id: speaker_i2s
    dac_type: external
    i2s_dout_pin: GPIO4
    i2s_audio_id: i2s_out

media_player:
  - platform: speaker
    name: Speaker
    id: speaker_media_player
    volume_min: 0.5
    volume_max: 0.8
    announcement_pipeline:
      speaker: speaker_i2s
      format: FLAC
      sample_rate: 48000
      num_channels: 1  # S3 Box only has one output channel
      
switch:
  - platform: template
    id: switch_antiburn
    icon: mdi:television-shimmer
    optimistic: true
    entity_category: "config"
    turn_on_action:
      - logger.log: "Starting Antiburn"
      - if:
          condition: lvgl.is_paused
          then:
            - lvgl.resume:
            - lvgl.widget.redraw:
      - lvgl.pause:
          show_snow: true
    turn_off_action:
      - logger.log: "Stopping Antiburn"
      - if:
          condition: lvgl.is_paused
          then:
            - lvgl.resume:
            - lvgl.widget.redraw:               
    name: Antiburn
    
globals:
  - id: random_int_var
    type: int
    restore_value: no
    initial_value: "0"

binary_sensor:
  - platform: lvgl
    widget: button
    name: Button
    on_press: # genrate a random number between -10 and +10 and update meter
      then:
        - lambda: |-
            id(random_int_var) = (rand() % 20) - 10;
        - lvgl.indicator.update:
            id: power_meter_input
            value: !lambda return id(random_int_var);
        - lvgl.label.update:
            id: power_kw
            text:
              format: "%dkW"
              args: ["id(random_int_var)"]
image:
  - platform: file
    file: mdi:sun-wireless-outline
    id: solar_power_icon
    resize: 50x50
    type: RGB

lvgl:
  color_depth: 16
  bg_color: 0
  border_width: 0
  outline_width: 0
  shadow_width: 0
  text_font: unscii_16
  align: center
  style_definitions:
    - id: meter_style
      border_width: 0
      outline_width: 0
      align: center
      bg_color: 0
    - id: title_style
      text_font: MONTSERRAT_40
      align: center
      text_color: 0xFFFFFF
      bg_opa: TRANSP
      bg_color: 0
      radius: 4
      pad_all: 2
    - id: detail_style
      text_font: MONTSERRAT_18
      align: center
      text_color: 0xFFFFFF
      bg_opa: TRANSP
      bg_color: 0
      radius: 4
      pad_all: 2
  widgets:
    - button: # Button
        id: button
        height: 100
        width: 200
        x: 20
        y: 20
        border_width: 0
        outline_width: 0
        align: TOP_LEFT
        checkable: false
        widgets:
          - label:
              align: center
              text: "Button"
    - obj: # Meter
        height: 240
        width: 240
        bg_color: 0
        border_width: 0
        outline_width: 0
        shadow_width: 0
        pad_all: 4
        align: TOP_MID
        widgets:
          - meter: # Gradient color  arc
              height: 100%
              width: 100%
              border_width: 0
              outline_width: 0
              align: center
              bg_color: 0
              scales:
                angle_range: 180
                range_to: 10
                range_from: -10
                ticks:
                  count: 2
                indicators:
                  - line:
                      id: power_meter_input
                      width: 8
                      color: 0xFFFFFF
                      r_mod: 12
                      value: 50
                  - arc:
                      color: 0xFF3000
                      r_mod: 10
                      width: 20
                      start_value: -10
                      end_value: 0
                  - arc:
                      color: 0x00FF00
                      r_mod: 10
                      width: 20
                      start_value: 0
                      end_value: 10
          - arc: # black arc to erase middle part of meter indicator line
              height: 160
              width: 160
              align: center
              arc_color: 0x000000
              arc_width: 150
              start_angle: 0
              end_angle: 360
              indicator:
                arc_width: 150
                arc_color: 0x000000
          - label: # gauge lower and higher range indicators
              styles: detail_style
              y: 8
              x: -99
              text: "-10"
          - label:
              styles: detail_style
              y: 8
              x: 99
              text: "+10"
          - label: # value label
              styles: title_style
              id: power_kw
              y: -10
          - image:
              src: solar_power_icon
              id: img_solar_power
              align: center
              image_recolor: 0xFFFF00
              image_recolor_opa: 100%
              y: 50

1 owner has volunteered to test.

Sign in to volunteer

Discussion 0

Add a comment

Start the conversation

Share an example, ask a question or explain how you would use this.

Add your thoughts, a screenshot or a useful link.

Markdown & basic HTML
Paste or drop images Β· URLs on their own line become previews0 / 10,000
Create your account to join in

We need a verified email address to reach you about your contribution. Your address stays private.

Continue with GitHub

Your draft stays in this tab. Return here after verification.