<p>Los girasoles organizan sus semillas en espirales entrelazadas que siguen la proporción áurea. Este patrón, llamado <em>phyllotaxis</em>, aparece en la naturaleza: en piñas, suculentas y en el despliegue de los helechos. El ingeniero Jagi Natarajan convirtió esa geometría en un objeto físico: una pantalla circular de LED donde cada luz se sitúa en una celda de una teselación de Voronoi derivada de la misma matemática de la espiral.</p>
<h2>Del boceto matemático al objeto físico</h2>

El párrafo 2 describe el algoritmo que genera la geometría de la pantalla: puntos colocados a lo largo de una línea radial y cada punto sucesivo rotado por el ángulo de la proporción áurea de unos 137.5 grados. Este gráfico muestra esos puntos formando la familiar doble espiral, que luego se tesela en las celdas de Voronoi que contienen los LEDs.
<p>El patrón comienza con un algoritmo simple: colocar puntos a lo largo de una línea radial y luego rotar cada punto sucesivo por un ángulo derivado de la proporción áurea (aproximadamente 137.5°). Al graficarlos, los puntos forman la familiar doble espiral. Una teselación de Voronoi de esos puntos produce celdas irregulares, similares a vainas de semillas, que funcionan como una partición natural para los LEDs individuales.</p>

El párrafo 3 explica cómo Natarajan exportó los límites de las celdas desde un boceto de Processing a CadQuery, construyendo el volumen completo de las celdas fusionadas, adelgazando las paredes y tallando un agujero centrado para un LED en cada celda. Este render de FreeCAD muestra el modelo de la placa frontal resultante antes de que se dividiera en cuadrantes para la impresora 3D.
<p>Natarajan exportó los límites de las celdas desde un boceto de Processing a Python utilizando <a href="https://github.com/CadQuery/cadquery">CadQuery</a>, una biblioteca de CAD paramétrico. El script construye el volumen completo de todas las celdas fusionadas, luego resta el contorno reducido de cada celda para dejar paredes delgadas y, finalmente, talla un agujero centrado para un LED en cada celda. La geometría resultante se dividió en cuatro cuadrantes para ajustarse a la cama de una impresora 3D comercial.</p>

El párrafo 4 describe la primera versión del hardware: 89 LEDs NeoPixel soldados a mano en una placa trasera impresa en 3D, controlados por una placa STM32 con un micrófono I2S. Esta foto muestra la carcasa inicial que albergaba ese circuito de placa perforada construido a mano.
<p>La primera versión utilizó 89 LEDs WS2812B (NeoPixel), cada uno soldado a mano en una placa trasera impresa en 3D. Una placa frontal de papel de morera translúcido difundía la luz, atornillada a las paredes de las celdas. Una placa "Black Pill" STM32 controlaba la tira a través de SPI, y un micrófono digital I2S INMP441 enviaba el audio al microcontrolador. Utilizando la biblioteca CMSIS-DSP de ARM, el firmware ejecutaba una transformada de Fourier con control automático de ganancia y dividía el espectro en múltiples bandas, proporcionando al código datos de energía resueltos por frecuencia para trabajar.</p>
<h2>Patrones reactivos al audio</h2>
<p>Con los datos de frecuencia en mano, el firmware puede mapear el sonido a la luz de formas que parecen vivas. Natarajan describe un patrón de espiral radial donde el brillo de cada LED es una onda sinusoidal que combina su ángulo polar y radio, modulada por el tiempo. Las frecuencias bajas pulsan el centro; las altas crean ondas en los bordes. La primera pista que "le dio vida" fue "Neon Pattern Drum" de Jon Hopkins.</p>

El párrafo 7 describe el diseño de la segunda versión: cinco PCBs idénticas dispuestas en un anillo para aprovechar el pedido mínimo estándar de cinco placas de las casas de fabricación, con 18 LEDs por placa para un total de 90. Esta foto muestra esa disposición radial de cinco placas.
<p>El marco de animación trata cada fotograma como un fragment shader: una tabla de búsqueda otorga a cada LED una posición (x, y) normalizada en el círculo unitario, y una función por píxel calcula el color a partir de la posición, el tiempo y las bandas de audio actuales. Este diseño se convirtió más tarde en la base de la ABI de animación del SDK.</p>
<h2>Segunda versión: PCBs, simetría de cinco veces y un patio de juegos web</h2>
<p>Después de mostrar la pieza en una fiesta de Año Nuevo, Natarajan se propuso construir una versión más robusta y replicable. En lugar de cuatro cuadrantes únicos impresos en 3D, el nuevo diseño utiliza cinco PCBs idénticas dispuestas en un anillo, aprovechando el pedido mínimo estándar de cinco placas de las casas de fabricación. Cada PCB lleva 18 LEDs (90 en total) y las paredes de las celdas se enganchan a la placa como piezas separadas impresas en 3D.</p>
<p>La soldadura manual de los NeoPixels siguió siendo difícil porque sus pads se encuentran debajo del paquete. En un retiro de programación en <a href="https://www.recurse.com/">Recurse Center</a>, un amigo con una estación de retrabajo de aire caliente ayudó a completar el ensamblaje. El controlador migró del STM32 a un ESP32 para conectividad Wi-Fi, y el firmware fue reescrito en Rust.</p>
<p>El ESP32 ahora sirve un sitio web local. Los visitantes en la red de Recurse Center pueden escribir bocetos en Rust, C o AssemblyScript, compilarlos a WebAssembly (limitado a un módulo de 32 KB y ~120 k unidades de combustible por fotograma) y subirlos a una de varias ranuras de bocetos. La placa ejecuta el módulo WASM seleccionado a 60 fps, corrigiendo la gamma y limitando la potencia de salida. El SDK expone tres banderas de capacidad—<code>NONE</code> (arte generativo), <code>AUDIO</code> (seis bandas más envolventes de transitorio/sostenimiento) e <code>INPUT</code> (perilla y botón)—que el boceto declara al momento de la carga.</p>
<h2>Desafíos abiertos</h2>
<p>Natarajan señala varios problemas sin resolver: la soldadura manual de NeoPixel sigue siendo tediosa; la placa frontal de papel es frágil y difícil de reparar; y el proceso de ensamblaje en general aún no está optimizado para regalos o producción a pequeña escala. Las ideas para una versión tres incluyen LEDs con pads en la parte superior para facilitar la soldadura, ensamblaje profesional de PCB, una capa protectora de acrílico transparente sobre el papel y un sistema de fijación magnética para la placa frontal.</p>
<p>Por ahora, la instalación funciona en Recurse Center: una manifestación física de un patrón matemático que escucha la habitación y traduce el sonido en luz, abierta para que cualquiera en la red la reprograme.</p>]</div>