跳转到内容

Waveshare 电子纸显示屏

waveshare_epaper 显示平台允许您在 ESPHome 中使用 Waveshare 销售的一些电子纸显示屏。2.13 英寸 TTGO 模块和板载 ESP32 的 Waveshare 云模块也受支持。根据您的 TTGO 板的具体版本,您可能需要尝试 -b73-b1 版本(见下文)。 M5Stack Core Ink 中使用的 1.54 英寸 Good Display gdew0154m09 也受支持。 其他供应商销售的类似模块也可能工作,但尚未经过测试。

目前,Esphome 管理的大多数显示屏是单色电子墨水屏;但 Esphome 也支持能够显示多达 7 种颜色的电子墨水屏。

Waveshare 电子纸 2.9 英寸电子纸显示屏。
Waveshare 电子纸 7.3 英寸 ACeP 7 色电子纸显示屏。

ESPHome 为此集成选择的通信方式是 4 线 SPI,因为它最稳定且高速。因此,您需要确保您的板设置为 4 线 SPI 模式,并在配置中有 spi: 部分。

电子纸引脚ESP 引脚ESPHome 选项
VCC3.3VN/A
GNDGNDN/A
CLK任意 GPIOspi.clk_pin
DIN任意 GPIOspi.mosi_pin
CS任意 GPIOcs_pin
DC任意 GPIOdc_pin
BUSY(可选)任意 GPIObusy_pin
RESET(可选)任意 GPIOreset_pin
# 配置示例
font:
- file: 'fonts/Comic Sans MS.ttf'
id: font1
size: 8
spi:
clk_pin: D0
mosi_pin: D1
display:
- platform: waveshare_epaper
cs_pin: D2
dc_pin: D3
busy_pin: D4
reset_pin: D5
model: 2.90in
full_update_every: 30
lambda: |-
it.print(0, 0, id(font1), "Hello World!");

对于 7 色显示屏,可以在 lambda 函数中这样定义颜色:

lambda: |-
const auto BLACK = Color(0, 0, 0, 0);
const auto RED = Color(255, 0, 0, 0);
const auto GREEN = Color(0, 255, 0, 0);
const auto BLUE = Color(0, 0, 255, 0);
const auto YELLOW = Color(255, 255, 0, 0);
const auto ORANGE = Color(255, 127, 0, 0);
const auto WHITE = Color(255, 255, 255, 0);
it.print(0, 0, id(font1), BLUE, "Hello World in blue!");
it.print(100, 100, id(font1), RED, "Hello World in red!");
  • cs_pin (**必填”, 引脚模式):CS 引脚。

  • dc_pin (**必填”, 引脚模式):DC 引脚。

  • model (必填):电子纸显示屏的型号。选项有:

    • 1.54in
    • 1.54inv2
    • 1.54inv2-b - 黑/白/红
    • 2.13in - 未测试
    • 2.13in-ttgo - T5_V2.3 已测试。也适用于 Wemos D1 Mini ePaper Shield 2.13 1.0.0 “LOLIN”
    • 2.13in-ttgo-b73 - 带 B73 显示屏的 T5_V2.3 已测试
    • 2.13in-ttgo-b74 - 带 B74 显示屏的 T5_V2.3.1 已测试
    • 2.13in-ttgo-b1 - 带 B1 显示屏的 T5_V2.3 已测试
    • 2.13in-ttgo-dke - 带 DKE group 显示屏 (DEPG0213BN) 的 T5_V2.3 已测试
    • 2.13inv2 - 2.13 英寸 V2 显示屏 (Pico e-Paper 2.13v2 和云模块)
    • 2.13inv3 - 2.13 英寸 V3 显示屏 (Pico e-Paper 2.13v3)
    • 2.70in - 目前不适用于 HAT Rev 2.1 版本
    • 2.70inv2
    • 2.70in-b - 黑/白/红
    • 2.70in-bv2 - 黑/白/红
    • 2.90in
    • 2.90in-dke
    • 2.90inv2
    • 2.90inv2-r2 - 2.9 英寸 V2 显示屏,但具有与 2.90inv2 不同的初始化和全/部分显示刷新管理
    • 2.90in-b - 仅 B/W 渲染
    • 2.90in-bV3 - 仅 B/W 渲染
    • 4.20in
    • 4.20in-bV2 - 仅 B/W 渲染
    • gdey042t81 - GoodDisplay GDEY042T81 4.2 英寸 B/W
    • 4.20in-bV2-bwr - 启用 BWR 渲染(显示缓冲区使用的 RAM 量是 B/W 渲染的两倍)
    • 5.83in
    • 5.83inv2
    • gdey0583t81 - GoodDisplay GDEY0583T81 5.83 英寸 B/W
    • 7.30in-f - 7.3 英寸 7 色显示屏(黑、白、红、黄、蓝、绿和橙)
    • 7.50in
    • 7.50in-bV2 - 也支持 v3,仅 B/W 渲染
    • 7.50in-bV3 - 背面有 ‘(V3)’ 贴纸的显示屏,仅 B/W 渲染
    • 7.50in-bV3-bwr - 背面有 ‘(V3)’ 贴纸的显示屏,启用 BWR 渲染(显示缓冲区使用的 RAM 量是 B/W 渲染的两倍)
    • 7.50in-bc - 背面有版本贴纸 ‘(C)’ 的显示屏,仅 B/W 渲染
    • 7.50inV2 - 无法在 ESP8266 上使用,因为 RAM 不足
    • 7.50inV2alt(上述 7.50inV2 的替代版本)
    • 7.50inV2p - 支持部分刷新和快速刷新(仅适用于 2023 年 9 月之后制造的 7.50inV2 型号)
    • 7.50in-hd-b - 无法在 ESP8266 上使用,因为 RAM 不足
    • gdey029t94 - GooDisplay GDEY029t94,如 seeedstudio 的单色 2.9 英寸显示屏中所使用
    • gdew029t5 - GooDisplay GDEW029T5,如 AdaFruit MagTag 和 Pimoroni Badger 上所用
    • 1.54in-m5coreink-m09 - GoodDisplay gdew0154m09,如 M5Stack Core Ink 中所用
    • 13.3in-k - 13.3 英寸,K 型号,960x680,仅 B/W 渲染

WARNING

gdew0154m09Waveshare 7.30in-fWaveshare 7.50in V2 型号上的 BUSY 引脚必须反转以防止永久性显示屏损坏。在配置中将 busy 引脚设置为 inverted: true

  • busy_pin (可选, 引脚模式):BUSY 引脚。默认为未连接。

  • reset_pin (可选, 引脚模式):RESET 引脚。默认为未连接。 如果未连接到 GPIO 引脚,请确保将此引脚拉高(通过电阻连接到 3.3V)。 2.13 英寸 B74 和 V2 显示屏变体需要 reset 引脚。

  • rotation (可选):设置显示屏旋转。您在 lambda: 中绘制的所有内容都将被此选项旋转。可选 (默认)、90°180°270°

  • full_update_every (可选, int):电子纸显示屏有两种切换到下一张图像的模式:仅更改已更改像素的部分更新和首先清除整个显示屏然后重新绘制图像的完全更新模式。前者更快更好,但偶尔需要进行完全更新,因为伪影会累积。在 1.54in1.54inv22.13in2.13inv22.90in2.90inv27.50inV2pgdew029t5 型号上,您可以选择使用此选项仅在每第 x 次进行完全重绘。在所述型号上默认为 30,所有其他型号为完全更新。

  • reset_duration (可选, 时间):显示屏重置操作的持续时间。默认为 200ms。 将此值设置为 2ms 可能会解决较新电子纸驱动模块(例如 Rev 2.1)的问题。

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

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

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

  • spi_id (可选, ID):如果要使用多个 SPI 总线,手动指定 SPI 组件 的 ID。

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