For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegación principal
Theme
Sep 23, 2026 Codex

Cómo le di vida a mi pantalla LED con GPT-Live-1 y Codex

Cómo usé Codex, GPT-Live-1 y una Raspberry Pi para convertir una pantalla LED en un asistente controlado por voz.

Autor: Sid Rampally

Cómo le di vida a mi pantalla LED con GPT-Live-1 y Codex

Para el cumpleaños de mi compañero de departamento, le compré una pequeña pantalla LED que muestra los vuelos que pasan cerca de nuestra ventana. El regalo me pareció genial, pero después de ver aparecer los aviones en la pantalla, me quedé pensando si una pantalla así podría hacer algo más que seguir vuelos. ¿Podría mostrar el pronóstico del tiempo o mi calendario? Y cuando estuviera por salir, ¿bastaría con preguntarle “¿Cuándo pasa el próximo tren?” para ver la respuesta en la pantalla?

La idea pronto se convirtió en un proyecto personal con una Raspberry Pi, un panel LED HUB75 de 128 × 64, Codex y un asistente al que terminé llamando Jack. De la conversación se encarga GPT-Live-1, el modelo de voz que puede hablar y escuchar al mismo tiempo y que lanzamos hace poco en la API. Otro modelo ayuda a buscar información y un motor de renderizado se encarga de los píxeles, aunque al principio estábamos lejos de tener todo tan bien pensado. Así fue el proceso.

Cómo me ayudó Codex a poner en marcha un panel LED RGB HUB75

Lo primero que tuvimos que averiguar Codex y yo fue cómo mostrar algo útil en la pantalla. Tenía un panel RGB HUB75 de 128 × 64, pero sabía poco del controlador, del cableado y de lo que hacía falta para enviarle contenido distinto del que ya mostraba.

Empecé a enviarle fotos a Codex y a pedirle que me explicara lo que estaba viendo. Me ayudó a identificar las conexiones importantes, a entender el controlador basado en ESP32 y a averiguar cómo recibe un panel HUB75 los datos que tiene que mostrar. Incluso marcó en las fotos las partes que importaban. Eso me sirvió porque, por mi cuenta, solo veía una placa de circuito y muchas oportunidades de equivocarme si intentaba adivinar.

Una vez que entendimos lo básico del hardware, Codex me ayudó a poner en marcha el controlador con WLED-MM y a confirmar que el panel estaba configurado con la resolución correcta de 128 × 64. A partir de ahí, pudimos enviarle fotogramas personalizados y empezar a probar qué se veía bien en una pantalla tan pequeña. Codex investigaba y buscaba soluciones a los problemas. Yo me encargaba de las conexiones físicas y le avisaba cuando algo no funcionaba como esperábamos.

Crear en mi Mac un prototipo de pantalla LED controlada por voz

La primera versión que funcionó era mucho más sencilla que la que terminamos construyendo. Una vez que el controlador empezó a ejecutar WLED-MM, Codex me ayudó a crear un motor de renderizado y una habilidad personalizada. Usé la función Voz de la aplicación de escritorio de ChatGPT para decirle qué mostrar en la pantalla.

Con eso, la pantalla ya se sentía distinta. Podía mostrar el pronóstico del tiempo, mi calendario, los horarios de llegada del metro, gráficos financieros, mensajes, cuentas regresivas, fotografías, obras de arte o una escena animada personalizada. Cada vez que una idea no se veía bien en una pantalla tan pequeña, ajustábamos el motor de renderizado.

Yo seguía hablando con Codex, y la habilidad personalizada le permitía actualizar lo que debía mostrarse en la pared. El motor de renderizado de mi Mac convertía el diseño en fotogramas RGB de 128 × 64 y los enviaba por la red local mediante DDP. El controlador ESP32 con WLED-MM se encargaba de mostrarlos en el panel.

Codex también me ayudó una vez que conectamos todas las piezas. En una pantalla de 128 × 64 hay poco espacio, así que fuimos probando cómo acomodar texto, imágenes, el pronóstico del tiempo, eventos del calendario y horarios de llegada del metro sin que todo quedara amontonado e ilegible. Yo le decía a Codex qué se veía mal, Codex ajustaba el motor de renderizado o el diseño y volvíamos a probar. Así, poco a poco, la pantalla en reposo empezó a verse como algo que de verdad quería dejar a la vista.

El problema era que todo seguía dependiendo de mi Mac. Ahí se ejecutaba el motor de renderizado y desde ahí iniciaba la conversación. Si mi laptop entraba en reposo o me la llevaba a otro lugar, ya no podía usar la pantalla de la pared como quería. Lo ideal para mí era poder volver del trabajo y pedirle a la pared de mi departamento que me mostrara algo.

Trasladar el asistente de voz y el motor de renderizado a una Raspberry Pi

Le dije a Codex que quería dejar de depender de mi laptop, así que pasamos a una Raspberry Pi los componentes que debían seguir funcionando. Guardamos el código en un repositorio privado y nos aseguramos de tener una copia de seguridad y una forma de volver a la versión anterior si rompíamos algo. Una vez que conecté la Pi, Codex se encargó de poner el código en marcha, revisar los registros y resolver los problemas que surgían mientras yo le seguía explicando qué quería que hiciera.

Ahora la Pi ejecuta dos pequeños servicios:

  • El servicio de voz gestiona el micrófono, el audio de PipeWire, la cancelación de eco de WebRTC, la activación y el reposo del asistente, las interrupciones, la conexión con GPT-Live-1 y la delegación de tareas del lado del cliente.
  • El servicio de renderizado mantiene activa la animación de la pantalla en reposo, actualiza el pronóstico del tiempo y los horarios de llegada del metro de la MTA, usa datos depurados del calendario, valida las descripciones de las escenas y transmite los fotogramas a la pantalla de la pared.

Con un micrófono y un altavoz conectados a la Pi, podía entrar a la habitación, decir “Hey Jack” y pedirle algo sin abrir la computadora. Dedicamos un tiempo a mejorar la forma en que se activaba y respondía, pero al pasarlo de mi Mac a la Pi dejó de parecer una demostración en una laptop y empezó a sentirse como algo que podíamos dejar encendido.

Cómo trabajan juntos GPT-Live-1 y la Raspberry Pi

Terminamos repartiendo el trabajo de modo que GPT-Live-1 se encarga de conversar conmigo y otro componente se ocupa de dibujar en la pantalla de la pared. GPT-Live-1 mantiene abierta la conversación, escucha mientras habla, me deja interrumpirlo y decide cuándo una solicitud requiere algo más que conversar.

Cuando eso sucede, la Raspberry Pi recibe la tarea delegada e inicia, del lado del cliente, una solicitud a la API de Responses con GPT-5.6 Luna y un nivel bajo de esfuerzo de razonamiento. Luna puede buscar en la web pública, consultar mi calendario mediante una conexión de solo lectura, encontrar imágenes reutilizables en Wikimedia Commons y decidir qué tipo de escena requiere la solicitud.

Una vez le pedí a Jack que mostrara una foto en la pared y me dijo que no podía. El motor de renderizado ya admitía imágenes, pero yo no le había dado al asistente de voz una herramienta para buscar una y enviarla. Codex me ayudó a conectarlo con Wikimedia Commons para que pudiera encontrar una imagen que coincidiera con lo que le pedía y comprobar su licencia y atribución. También ajustamos la forma de encajar las imágenes en el panel. La Pi cambiaba su tamaño para que cupieran en 128 × 64 píxeles sin perder sus proporciones, de modo que no se estiraran para ocupar toda la pantalla.

A medida que agregábamos funciones, Codex nos ayudó a mantener bien separadas las responsabilidades. El código de la Pi decide qué herramientas puede usar Luna, Luna determina qué información o escena hace falta y el motor de renderizado comprueba el JSON de la escena antes de convertirla en exactamente 128 × 64 píxeles RGB. Luego envía esos fotogramas mediante DDP al controlador WLED-MM, que controla el panel HUB75.

El usuario habla con GPT-Live-1 a través de una Raspberry Pi. La Pi envía a GPT-5.6 Luna tareas de investigación y tareas que requieren herramientas, recibe los resultados y envía los píxeles de su motor de renderizado local a la pantalla LED de la pared.

Uno de los primeros errores apareció en una conversación de lo más normal. Le preguntaba a Jack por el tiempo en Nueva York y luego le decía “Muéstrame eso en la pared”, pero no entendía a qué se refería “eso”. Codex descubrió que nuestra aplicación solo le enviaba la última solicitud al modelo encargado de actualizar la pantalla. Hicimos un cambio para que también recibiera la conversación reciente y los resultados anteriores.

De “Hey Jack” a los píxeles en la pantalla LED

Si le pido a Jack que busque algo y lo muestre en la pantalla, esto es, a grandes rasgos, lo que ocurre:

  1. La Raspberry Pi captura mi voz como audio PCM a 24 kHz y procesa el audio localmente.
  2. GPT-Live-1 recibe el flujo de audio, entiende lo que le pido y mantiene abierta la conversación para que pueda interrumpirlo o agregar algo.
  3. Si la solicitud requiere investigar, consultar el calendario, buscar una imagen o actualizar la pantalla de la pared, GPT-Live-1 delega la tarea del lado del cliente y la Pi la envía a GPT-5.6 Luna a través de la API de Responses.
  4. Luna usa las herramientas que puse a su disposición para esa solicitud, como el servicio alojado de búsqueda web, la conexión de solo lectura al calendario, la búsqueda de imágenes reutilizables o una herramienta para actualizar la pantalla de la pared.
  5. Elige una escena de pronóstico del tiempo, agenda, mensaje o cuenta regresiva si alguna sirve para lo que le pedí, o crea una nueva cuando le pido algo que no habíamos previsto.
  6. El motor de renderizado local valida la escena, la convierte en fotogramas RGB de 128 × 64 y los envía a la pantalla de la pared mediante DDP mientras GPT-Live-1 me cuenta lo que encontró.

Lo que me gusta es que puedo volver a hablar sin tener que esperar a que el asistente de voz termine su turno. Puedo interrumpir a Jack y aclarar lo que quise decir mientras la búsqueda de información y el renderizado siguen en segundo plano.

Al final, fue un proyecto personal bastante sencillo. No tenía experiencia con paneles HUB75, controladores ESP32, placas Raspberry Pi ni modelos de voz. En otro momento, probablemente habría abandonado el proyecto apenas abriera la pantalla. Con Codex pude ir descubriendo cómo funcionaba todo sobre la marcha. Cada vez que me encontraba con algo desconocido, bastaba con preguntarle.

Si tienes un proyecto así y no sabes por dónde empezar, pregúntale a Codex. Tal vez te sorprenda lo lejos que puedes llegar.