El componente ESP DALI implementa un maestro IEC 62386 sobre el periférico RMT, con soporte para puesta en servicio, regulación de intensidad, control de color, sensores y puentes desde Matter hacia DALI.

DALI, sigla de Digital Addressable Lighting Interface, se usa ampliamente para controlar la iluminación en edificios comerciales. Entrega bastante más que encendido y apagado: las luminarias pueden direccionarse de manera individual, asignarse a grupos, regularse en intensidad, consultarse por su estado y configurarse con comportamientos como el tiempo de atenuación o el nivel al encender.

El componente dali dentro de ESP-IoT-Solution implementa ese maestro sobre los SoC de Espressif usando el periférico RMT. Provee interfaces de programación para equipos de control, dispositivos de entrada, sensores de ocupación y de luz, y control de color DT8.

¿Por qué DALI y no un circuito de iluminación común?

Un circuito de iluminación convencional controla un grupo de lámparas conmutando su alimentación de red. DALI separa la potencia del control: las luminarias siguen alimentadas, mientras un bus digital de dos hilos transporta los comandos entre un controlador de aplicación, los equipos de control y los dispositivos de entrada.

Esa arquitectura entrega varias propiedades útiles:

  • Control individual y por grupos: una línea DALI soporta hasta 64 equipos de control con dirección corta y 16 grupos. También hay comandos de difusión general.
  • Comunicación bidireccional: la aplicación puede consultar niveles reales, tipo de dispositivo, configuración y estado de falla, en vez de asumir que un comando funcionó.
  • Regulación consistente: el control directo de potencia de arco (DAPC) usa un rango de niveles estandarizado y parámetros de atenuación almacenados.
  • Dispositivos de entrada distribuidos: interruptores y sensores comparten el mismo bus con los equipos de iluminación.
  • Control de color: la norma IEC 62386-209, conocida como DT8, define temperatura de color, RGB/RGBWAF, primario-N y control por coordenadas XY.
  • Interoperabilidad: al estar definido por la serie IEC 62386, un controlador puede trabajar con equipos de distintos fabricantes.
Línea DALI típica con un controlador de aplicación Espressif, fuente de poder del bus, equipos de control y dispositivos de entrada
Línea DALI típica con un controlador de aplicación Espressif, fuente de poder del bus, equipos de control y dispositivos de entrada

Hay una advertencia eléctrica que conviene subrayar: DALI es un bus de control de dos hilos con requisitos estrictos de nivel y temporización, así que un GPIO de Espressif no debe conectarse directamente a él. Se requiere un circuito de interfaz compatible entre las señales de 3,3 V del SoC y el bus, que opera a una tensión nominalmente mayor y necesita limitación de corriente y, según el diseño, aislamiento galvánico.

Los roles en una línea DALI

La norma separa los dispositivos por función:

  • Equipos de control (control gear): reciben comandos de iluminación y manejan una carga. Los controladores LED, los balastros electrónicos y los equipos de iluminación de emergencia son ejemplos típicos.
  • Dispositivos de control: generan información o toman decisiones de control. Acopladores de botón, sensores de ocupación, sensores de luz y controladores de aplicación entran en esta categoría.
  • Fuentes de poder e interfaces del bus: proveen las condiciones eléctricas que el bus requiere y traducen entre el bus y el dominio lógico del controlador.

La terminología importa al escribir la aplicación: los comandos de la Parte 102 apuntan a equipos de control, mientras que los de la Parte 103 apuntan a dispositivos de control y a sus instancias individuales. Un sensor puede contener más de una instancia; por ejemplo, una misma unidad física puede exponer una instancia de ocupación y otra de luz ambiente.

A diferencia de una interfaz analógica simple de 0 a 10 V, DALI transporta mensajes digitales direccionados. Cambiar el nivel de la dirección corta 7 no afecta a la 8, incluso cuando ambos controladores comparten el mismo par de hilos.

Tramas y temporización: los números

En la capa física, DALI usa codificación Manchester con un período nominal de medio bit, llamado Te, de 416,67 microsegundos. Un maestro envía tramas hacia adelante de 16 bits y el dispositivo consultado responde con una trama hacia atrás de 8 bits.

ElementoDuración en Te
Trama hacia adelante (Parte 102, con bits de inicio y término)38 Te
Trama hacia atrás (respuesta de 8 bits)22 Te

El componente usa el periférico RMT para generar y decodificar esa forma de onda, lo que calza bien porque el RMT maneja transiciones con temporización precisa por hardware y deja a la aplicación trabajar con direcciones, comandos y bytes de respuesta.

¿Qué implementa exactamente el componente?

La implementación actual entrega:

  • Transmisión y recepción Manchester basadas en RMT, incluida la inversión de polaridad para distintos circuitos de interfaz
  • Direccionamiento corto, por grupo, por difusión y por comandos especiales
  • Comandos, consultas, DAPC, escenas y configuración de equipos de control según IEC 62386-102
  • Puesta en servicio de dispositivos de control y comandos por dispositivo o por instancia según IEC 62386-103
  • Ayudas para sensores de ocupación (IEC 62386-303) y sensores de luz (IEC 62386-304)
  • Control de color DT8 de alto nivel para CCT, RGB y RGBWAF (IEC 62386-209)
  • Asignación automática de dirección corta para dispositivos de las Partes 102 y 103
  • Doble transmisión automática de los comandos de configuración que deben enviarse dos veces dentro de 100 milisegundos
  • Inserción automática del espacio mínimo entre tramas
  • Manejadores independientes, que permiten varias instancias de maestro DALI en distintos pares de pines

Al momento de la publicación, los objetivos soportados son ESP32, ESP32-S2, ESP32-S3, ESP32-C3, ESP32-C6, ESP32-H2 y ESP32-P4. El componente usa la interfaz actual del controlador RMT y requiere ESP-IDF v5.5 o posterior.

La mayoría de las capas de protocolo se selecciona en tiempo de compilación. Basta correr idf.py menuconfig, abrir la configuración del componente DALI y habilitar las partes que la aplicación necesita. El soporte de capa física de la Parte 101 siempre queda incluido, y deshabilitar las partes no usadas reduce la huella de código.

Poner en marcha un maestro DALI

El controlador necesita un pin de transmisión y uno de recepción conectados a través del circuito externo de interfaz. La inicialización se basa en manejadores:

C
#include "dali.h"
#include "dali_command.h"

dali_master_handle_t dali;

dali_master_config_t dali_config = {
    .rx_gpio = GPIO_NUM_4,
    .tx_gpio = GPIO_NUM_5,
    .invert_tx = false,
    .invert_rx = false,
};

dali_master_rmt_config_t rmt_config = {
    .mem_block_symbols = 64,
};

ESP_ERROR_CHECK(dali_new_master_rmt(&dali_config, &rmt_config, &dali));

Los campos invert_tx e invert_rx hacen adaptable el controlador a circuitos de interfaz cuya ruta lógica está invertida. Todas las transacciones básicas usan dali_master_do_transaction(), donde la configuración identifica la dirección, elige un comando o un valor DAPC, y especifica si el comando necesita transmitirse dos veces.

C
dali_master_transaction_config_t tx = {
    .addr_type = DALI_ADDR_SHORT,
    .addr = 0,
    .is_cmd = true,
    .command = DALI_CMD_RECALL_MAX_LEVEL,
    .send_twice = false,
    .tx_timeout_ms = DALI_TX_TIMEOUT_MS,
};

ESP_ERROR_CHECK(dali_master_do_transaction(dali, &tx, NULL));

Para control directo de potencia de arco, se pone is_cmd en false y el valor de potencia va en el campo command.

Más allá de la prueba de concepto

La interfaz pública de transacciones es deliberadamente de más bajo nivel que una aplicación de iluminación completa: no define salas, reglas de automatización, interfaz de usuario ni cómo se almacena la lista de dispositivos. Esa separación resulta útil tanto en una herramienta de puesta en servicio como en una pasarela de edificio, porque las transacciones DALI se mantienen iguales y el producto decide cómo se nombran, agrupan, exponen y controlan los equipos.

Con el mismo componente se pueden construir pasarelas MQTT, controladores de aprovechamiento de luz natural, herramientas de puesta en servicio y controladores multilínea. Espressif también describe una arquitectura que combina el componente con ESP-Matter para exponer luminarias y sensores DALI como puntos finales Matter puenteados, cubriendo la traducción de atributos, el almacenamiento en caché del estado y el ciclo de vida de esos puntos.

Para una instalación real, el artículo advierte que hace falta bastante más que el ejemplo dali_basic: la interfaz eléctrica, un inventario persistente, actualizaciones por aire, diagnóstico y consideraciones de seguridad que cualquier producto desplegable necesita.