devices.esphome.io
ESP32S3-1.8-inch JC3636K518C
ESP32S3-1.8-inch JC3636K518C
Device Type: miscElectrical Standard: globalBoard: esp32-s3, esp32Difficulty: Plug-n-flash, 2/5
Product specs
Feature | Spec |
---|---|
Screen | ST77916 driver 360*360 |
Touch screen | CST816 |
CPU | ESP32-S3 & ESP32 |
Flash | 16MB |
PSRAM | 8MB |
Product description
A pretty red metal rotatable knob with build-in 1.85inch IPS display. It integrates an esp32s3 as well as an esp32 microcontroller. Avalible on AliExpress for ~$25.
A blue version is available from Waveshare.
Basic Config
substitutions: name: "JC3636K518C" friendly_name: "360knob-basic" device_description: "ESP32S3-1.8-inch JC3636K518C" project_name: "JC3636K518C" project_version: "1.0.0"
esphome: name: "${name}" friendly_name: "${friendly_name}" project: name: "${project_name}" version: "${project_version}" platformio_options: board_build.flash_mode: dio board_build.f_flash: 80000000L board_build.f_cpu: 240000000L
esp32: board: esp32-s3-devkitc-1 flash_size: 16MB framework: type: esp-idf sdkconfig_options: CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240: "y" CONFIG_ESP32S3_DATA_CACHE_64KB: "y" CONFIG_ESP32S3_DATA_CACHE_LINE_64B: "y" CONFIG_SPIRAM_FETCH_INSTRUCTIONS: y CONFIG_SPIRAM_RODATA: y
psram: mode: octal
# Enable logginglogger:
# Enable Home Assistant APIapi: encryption: key: !secret encryption_key
ota: - platform: esphome password: !secret ota_key
wifi: ssid: !secret wifi_ssid password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "${friendly_name} Fallback Hotspot" password: "6T3RFWEF71"
spi: id: display_qspi type: quad clk_pin: 13 data_pins: [15, 16, 17, 18]
i2c: sda: 11 scl: 12 id: touchscreen_bus
i2s_audio: - id: i2s_in i2s_lrclk_pin: GPIO45
microphone: - platform: i2s_audio id: i2s_microphone i2s_audio_id: i2s_in i2s_din_pin: GPIO46 adc_type: external pdm: false channel: left sample_rate: 16000 bits_per_sample: 32bit
touchscreen: platform: cst816 id: my_touchscreen interrupt_pin: GPIO9 reset_pin: GPIO10 on_release: - if: condition: lvgl.is_paused then: - logger.log: "LVGL resuming" - lvgl.resume: - lvgl.widget.redraw: - light.turn_on: display_backlight
light: - platform: monochromatic id: display_backlight name: "Backlight" output: backlight_pwm default_transition_length: milliseconds: 0 initial_state: brightness: 100% restore_mode: ALWAYS_ON
output: - platform: ledc pin: number: GPIO47 id: backlight_pwm
display: - platform: qspi_dbi model: CUSTOM data_rate: 80MHz color_order: rgb dimensions: height: 360 width: 360 cs_pin: 14 reset_pin: 21 invert_colors: true auto_clear_enabled: false init_sequence: - [ 0xF0, 0x28 ] - [ 0xF2, 0x28 ] - [ 0x73, 0xF0 ] - [ 0x7C, 0xD1 ] - [ 0x83, 0xE0 ] - [ 0x84, 0x61 ] - [ 0xF2, 0x82 ] - [ 0xF0, 0x00 ] - [ 0xF0, 0x01 ] - [ 0xF1, 0x01 ] - [ 0xB0, 0x56 ] - [ 0xB1, 0x4D ] - [ 0xB2, 0x24 ] - [ 0xB4, 0x87 ] - [ 0xB5, 0x44 ] - [ 0xB6, 0x8B ] - [ 0xB7, 0x40 ] - [ 0xB8, 0x86 ] - [ 0xBA, 0x00 ] - [ 0xBB, 0x08 ] - [ 0xBC, 0x08 ] - [ 0xBD, 0x00 ] - [ 0xC0, 0x80 ] - [ 0xC1, 0x10 ] - [ 0xC2, 0x37 ] - [ 0xC3, 0x80 ] - [ 0xC4, 0x10 ] - [ 0xC5, 0x37 ] - [ 0xC6, 0xA9 ] - [ 0xC7, 0x41 ] - [ 0xC8, 0x01 ] - [ 0xC9, 0xA9 ] - [ 0xCA, 0x41 ] - [ 0xCB, 0x01 ] - [ 0xD0, 0x91 ] - [ 0xD1, 0x68 ] - [ 0xD2, 0x68 ] - [ 0xF5, 0x00, 0xA5 ] - [ 0xDD, 0x4F ] - [ 0xDE, 0x4F ] - [ 0xF1, 0x10 ] - [ 0xF0, 0x00 ] - [ 0xF0, 0x02 ] - [ 0xE0, 0xF0, 0x0A, 0x10, 0x09, 0x09, 0x36, 0x35, 0x33, 0x4A, 0x29, 0x15, 0x15, 0x2E, 0x34 ] - [ 0xE1, 0xF0, 0x0A, 0x0F, 0x08, 0x08, 0x05, 0x34, 0x33, 0x4A, 0x39, 0x15, 0x15, 0x2D, 0x33 ] - [ 0xF0, 0x10 ] - [ 0xF3, 0x10 ] - [ 0xE0, 0x07 ] - [ 0xE1, 0x00 ] - [ 0xE2, 0x00 ] - [ 0xE3, 0x00 ] - [ 0xE4, 0xE0 ] - [ 0xE5, 0x06 ] - [ 0xE6, 0x21 ] - [ 0xE7, 0x01 ] - [ 0xE8, 0x05 ] - [ 0xE9, 0x02 ] - [ 0xEA, 0xDA ] - [ 0xEB, 0x00 ] - [ 0xEC, 0x00 ] - [ 0xED, 0x0F ] - [ 0xEE, 0x00 ] - [ 0xEF, 0x00 ] - [ 0xF8, 0x00 ] - [ 0xF9, 0x00 ] - [ 0xFA, 0x00 ] - [ 0xFB, 0x00 ] - [ 0xFC, 0x00 ] - [ 0xFD, 0x00 ] - [ 0xFE, 0x00 ] - [ 0xFF, 0x00 ] - [ 0x60, 0x40 ] - [ 0x61, 0x04 ] - [ 0x62, 0x00 ] - [ 0x63, 0x42 ] - [ 0x64, 0xD9 ] - [ 0x65, 0x00 ] - [ 0x66, 0x00 ] - [ 0x67, 0x00 ] - [ 0x68, 0x00 ] - [ 0x69, 0x00 ] - [ 0x6A, 0x00 ] - [ 0x6B, 0x00 ] - [ 0x70, 0x40 ] - [ 0x71, 0x03 ] - [ 0x72, 0x00 ] - [ 0x73, 0x42 ] - [ 0x74, 0xD8 ] - [ 0x75, 0x00 ] - [ 0x76, 0x00 ] - [ 0x77, 0x00 ] - [ 0x78, 0x00 ] - [ 0x79, 0x00 ] - [ 0x7A, 0x00 ] - [ 0x7B, 0x00 ] - [ 0x80, 0x48 ] - [ 0x81, 0x00 ] - [ 0x82, 0x06 ] - [ 0x83, 0x02 ] - [ 0x84, 0xD6 ] - [ 0x85, 0x04 ] - [ 0x86, 0x00 ] - [ 0x87, 0x00 ] - [ 0x88, 0x48 ] - [ 0x89, 0x00 ] - [ 0x8A, 0x08 ] - [ 0x8B, 0x02 ] - [ 0x8C, 0xD8 ] - [ 0x8D, 0x04 ] - [ 0x8E, 0x00 ] - [ 0x8F, 0x00 ] - [ 0x90, 0x48 ] - [ 0x91, 0x00 ] - [ 0x92, 0x0A ] - [ 0x93, 0x02 ] - [ 0x94, 0xDA ] - [ 0x95, 0x04 ] - [ 0x96, 0x00 ] - [ 0x97, 0x00 ] - [ 0x98, 0x48 ] - [ 0x99, 0x00 ] - [ 0x9A, 0x0C ] - [ 0x9B, 0x02 ] - [ 0x9C, 0xDC ] - [ 0x9D, 0x04 ] - [ 0x9E, 0x00 ] - [ 0x9F, 0x00 ] - [ 0xA0, 0x48 ] - [ 0xA1, 0x00 ] - [ 0xA2, 0x05 ] - [ 0xA3, 0x02 ] - [ 0xA4, 0xD5 ] - [ 0xA5, 0x04 ] - [ 0xA6, 0x00 ] - [ 0xA7, 0x00 ] - [ 0xA8, 0x48 ] - [ 0xA9, 0x00 ] - [ 0xAA, 0x07 ] - [ 0xAB, 0x02 ] - [ 0xAC, 0xD7 ] - [ 0xAD, 0x04 ] - [ 0xAE, 0x00 ] - [ 0xAF, 0x00 ] - [ 0xB0, 0x48 ] - [ 0xB1, 0x00 ] - [ 0xB2, 0x09 ] - [ 0xB3, 0x02 ] - [ 0xB4, 0xD9 ] - [ 0xB5, 0x04 ] - [ 0xB6, 0x00 ] - [ 0xB7, 0x00 ] - [ 0xB8, 0x48 ] - [ 0xB9, 0x00 ] - [ 0xBA, 0x0B ] - [ 0xBB, 0x02 ] - [ 0xBC, 0xDB ] - [ 0xBD, 0x04 ] - [ 0xBE, 0x00 ] - [ 0xBF, 0x00 ] - [ 0xC0, 0x10 ] - [ 0xC1, 0x47 ] - [ 0xC2, 0x56 ] - [ 0xC3, 0x65 ] - [ 0xC4, 0x74 ] - [ 0xC5, 0x88 ] - [ 0xC6, 0x99 ] - [ 0xC7, 0x01 ] - [ 0xC8, 0xBB ] - [ 0xC9, 0xAA ] - [ 0xD0, 0x10 ] - [ 0xD1, 0x47 ] - [ 0xD2, 0x56 ] - [ 0xD3, 0x65 ] - [ 0xD4, 0x74 ] - [ 0xD5, 0x88 ] - [ 0xD6, 0x99 ] - [ 0xD7, 0x01 ] - [ 0xD8, 0xBB ] - [ 0xD9, 0xAA ] - [ 0xF3, 0x01 ] - [ 0xF0, 0x00 ] - [ 0xF0, 0x01 ] - [ 0xF1, 0x01 ] - [ 0xA0, 0x0B ] - [ 0xA3, 0x2A ] - [ 0xA5, 0xC3 ] - delay 1ms - [ 0xA3, 0x2B ] - [ 0xA5, 0xC3 ] - delay 1ms - [ 0xA3, 0x2C ] - [ 0xA5, 0xC3 ] - delay 1ms - [ 0xA3, 0x2D ] - [ 0xA5, 0xC3 ] - delay 1ms - [ 0xA3, 0x2E ] - [ 0xA5, 0xC3 ] - delay 1ms - [ 0xA3, 0x2F ] - [ 0xA5, 0xC3 ] - delay 1ms - [ 0xA3, 0x30 ] - [ 0xA5, 0xC3 ] - delay 1ms - [ 0xA3, 0x31 ] - [ 0xA5, 0xC3 ] - delay 1ms - [ 0xA3, 0x32 ] - [ 0xA5, 0xC3 ] - delay 1ms - [ 0xA3, 0x33 ] - [ 0xA5, 0xC3 ] - delay 1ms - [ 0xA0, 0x09 ] - [ 0xF1, 0x10 ] - [ 0xF0, 0x00 ] - [ 0x2A, 0x00, 0x00, 0x01, 0x67 ] - [ 0x2B, 0x01, 0x68, 0x01, 0x68 ] - [ 0x4D, 0x00 ] - [ 0x4E, 0x00 ] - [ 0x4F, 0x00 ] - [ 0x4C, 0x01 ] - delay 10ms - [ 0x4C, 0x00 ] - [ 0x2A, 0x00, 0x00, 0x01, 0x67 ] - [ 0x2B, 0x00, 0x00, 0x01, 0x67 ] - [ 0x3A, 0x55 ] - [ 0x21, 0x00 ] - [ 0x11, 0x00 ] - delay 120ms - [ 0x29, 0x00 ]
time: - platform: homeassistant id: homeassistant_time timezone: Europe/Berlin on_time: - hours: 2,3,4,5 minutes: 5 seconds: 0 then: - switch.turn_on: switch_antiburn - hours: 2,3,4,5 minutes: 35 seconds: 0 then: - switch.turn_off: switch_antiburn
number: - platform: template name: LVGL Screen timeout optimistic: true id: display_timeout unit_of_measurement: "s" initial_value: 45 restore_value: true min_value: 10 max_value: 180 step: 5 mode: box
switch: - platform: template name: Antiburn 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:
lvgl: on_idle: timeout: !lambda "return (id(display_timeout).state * 1000);" then: - logger.log: "LVGL is idle" - light.turn_off: display_backlight - lvgl.pause: