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 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.

Sèrie completa

code · que-es-lumware-ca.mdx

Part de Lumware 01/10

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.

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

Part de Lumware 02/10

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.

  • #lumware
  • #procés
  • #refactor
  • #brand
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.

bench · 2026-05-25

Part de Lumware 04/10

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.

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

Part de Lumware 05/10

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.

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

Part de Lumware 06/10

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.

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

Part de Lumware 07/10

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.

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

Part de Lumware 08/10

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.

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

Part de Lumware 09/10

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.

  • #lumware
  • #frontend
  • #fastapi
  • #react
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.