Saltar al contenido principal

Trabajar con OpenEPaperLink / OpenDisplay

El ecosistema OpenEPaperLink (OEPL) y el proyecto relacionado OpenDisplay son firmware/pilas de protocolo de código abierto para controlar pantallas de tinta electrónica. Las versiones modernas funcionan sobre Bluetooth Low Energy: tu teléfono, ordenador o Home Assistant se comunican directamente con el dispositivo, sin necesidad de un punto de acceso 802.15.4 dedicado.

Esta guía cubre dos rutas de hardware de Seeed hacia ese ecosistema:

  • XIAO ePaper Display Board EN04: un kit integrado que ejecuta el firmware OpenDisplay sobre BLE.
  • ePaper Breakout Board para Seeed Studio XIAO: una ruta DIY más modular que usa OEPL Config Builder + OEPL Image Uploader junto con una placa XIAO de la serie nRF52840.

Ambos flujos comparten una filosofía común (configuración por BLE, herramientas basadas en la web, bajo consumo), pero el hardware y las herramientas de firmware/web son diferentes. Elige la pestaña que coincida con tu hardware a lo largo del artículo.

Hardware compatible

XIAO ePaper Display Board EN04

Impulsada por XIAO nRF52840 Plus, la XIAO EN04 ePaper Display Board es la forma más sencilla de empezar con pantallas de tinta electrónica habilitadas para Bluetooth. Control inalámbrico directo desde tu teléfono, ordenador o Home Assistant, sin necesidad de un punto de acceso dedicado.

  • No se requiere punto de acceso: utiliza Bluetooth Low Energy para la comunicación directa. No se necesita hardware 802.15.4.
  • Herramientas basadas en la web: instala firmware, configura dispositivos y sube imágenes directamente desde tu navegador.
  • Compatibilidad con hardware específico: familia XIAO nRF52840, EN04, EE04, etc.
  • Código abierto y gratuito: desarrollado activamente en GitHub.
  • Varios microcontroladores: nRF52840, ESP32-S3, ESP32-C6, ESP32-C3.
  • Flujo sencillo: instalación de firmware por arrastrar y soltar, configuración vía web, sin programación compleja.
  • Eficiente en batería: optimizado para e-paper de bajo consumo.
  • Comunidad activa: OpenDisplay Discord.

Paso 1: Configuración del hardware

Paso 1. Conecta la pantalla a la placa controladora
Alinea el cable FPC con el conector de la placa XIAO EN04 y luego asegura la pestaña.

tip

El lado metálico del cable FPC debe mirar hacia arriba; de lo contrario, no se mostrará ningún contenido. La mayoría de las pantallas tienen 1 y 50 impresos en el FPC; alinéalos con los números correspondientes en la placa.

Paso 2. Conecta la batería
Conecta el cable de la batería al conector JST de la placa controladora. Cable rojo al +, negro al .

precaución

Verifica la polaridad dos veces. Diferentes baterías pueden tener cableados mezclados. Los cables mal alineados pueden extraerse del conector JST con una aguja y volver a insertarse correctamente.

Paso 2: Grabar el firmware

El camino más sencillo es el instalador web de OpenDisplay.

Paso 1. Abre el OpenDisplay Web Installer en un navegador.

Paso 2. Elige Seeed EN04 4.26 o Seeed EN04 7.3 (o el preset que coincida con tu pantalla) de la lista de dispositivos.

Paso 3. Haz clic en Download Firmware y guarda NRF52840.uf2 localmente.

Paso 4. Conecta la placa EN04 mediante USB-C.

Paso 5. Pulsa el botón de reinicio dos veces consecutivas. Aparecerá una unidad USB en tu ordenador (la EN04 en modo DFU). Copia NRF52840.uf2 a esa unidad.

tip

Si el instalador falla:

  • Prueba con un cable USB diferente (algunos solo son de alimentación; usa un cable de datos).
  • Pulsa dos veces el botón de reinicio en la EN04 para volver a entrar en modo DFU.
  • Prueba con un puerto USB diferente.

Paso 6. Abre la página de configuración de OpenDisplay y conéctate a tu placa.

Si seleccionaste Seeed EN04 4.26 o Seeed EN04 7.3, verás Auto Install to Device, la forma más sencilla de configurar el kit.

Paso 7. Pulsa el botón Connect. Selecciona el nuevo dispositivo en el cuadro de diálogo de emparejamiento y pulsa Pair.

Paso 8. Pulsa Auto Install to Device para guardar la configuración en la placa.

Tras la instalación y configuración, la pantalla muestra una pantalla de inicio y está lista para recibir contenido por BLE.

Paso 3: Configurar el dispositivo por BLE

El paso de configuración de OpenDisplay del flujo de flasheo anterior ya se encarga de esto: tu EN04 ahora debería arrancar en la pantalla de inicio de OpenDisplay y aceptar cargas de imágenes.

Paso 4: Cargar imágenes

El proyecto OpenDisplay tiene un cargador dedicado basado en navegador.

Paso 1. Abre el OpenDisplay BLE Tester.

Paso 2. Haz clic en Connect y elige tu dispositivo OpenDisplay en el cuadro de diálogo de emparejamiento BLE.

Paso 3. Haz clic en Select Image y elige un archivo de tu ordenador.

tip

Para obtener los mejores resultados:

  • Usa imágenes que coincidan con la resolución de tu pantalla (el panel de 7,3" es de 800×480 px).
  • Las imágenes en blanco y negro se muestran mejor en pantallas monocromas.
  • La herramienta convierte y aplica tramado automáticamente a las imágenes en color.

Paso 4. Haz clic en Upload Image. El papel electrónico se actualiza y tu imagen aparece.

También puedes crear contenido personalizado con editores de imágenes (GIMP, Photoshop), scripts de Python + Pillow, generadores de imágenes basados en la web o una integración con Home Assistant (tratada más adelante).

Integración con Home Assistant (solo EN04 / OpenDisplay)

tip

Para integrarlo con Home Assistant, necesitas una configuración con capacidad Bluetooth:

  • Home Assistant Green (Bluetooth integrado)
  • Home Assistant OS / Supervised en hardware con soporte Bluetooth
  • ESPHome Bluetooth Proxy (recomendado para un mejor alcance; ver más abajo)

Nota: Los dispositivos Shelly que actúan como proxies Bluetooth no admiten las conexiones activas que requiere OpenDisplay, por lo que no se pueden usar.

Paso 1. Instalar la integración

Para obtener instrucciones de instalación detalladas, consulta el repositorio de la integración de OpenDisplay con Home Assistant.

La forma más sencilla es a través de HACS (Home Assistant Community Store):

Abre tu instancia de Home Assistant y abre un repositorio dentro de Home Assistant Community Store.

info

Después de instalar la integración personalizada mediante HACS, reinicia Home Assistant para que los cambios surtan efecto.

Paso 2. Añadir el dispositivo detectado

Una vez que Home Assistant haya vuelto a iniciarse:

  1. Ve a Settings → Devices & services.
  2. Busca tu dispositivo OpenDisplay en Discovered.
  3. Haz clic en Add.
  4. Establece el Name y el Area, luego haz clic en Finish.

Aparece una nueva imagen en la pantalla, lo que confirma que Home Assistant está conectado.

Automatizar las actualizaciones de la pantalla

El servicio principal es open_epaper_link.drawcustom, que te permite dibujar texto, iconos, imágenes y formas. Consulta la documentación de drawcustom para ver la referencia completa de tipos y parámetros.

Ejemplo 1: mostrar datos de sensores (Editor visual)

  1. Ve a Settings → Automations & Scenes y haz clic en Create Automation.
  2. Añade un disparador Time Pattern (por ejemplo, cada 10 minutos).
  1. Añade una ActionOpenDisplay: Draw Custom Image.
  1. Elige el dispositivo de destino.
  1. En el campo Payload, introduce la configuración del diseño:
- 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"
Entity IDs

Los IDs de entidad anteriores (por ejemplo, sensor.living_room_temperature) son marcadores de posición. Sustitúyelos por tus IDs de entidad reales de Home Assistant.

Ejemplo 2: temporizador de cuenta atrás (YAML)

Para usuarios avanzados, edita la automatización como YAML. Este ejemplo cuenta hacia atrás hasta una fecha y muestra el resultado en la pantalla.

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 del dispositivo

El device_id anterior es un marcador de posición. Encuentra el ID real de tu dispositivo de la siguiente manera:

  1. Crea una nueva automatización en el Editor Visual.
  2. Selecciona tu dispositivo OpenDisplay en la configuración de la acción.
  3. Cambia al modo YAML (menú de tres puntos en la tarjeta de acción).
  4. Copia el device_id y pégalo en tu automatización.

Extra

¿Buscas una forma elegante de montar la pantalla? Este inserto impreso en 3D encaja en el marco de fotos IKEA RODÅLM y facilita el montaje:

Solución de problemas

Problemas de instalación del firmware

Problema: el PC no detecta una nueva unidad USB después de conectar la placa.

  • Prueba con otro cable USB (cable de datos, no solo de alimentación).
  • Pulsa el botón de reinicio dos veces después de conectar la placa.

Problemas de configuración

Problema: la placa no se descubre.

  • Verifica que el LED de la placa parpadea; esto confirma que el dispositivo está alimentado.
  • Intenta reiniciar la placa.
  • Vuelve a grabar el firmware.

Problema: la pantalla no muestra nada después de instalar el firmware.

  • Verifica la orientación del cable FPC (contactos metálicos hacia arriba).
  • Confirma que el cable está completamente insertado y bloqueado.
  • Vuelve a comprobar la configuración mediante el configurador.

Problemas de conexión Bluetooth

Problema: no se puede encontrar el dispositivo en el emparejamiento Bluetooth.

  • Asegúrate de que el dispositivo esté encendido y el firmware instalado.
  • Acércate (dentro de 2–3 m).
  • Confirma que el Bluetooth está activado en tu ordenador / teléfono.

Problema: la conexión se corta durante la carga de la imagen.

  • Mantente cerca del dispositivo durante la carga.
  • Carga la batería suficientemente o aliméntala mediante USB.
  • Evita subir imágenes muy grandes.
  • Inténtalo de nuevo en un entorno Bluetooth menos congestionado.

Problemas de batería y alimentación

Problema: poca duración de la batería.

  • Configura intervalos de suspensión más largos en el configurador.
  • Ejecuta siempre el firmware más reciente (cada versión mejora el consumo de energía).
  • Reduce la frecuencia de actualización de la pantalla.
  • Verifica que la batería esté completamente cargada (4,2 V para Li-Po).

Problema: el dispositivo no carga.

  • Comprueba la polaridad (rojo = +, negro = −).
  • Verifica que el cable de carga proporcione ≥500 mA.
  • Asegúrate de que el interruptor de encendido esté en ON.
  • Prueba con otra fuente de alimentación USB.

Problemas con Home Assistant / Integración

Problema: "Insufficient connection slots" al añadir dispositivos mediante Raspberry Pi + HA.

Esto suele ocurrir porque el adaptador Bluetooth integrado de la Raspberry Pi ha alcanzado su límite de conexiones simultáneas.

Error: Insufficient connection slots Ejemplo del mensaje "Insufficient connection slots".

Solución recomendada: usa un dispositivo ESP32 (por ejemplo, XIAO ESP32S3) como ESPHome Bluetooth Proxy. Esto descarga la conexión Bluetooth del Pi, proporcionando "slots" más estables para tus pantallas de papel electrónico.

Uso de ESPHome Bluetooth Proxy

Si te aparece "Insufficient connection slots" usando una Raspberry Pi con Home Assistant, un ESPHome Bluetooth Proxy es la solución más efectiva.

Requisitos previos

  • Un dispositivo ESP32 (por ejemplo, XIAO ESP32S3).
  • ESPHome instalado en Home Assistant.
  • Un cable de datos USB para conectar el ESP32 a tu Pi (para el primer flasheo).

Configuración paso a paso

  1. Conecta el dispositivo: enchufa el XIAO ESP32S3 en un puerto USB de tu Raspberry Pi.

  2. Crea una nueva configuración ESPHome con el YAML siguiente:

    Configuración YAML de ESPHome

    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. Instalar / flashear:

    • Elige Install → Plug into this computer (o el dispositivo que ejecuta ESPHome).

      Proceso de flasheo de ESPHome

    • En el primer flasheo, ESPHome puede descargar la herramienta esp-idf. Asegúrate de que tu entorno tenga acceso estable a Internet y a GitHub.

    • Después de la compilación, los registros muestran "WiFi connected" y actividad de escaneo Bluetooth.

  4. Añade el proxy a Home Assistant:

    • Home Assistant descubrirá automáticamente el nuevo Bluetooth Proxy.
    • Una vez añadido, tus pantallas de papel electrónico deberían poder descubrirse a través del proxy sin el error de "insufficient slots".

    Correcto: Bluetooth Proxy conectado

    Correcto: pantalla de papel electrónico añadida

Recursos

Soporte técnico y debate sobre el producto

Gracias por elegir nuestros productos. Estamos aquí para ofrecerte diferentes tipos de soporte y garantizar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para adaptarnos a distintas preferencias y necesidades.

Loading Comments...