Skip to content

← Tornar a productes

Lumware

Lumware

Software per a tires de llum programables. Un host Python decodifica mèdia, aplica el pipeline de color i envia frames per USB sèrie 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 a 299 LEDs (RGB), sostingut en transport virtual; la mesura amb hardware real és pendent (perf spike, Epic 04).
  • Wire baud 500 000, frames binaris amb CRC8.
  • Frame budget host ~8 ms, latency p99 < 12 ms (host → photon): objectius de disseny, encara no mesurats sobre Arduino.
  • 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.

Sèrie completa

Què és Lumware
Codi · 25 de maig del 2026

Què és Lumware

Vaig començar volent fer parpellejar uns LEDs. He acabat dissenyant una família de software per a tires de llum programables.

Part de Lumware
De script a producte
Codi · 25 de maig del 2026

De script a producte

Hi havia un script de 200 línies. Funcionava. Aquí no acabava la història — sense la passa següent, no hi hauria família.

Part de Lumware
En procés

L'electrònica mínima per encendre una tira

Sis components. Si en falta un, els símptomes són enganyosos: primers LEDs bé, després color aleatori. Per què cada peça és imprescindible.

El firmware: Arduino i timing crític
Electrònica · DIY · 25 de maig del 2026

El firmware: Arduino i timing crític

L'Arduino Uno té 2 KB de RAM. Una tira de 300 LEDs són 900 bytes només de pixels. Cada decisió és una qüestió d'espai.

Part de Lumware
Per què un protocol binari (i no JSON)
Codi · 25 de maig del 2026

Per què un protocol binari (i no JSON)

L'opció fàcil era JSON. També era la que feia impossible el target de 30 FPS. Un protocol binari de sis bytes d'overhead resol el coll d'ampolla.

Part de Lumware
Arquitectura del host: events, settings, scheduler
Codi · 25 de maig del 2026

Arquitectura del host: events, settings, scheduler

Tres decisions van canviar com vaig pensar el host. Cap d'elles és espectacular per separat. Juntes, fan tota la diferència.

Part de Lumware
BMAD: planificar abans d'escriure codi
Codi · 25 de maig del 2026

BMAD: planificar abans d'escriure codi

Si escric codi directament, em perd a la tercera setmana. Si planifico massa, em perd abans. Vaig haver d'aprendre a planificar sense ofegar-me planificant.

Part de Lumware
Identitat: spectrum R/G/B/W
Disseny · Marca · 25 de maig del 2026

Identitat: spectrum R/G/B/W

El nom va trigar més a sortir que l'arquitectura. Però quan va sortir, tot va encaixar — fins i tot els colors de la marca.

Part de Lumware
La UI web local: FastAPI dins l'app
Codi · 25 de maig del 2026

La UI web local: FastAPI dins l'app

Un comandament físic seria òptim. Construir-lo, no. Vaig posar la UI al navegador i la vaig fer servir des de qualsevol dispositiu de la xarxa.

Part de Lumware
En procés

Framerate real: benchmarks i bottlenecks

El sostre teòric és una cosa. El que mesures és una altra. La diferència entre tots dos és on viu la feina pendent.