Skip to main content

搭配 OpenEPaperLink / OpenDisplay 使用

OpenEPaperLink (OEPL) 生态系统以及相关的 OpenDisplay 项目,是用于驱动电子纸显示屏的开源固件/协议栈。最新版本运行在 蓝牙低功耗(Bluetooth Low Energy) 之上——你的手机、电脑或 Home Assistant 可以直接与设备通信,无需专用的 802.15.4 接入点。

本指南涵盖进入该生态系统的两种 Seeed 硬件路径:

  • XIAO ePaper Display Board EN04 —— 运行 OpenDisplay 固件的集成套件,通过 BLE 工作。
  • 适用于 Seeed Studio XIAO 的 ePaper Breakout Board —— 更模块化的 DIY 路径,搭配 OEPL Config Builder + OEPL Image Uploader 以及 XIAO nRF52840 系列开发板使用。

这两种流程在理念上是一致的(BLE 配置、基于 Web 的工具、低功耗),但硬件以及固件/网页工具有所不同。请在整篇文章中选择与你硬件相匹配的选项卡。

兼容硬件

XIAO ePaper Display Board EN04

XIAO nRF52840 Plus 提供动力,XIAO EN04 ePaper Display Board 是入门蓝牙电子纸显示屏的最简方式。可从手机、电脑或 Home Assistant 直接进行无线控制——无需专用 AP。

  • 无需接入点 —— 使用蓝牙低功耗进行直接通信,无需 802.15.4 硬件。
  • 基于 Web 的工具 —— 直接在浏览器中安装固件、配置设备并上传图像。
  • 专为硬件打造的支持 —— XIAO nRF52840 系列、EN04、EE04 等。
  • 开源且免费 —— 在 GitHub 上持续开发。
  • 支持多种微控制器 —— nRF52840、ESP32-S3、ESP32-C6、ESP32-C3。
  • 流程简单 —— 拖放固件安装,通过网页配置,无需复杂编程。
  • 电池友好 —— 为低功耗电子纸进行了优化。
  • 活跃的社区 —— OpenDisplay Discord

步骤 1:硬件连接

步骤 1. 将显示屏连接到驱动板
将 FPC 软排线与 XIAO EN04 板上的连接器对齐,然后扣上卡扣固定。

tip

FPC 软排线的金属面应朝上,否则不会显示任何内容。大多数显示屏在 FPC 上印有 150,请将它们与板子上对应的数字对齐。

步骤 2. 连接电池
将电池线连接到驱动板上的 JST 接口。红线接 +,黑线接

caution

请再次确认极性。不同电池的线序可能不同。若线序不对,可以用针从 JST 接头中取出导线并重新插入到正确位置。

步骤 2:烧录固件

最简单的方式是使用 OpenDisplay Web 安装器。

步骤 1. 在浏览器中打开 OpenDisplay Web Installer

步骤 2. 在设备列表中选择 Seeed EN04 4.26Seeed EN04 7.3(或与你的显示屏匹配的预设)。

步骤 3. 点击 Download Firmware 并将 NRF52840.uf2 保存到本地。

步骤 4. 通过 USB-C 连接 EN04 板。

步骤 5. 连续按下复位按钮 两次。电脑上会出现一个 USB 驱动器(处于 DFU 模式的 EN04)。将 NRF52840.uf2 复制到该驱动器中。

tip

如果安装器失败:

  • 尝试更换 USB 线(有些线仅供电——请使用数据线)。
  • 在 EN04 上按两次复位按钮重新进入 DFU 模式。
  • 尝试更换 USB 接口。

步骤 6. 打开 OpenDisplay Configuration Page 并连接到你的开发板。

如果你选择了 Seeed EN04 4.26Seeed EN04 7.3,你会看到 Auto Install to Device —— 配置套件的最简方式。

步骤 7. 点击 Connect 按钮。在配对对话框中选择新设备并点击 Pair

步骤 8. 点击 Auto Install to Device 将配置保存到开发板。

安装和配置完成后,显示屏会显示启动画面,并准备好通过 BLE 接收内容。

步骤 3:通过 BLE 配置设备

前面烧录流程中的 OpenDisplay 配置步骤已经处理好了这一点——你的 EN04 现在应该会启动到 OpenDisplay 启动界面,并接受图像上传。

步骤 4:上传图像

OpenDisplay 项目提供了一个专用的基于浏览器的上传工具。

步骤 1. 打开 OpenDisplay BLE Tester

步骤 2. 点击 Connect,然后在 BLE 配对对话框中选择你的 OpenDisplay 设备。

步骤 3. 点击 Select Image 并从电脑中选择一个文件。

tip

为了获得最佳效果:

  • 使用与显示屏分辨率匹配的图像(7.3" 面板为 800×480 像素)。
  • 黑白图像在单色显示屏上的显示效果最佳。
  • 该工具会自动转换并抖动处理彩色图像。

步骤 4. 点击 Upload Image。电子墨水屏会刷新并显示你的图像。

你也可以使用图像编辑器(GIMP、Photoshop)、Python + Pillow 脚本、基于 Web 的图像生成器,或 Home Assistant 集成(见下文)来创建自定义内容。

Home Assistant 集成(仅限 EN04 / OpenDisplay)

tip

要与 Home Assistant 集成,你需要一个支持蓝牙的环境:

  • Home Assistant Green(内置蓝牙)
  • 运行在支持蓝牙硬件上的 Home Assistant OS / Supervised
  • ESPHome Bluetooth Proxy(推荐用于获得更好的覆盖范围——见下文)

注意: 作为蓝牙代理的 Shelly 设备支持 OpenDisplay 所需的主动连接,因此不能使用。

步骤 1. 安装集成

有关详细安装说明,请参阅 OpenDisplay Home Assistant Integration 仓库

最简单的方式是通过 HACS(Home Assistant Community Store):

打开你的 Home Assistant 实例,并在 Home Assistant Community Store 中打开一个仓库。

info

通过 HACS 安装自定义集成后,重启 Home Assistant 以使更改生效。

步骤 2. 添加已发现的设备

当 Home Assistant 重启完成后:

  1. 进入 Settings → Devices & services
  2. Discovered 下找到你的 OpenDisplay 设备。
  3. 点击 Add
  4. 设置 NameArea,然后点击 Finish

显示屏上会出现一张新图像,以确认 Home Assistant 已连接。

自动化更新显示内容

主要的服务是 open_epaper_link.drawcustom,它允许你绘制文本、图标、图像和形状。完整的类型 / 参数参考请参阅 drawcustom 文档

示例 1 —— 显示传感器数据(可视化编辑器)

  1. 进入 Settings → Automations & Scenes 并点击 Create Automation
  2. 添加一个 Time Pattern 触发器(例如每 10 分钟)。
  1. 添加一个 ActionOpenDisplay: Draw Custom Image
  1. 选择目标设备。
  1. Payload 字段中输入布局配置:
- type: "text"
value: "Living Room"
x: "50%"
y: 50
anchor: "mm"
size: 70
color: "red"
- type: "icon"
value: "mdi:thermometer"
x: "35%"
y: 200
anchor: "mm"
size: 100
color: "black"
- type: "text"
value: "{{ states('sensor.living_room_temperature') }}°C"
x: "65%"
y: 200
anchor: "mm"
size: 100
color: "black"
- type: "icon"
value: "mdi:water-percent"
x: "35%"
y: 350
anchor: "mm"
size: 100
color: "black"
- type: "text"
value: "{{ states('sensor.living_room_humidity') }}%"
x: "65%"
y: 350
anchor: "mm"
size: 100
color: "black"
实体 ID

上面的实体 ID(例如 sensor.living_room_temperature)是占位符。请将它们替换为你在 Home Assistant 中实际使用的实体 ID。

示例 2 —— 倒计时定时器(YAML)

对于高级用户,可以以 YAML 形式编辑自动化。此示例会倒计时到某个日期,并将结果渲染到显示屏上。

alias: Update ePaper Display - Countdown
description: Displays days until Christmas
triggers:
- at: "00:00:00"
trigger: time
actions:
- variables:
days_left: "{{ (as_datetime('2025-12-24').date() - now().date()).days }}"
- action: open_epaper_link.drawcustom
data:
background: white
payload:
- type: text
value: "{{ 'Christmas Countdown' if days_left > 0 else '' }}"
x: 50%
"y": 50
anchor: mm
size: 60
color: black
- type: text
value: "{{ days_left if days_left > 0 else '' }}"
x: 50%
"y": 240
anchor: mm
size: 250
color: red
- type: text
value: >-
{{ 'Day Left' if days_left == 1 else ('Days Left' if days_left > 0
else '') }}
x: 50%
"y": 430
anchor: mm
size: 60
color: black
- type: text
value: "{{ 'It''s Christmas!!!' if days_left == 0 else '' }}"
x: 50%
"y": 50%
anchor: mm
size: 100
color: red
target:
device_id: 2ad706d4aa7c657b6fe99a733cef2253
设备 ID

上面的 device_id 是一个占位符。通过以下方式查找你的实际设备 ID:

  1. 在可视化编辑器中创建一个新的自动化。
  2. 在动作设置中选择你的 OpenDisplay 设备。
  3. 切换到 YAML 模式(动作卡片中的三点菜单)。
  4. 复制 device_id 并将其粘贴到你的自动化中。

额外内容

在寻找一种时尚的方式来安装显示屏吗?这个 3D 打印的嵌件适配宜家 RODÅLM 相框,让安装变得轻松:

故障排查

固件安装问题

问题:连接开发板后,电脑未检测到新的 USB 驱动器。

  • 尝试使用另一根 USB 线(数据线,而非仅供电线)。
  • 连接开发板后,按两次复位按钮。

配置问题

问题:开发板未被发现。

  • 检查开发板上的 LED 是否闪烁——以确认设备已上电。
  • 尝试重启开发板。
  • 重新烧录固件。

问题:安装固件后显示屏没有任何显示。

  • 检查 FPC 线缆方向(金属触点朝上)。
  • 确认线缆已完全插入并锁紧。
  • 通过配置工具重新检查配置。

蓝牙连接问题

问题:在蓝牙配对中找不到设备。

  • 确保设备已上电且固件已安装。
  • 靠近一些(在 2–3 米范围内)。
  • 确认电脑 / 手机已启用蓝牙。

问题:在上传图像过程中连接中断。

  • 上传过程中保持靠近设备。
  • 确保电池电量充足或通过 USB 供电。
  • 避免上传非常大的图像。
  • 在蓝牙环境不那么拥挤的地方重试。

电池与电源问题

问题:电池续航时间短。

  • 在配置工具中设置更长的休眠间隔。
  • 始终运行最新固件(每个版本都会改进功耗)。
  • 降低显示刷新频率。
  • 确认电池已完全充电(锂聚合物电池为 4.2 V)。

问题:设备无法充电。

  • 检查极性(红色 = +,黑色 = −)。
  • 确认充电线缆可提供 ≥500 mA 电流。
  • 确保电源开关处于 ON 状态。
  • 尝试使用不同的 USB 电源。

Home Assistant / 集成问题

问题:通过 Raspberry Pi + HA 添加设备时出现 "Insufficient connection slots"。

这通常是因为 Raspberry Pi 内置的蓝牙适配器已达到并发连接上限。

Error: Insufficient connection slots "Insufficient connection slots" 提示示例。

推荐解决方案:使用 ESP32 设备(例如 XIAO ESP32S3)作为 ESPHome Bluetooth Proxy。这样可以将蓝牙连接从 Pi 上卸载,为你的电子纸显示屏提供更稳定的“连接槽位”。

使用 ESPHome Bluetooth Proxy

如果你在使用带 Home Assistant 的 Raspberry Pi 时遇到 "Insufficient connection slots",ESPHome Bluetooth Proxy 是最有效的解决方案。

前提条件

  • 一块 ESP32 设备(例如 XIAO ESP32S3)。
  • 在 Home Assistant 中已安装 ESPHome。
  • 一根用于首次烧录、将 ESP32 连接到 Pi 的 USB 数据线。

分步配置

  1. 连接设备——将 XIAO ESP32S3 插入 Raspberry Pi 的一个 USB 端口。

  2. 使用下面的 YAML 创建一个新的 ESPHome 配置

    ESPHome YAML Configuration

    esphome:
    name: esps3-proxy
    friendly_name: ESP32S3 Bluetooth Proxy

    esp32:
    board: esp32-s3-devkitc-1
    framework:
    type: esp-idf

    # 1. Enable detailed logging (useful for debugging)
    logger:
    level: VERY_VERBOSE

    # 2. Core: Enable Bluetooth Tracker
    esp32_ble_tracker:
    scan_parameters:
    active: true

    # 3. Core: Enable Bluetooth Proxy
    bluetooth_proxy:
    active: true

    api:
    encryption:
    key: "YOUR_ENCRYPTION_KEY"

    ota:
    - platform: esphome
    password: "YOUR_OTA_PASSWORD"

    wifi:
    ssid: "YOUR_WIFI_SSID"
    password: "YOUR_WIFI_PASSWORD"

    captive_portal:
  3. 安装 / 烧录

    • 选择 Install → Plug into this computer(或运行 ESPHome 的设备)。

      ESPHome flashing process

    • 在首次烧录时,ESPHome 可能会下载 esp-idf 工具链。请确保你的环境可以稳定访问 GitHub。

    • 编译完成后,日志会显示 "WiFi connected" 和蓝牙扫描活动。

  4. 将代理添加到 Home Assistant

    • Home Assistant 会自动发现新的 Bluetooth Proxy。
    • 添加完成后,你的电子纸显示屏应能通过该代理被发现,而不会再出现 "insufficient slots" 错误。

    Success: Bluetooth Proxy connected

    Success: e-paper display added

资源

技术支持与产品讨论

感谢你选择我们的产品!我们将为你提供多种支持,确保你在使用我们产品的过程中尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...