nene1234

lilka lvgl

Nov 13th, 2025
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 4.44 KB | None | 0 0
  1. esphome:
  2.   name: lilka
  3.   friendly_name: lilka
  4.   on_boot:
  5.     priority: 600
  6.     then:
  7.       - output.turn_on: display_power
  8.       - delay: 100ms
  9.  
  10. esp32:
  11.   board: esp32-s3-devkitc-1
  12.   framework:
  13.     type: esp-idf
  14.  
  15. logger:
  16. api:
  17.   encryption:
  18.     key: "Yw3yq8lxsaze+jdggjAwxKpV4GD6gNZptvw4d6OPfOc="
  19.  
  20. ota:
  21.   - platform: esphome
  22.     password: "bb198feb99159fdaefc8092f10039acd"
  23.  
  24. wifi:
  25.   ssid: !secret wifi_ssid
  26.   password: !secret wifi_password
  27.   ap:
  28.     ssid: "Lilka Fallback Hotspot"
  29.     password: "hnYImYM4O6I0"
  30.  
  31. captive_portal:
  32. # Веб-сервер
  33. web_server:
  34.   port: 80
  35.  
  36. # Увімкнення живлення дисплея
  37. output:
  38.   - platform: gpio
  39.     pin: 46
  40.     id: display_power
  41.     inverted: false
  42.  
  43. # Сенсор батареї
  44. sensor:
  45.   - platform: adc
  46.     pin: GPIO3
  47.     name: "Battery Voltage"
  48.     id: battery_voltage
  49.     update_interval: 10s
  50.     attenuation: 12db
  51.     filters:
  52.       - multiply: 1.33
  53.    
  54.   - platform: template
  55.     name: "Battery Level"
  56.     id: battery_level
  57.     unit_of_measurement: "%"
  58.     accuracy_decimals: 0
  59.     update_interval: 10s
  60.     lambda: |-
  61.       float voltage = id(battery_voltage).state;
  62.       float percent = (voltage - 3.0) / (4.2 - 3.0) * 100.0;
  63.       if (percent > 100) percent = 100;
  64.       if (percent < 0) percent = 0;
  65.       return percent;
  66.  
  67. # SPI шина
  68. spi:
  69.   clk_pin: 18
  70.   mosi_pin: 17
  71.  
  72. # Дисплей ST7789V
  73. display:
  74.   - platform: mipi_spi
  75.     model: ST7789V
  76.     id: my_display
  77.     dc_pin: 15
  78.     cs_pin: 7
  79.     rotation: 270
  80.     invert_colors: false
  81.     color_order: RGB
  82.     pixel_mode: 16bit
  83.     dimensions:
  84.       width: 240
  85.       height: 280
  86.       offset_width: 0
  87.       offset_height: 0
  88.     auto_clear_enabled: false
  89.  
  90. # LVGL - мінімальний варіант
  91. lvgl:
  92.   log_level: INFO
  93.  
  94.   pages:
  95.     - id: main_page
  96.       widgets:
  97.        # Заголовок
  98.         - label:
  99.             text: "Lilka LVGL"
  100.             align: TOP_MID
  101.             y: 20
  102.        
  103.         # Батарея
  104.         - label:
  105.             id: battery_label
  106.             text: "Battery: --"
  107.             align: TOP_MID
  108.             y: 50
  109.        
  110.         # Текст по центру
  111.         - label:
  112.             text: "LVGL Works!"
  113.             align: CENTER
  114.  
  115. # Кнопки керування - БЕЗ lvgl дій поки що
  116. binary_sensor:
  117.   - platform: gpio
  118.     pin:
  119.       number: 38
  120.       mode: INPUT_PULLUP
  121.       inverted: true
  122.     name: "Button Up"
  123.     id: button_up
  124.     filters:
  125.       - delayed_on_off: 50ms
  126.    
  127.   - platform: gpio
  128.     pin:
  129.       number: 41
  130.       mode: INPUT_PULLUP
  131.       inverted: true
  132.     name: "Button Down"
  133.     id: button_down
  134.     filters:
  135.       - delayed_on_off: 50ms
  136.    
  137.   - platform: gpio
  138.     pin:
  139.       number: 39
  140.       mode: INPUT_PULLUP
  141.       inverted: true
  142.     name: "Button Left"
  143.     id: button_left
  144.     filters:
  145.       - delayed_on_off: 50ms
  146.    
  147.   - platform: gpio
  148.     pin:
  149.       number: 40
  150.       mode: INPUT_PULLUP
  151.       inverted: true
  152.     name: "Button Right"
  153.     id: button_right
  154.     filters:
  155.       - delayed_on_off: 50ms
  156.  
  157.   - platform: gpio
  158.     pin:
  159.       number: 5
  160.       mode: INPUT_PULLUP
  161.       inverted: true
  162.     name: "Button A"
  163.     id: button_a
  164.     filters:
  165.       - delayed_on_off: 50ms
  166.    
  167.   - platform: gpio
  168.     pin:
  169.       number: 6
  170.       mode: INPUT_PULLUP
  171.       inverted: true
  172.     name: "Button B"
  173.     id: button_b
  174.     filters:
  175.       - delayed_on_off: 50ms
  176.  
  177.   - platform: gpio
  178.     pin:
  179.       number: 10
  180.       mode: INPUT_PULLUP
  181.       inverted: true
  182.     name: "Button C"
  183.     id: button_c
  184.     filters:
  185.       - delayed_on_off: 50ms
  186.  
  187.   - platform: gpio
  188.     pin:
  189.       number: 9
  190.       mode: INPUT_PULLUP
  191.       inverted: true
  192.     name: "Button D"
  193.     id: button_d
  194.     filters:
  195.       - delayed_on_off: 50ms
  196.  
  197.   - platform: gpio
  198.     pin:
  199.       number: 4
  200.       mode: INPUT_PULLUP
  201.       inverted: true
  202.     name: "Button Start"
  203.     id: button_start
  204.     filters:
  205.       - delayed_on_off: 50ms
  206.  
  207.   - platform: gpio
  208.     pin:
  209.       number: 0
  210.       mode: INPUT_PULLUP
  211.       inverted: true
  212.     name: "Button Select"
  213.     id: button_select
  214.     filters:
  215.       - delayed_on_off: 50ms
  216.  
  217. # Оновлення батареї
  218. interval:
  219.   - interval: 5s
  220.     then:
  221.       - lvgl.label.update:
  222.           id: battery_label
  223.           text: !lambda |-
  224.             return std::string("Battery: ") + to_string((int)id(battery_level).state) + "%";
Advertisement
Add Comment
Please, Sign In to add comment