New boards Wishlist
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: 501 owner has volunteered to test.
Sign in to volunteer
Discussion 0
Add a commentStart the conversation
Share an example, ask a question or explain how you would use this.