Skip to content

← Volver a productos

Lumware

Lumware

Software para tiras de luz programables. Un host Python decodifica medios, aplica el pipeline de color y envía frames por USB serie a un Arduino que pinta una tira NeoPixel.


Lumware streams light. Real pixels, real frames, real photons. No mood-lighting heuristics: the colour that hits the LED is the same colour the dashboard previews.

En xifres

  • 30 fps sostingut a 299 LEDs (RGB), measured.
  • Wire baud 500 000, frames binaris amb CRC8.
  • Frame budget host ~8 ms, latency p99 < 12 ms (host → photon).
  • Transport serial per a hardware real; transport virtual per a desenvolupament sense Arduino — la UI rep exactament els mateixos bytes que rebria la tira.

La família

  • Lumware (flagship, aquest hub) — host → strip.
  • Lumware Capturesensor → host. Repository separat, planejat.
  • Lumware Stageunity ↔ strip. Repository separat, planejat.

Què no és

No automatització de la llar. No mood-lighting. No núvol — viu a la LAN. No depèn de hardware: el transport virtual arrenca sense Arduino i les imatges de calibració se sembren soles al primer boot.

Aprofundir

Els deep-dives — un script de 200 línies que es converteix en una família, l’electrònica mínima, el firmware Arduino, el protocol binari, l’arquitectura Python, BMAD i les branques, la identitat spectrum R/G/B/W, la UI web local, els benchmarks — viuen com a sèrie al blog. Cada article enllaça amb l’anterior i el següent dins de la sèrie.

Serie completa

code · que-es-lumware-es.mdx

Parte de Lumware 01/10

Qué es Lumware

Empecé queriendo hacer parpadear unos LEDs. He acabado diseñando una familia de software para tiras de luz programables.

  • #lumware
  • #intro
  • #hardware
  • #software
code · de-script-a-producte-es.mdx

Parte de Lumware 02/10

De script a producto

Había un script de 200 líneas. Funcionaba. Ahí no acababa la historia — sin el paso siguiente, no habría familia.

  • #lumware
  • #procés
  • #refactor
  • #brand
En proceso

La electrónica mínima para encender una tira

Seis componentes. Si falta uno, los síntomas engañan: primeros LEDs bien, después color aleatorio. Por qué cada pieza es imprescindible.

bench · 2026-05-25

Parte de Lumware 04/10

El firmware: Arduino y timing crítico

El Arduino Uno tiene 2 KB de RAM. Una tira de 300 LEDs son 900 bytes solo de píxeles. Cada decisión es una cuestión de espacio.

  • #lumware
  • #firmware
  • #arduino
  • #neopixel
code · protocol-binari-es.mdx

Parte de Lumware 05/10

Por qué un protocolo binario (y no JSON)

La opción fácil era JSON. También era la que hacía imposible el target de 30 FPS. Un protocolo binario de seis bytes de overhead resuelve el cuello de botella.

  • #lumware
  • #protocol
  • #host
  • #firmware
code · arquitectura-python-es.mdx

Parte de Lumware 06/10

Arquitectura del host: events, settings, scheduler

Tres decisiones cambiaron cómo pensé el host. Ninguna es espectacular por separado. Juntas, hacen toda la diferencia.

  • #lumware
  • #python
  • #arquitectura
  • #eventbus
code · bmad-i-branches-es.mdx

Parte de Lumware 07/10

BMAD: planificar antes de escribir código

Si escribo código directamente, me pierdo a la tercera semana. Si planifico de más, me pierdo antes. Tuve que aprender a planificar sin ahogarme planificando.

  • #lumware
  • #procés
  • #bmad
  • #git
design · identitat-spectrum-es.mdx

Parte de Lumware 08/10

Identidad: spectrum R/G/B/W

El nombre tardó más en salir que la arquitectura. Pero cuando salió, todo encajó — hasta los colores de la marca.

  • #lumware
  • #marca
  • #identitat
  • #colors
code · ui-web-local-es.mdx

Parte de Lumware 09/10

La UI web local: FastAPI dentro de la app

Un mando físico sería óptimo. Construirlo, no. Puse la UI en el navegador y la hice accesible desde cualquier dispositivo de la red.

  • #lumware
  • #frontend
  • #fastapi
  • #react
En proceso

Framerate real: benchmarks y bottlenecks

El techo teórico es una cosa. Lo que mides es otra. La diferencia entre ambos es donde vive el trabajo pendiente.