跳转到内容

电子墨水屏 SPI 显示屏

epaper_spi 显示平台提供了一种新的电子墨水屏显示组件架构,具有改进的状态管理和非阻塞操作。该组件实现了基于队列的状态机,消除了对 busy 引脚的阻塞等待,并与 ESPHome 的异步架构更好地集成。

通信方式使用 SPI,因此您需要在配置中有一个 spi: 部分。

该驱动支持多种显示屏,还有针对带有集成显示屏的 ESP32 开发板的特定配置。对于这些开发板,预定义的配置将设置正确的引脚和显示屏尺寸。

display:
- platform: epaper_spi
model: Seeed-reTerminal-E1002
lambda: |-
it.filled_circle(it.get_width() / 2, it.get_height() / 2, 50, Color::BLACK);

以下是支持的控制器芯片。仅使用芯片名称作为型号需要完整配置,包括指定的引脚和尺寸。

芯片名称制造商产品描述
JD79660Jadardhttps://www.tdytech.com/en/ (B2B,请参考供应商)
Spectra-E6Einkhttps://www.eink.com/brand/detail/Spectra6
SSD1677Solomonhttps://www.solomon-systech.com/product/ssd1677/

这些型号代表具有已知尺寸但没有微控制器的显示屏面板。配置需要指定用于连接显示屏的引脚。

显示名称制造商产品描述
Waveshare-1.54in-GWavesharehttps://www.waveshare.com/1.54inch-e-paper-g.htm
Waveshare-2.13in-v3Wavesharehttps://www.waveshare.com/pico-epaper-2.13.htm
Waveshare-4.26inWavesharehttps://www.waveshare.com/4.26inch-e-paper.htm

这些型号对应于与微控制器集成的显示屏,具有完整的预定义配置,因此最少只需配置型号名称。如果需要,其他选项可以在配置中覆盖。

型号名称制造商产品描述
Seeed-reTerminal-E1002Seeed Studiohttps://www.seeedstudio.com/reTerminal-E1002-p-6533.html
Seeed-ee04-mono-4.26Seeed StudioSeeed EE04 开发板配备 Waveshare 4.26” 单色电子墨水屏。https://www.seeedstudio.com/XIAO-ePaper-Display-Board-EE04-p-6560.html

使用定义集成显示屏开发板的型号时,大多数配置(如引脚和尺寸)将默认设置,但如果需要可以覆盖。

  • model (必填):电子墨水屏的型号。请参阅上表了解选项(大小写不敏感)。

  • cs_pin (必填, 引脚模式):CS 引脚。集成开发板已预定义。

  • dc_pin (必填, 引脚模式):DC 引脚。集成开发板已预定义。

  • busy_pin (可选, 引脚模式):BUSY 引脚(如使用)。

  • reset_pin (可选, 引脚模式):RESET 引脚(如使用)。 如果未连接到 GPIO 引脚,请确保将此引脚拉高(通过电阻连接到 3.3V)。

  • dimensions (必填, dict):屏幕尺寸,指定为 宽度 x 高度(如 320x240)或使用单独的配置键。对于具有完整预定义配置的集成开发板,这是可选的,并将由所选型号预设。尺寸以像素为单位指定,宽度和高度必须大于 0。

    • height (必填, int):指定显示屏高度。
    • width (必填, int):指定显示屏宽度。
  • rotation (可选, int):设置显示屏的旋转。在 lambda: 中绘制的所有内容都将被此选项旋转。可选 (默认)、90°180°270°

  • transform (可选, dict):如果 rotation 不够用,使用此选项变换显示屏。选项为:

    • mirror_x (必填, 布尔值):如果为 true,镜像 x 轴。
    • mirror_y (必填, 布尔值):如果为 true,镜像 y 轴。
  • reset_duration (可选, 时间):显示屏复位操作的持续时间。默认为 200ms

  • lambda (可选, lambda):用于在显示屏上渲染内容的 lambda。 详见显示渲染引擎

  • pages (可选, 列表):显示页面而不是单个 lambda。详见显示页面

  • update_interval (可选, 时间):重新绘制屏幕的间隔。默认为 60s, 使用 never 仅通过 component.update 手动更新屏幕。

  • full_update_every (可选, int):在支持部分更新的屏幕上,这设置强制完整更新之前的更新次数。默认为 1,即每次更新都是完整更新。

  • spi_id (可选, ID):如果您的配置定义了多个 SPI 总线,则需要指定 SPI 组件 的 ID。如果只配置了单个 SPI 总线,则这是可选的。

  • id (可选, ID):手动指定用于代码生成的 ID。

display:
- platform: epaper_spi
model: SSD1677
full_update_every: 10
update_interval: 5s
dimensions:
width: 800
height: 480
transform:
mirror_x: true
mirror_y: false
rotation: 90 # 旋转为竖屏
cs_pin: GPIOXX
dc_pin: GPIOXX
reset_pin: GPIOXX
busy_pin: { number: GPIOXX, inverted: False, mode: { input: True, pulldown: True } }