En la Tierra hay millones de especies animales y los científicos siguen descubriendo nuevas todo el tiempo. Jim Bruges decidió no esperar el próximo hallazgo e inventar las suyas. Su proyecto This Fish Does Not Exist usa un Arduino UNO Q para generar ilustraciones y descripciones científicas de peces que nunca existieron.

El aparato parece una página enmarcada de un libro de ictiología del siglo XIX, con una ilustración detallada, nombre científico, clasificación y descripción. Cada pocos minutos genera un pez completamente nuevo, lo dibuja de a poco en una pantalla de tinta electrónica y completa la información que lo acompaña. Cada especie imaginaria recibe además un número de espécimen y una fecha y hora de descubrimiento.

¿Qué hardware usa?

El equipo se arma alrededor de un Arduino UNO Q con 2 GB de RAM, conectado a una pantalla de tinta electrónica monocromática Waveshare de 7,5 pulgadas mediante un shield compatible con Arduino. La pantalla de 800 x 480 píxeles va montada en un marco de fotos estándar de 7 x 5 pulgadas, y unas placas de montaje impresas en 3D con PETG sostienen la electrónica por detrás. Un power bank USB opcional de 5.000 mAh permite que funcione donde no hay un enchufe cerca.

La combinación poco habitual del UNO Q, que junta un sistema operativo Linux con un microcontrolador, es lo que hace posible el proyecto.

Un pez procedural y una ficha escrita por un modelo local

Del lado Linux, una implementación en Python del algoritmo fishdraw genera cada pez en forma procedural y define rasgos como la forma del cuerpo, las aletas y las manchas.

Esos rasgos pasan después a un modelo de lenguaje Gemma 3 1B que corre en el propio equipo y que inventa una descripción científica creíble. La ficha incluye el hábitat del pez, su dieta, el rango de profundidad y sus rasgos distintivos. El modelo funciona sin conexión después de una descarga inicial, así que no necesita servicios en la nube.

Cuando la ilustración y la descripción están listas, una biblioteca de Python arma la página del libro. La imagen resultante se envía al microcontrolador del UNO Q, que usa la biblioteca GxEPD2 para actualizar la pantalla de tinta electrónica.

¿Cómo se anima una pantalla de tinta electrónica?

En vez de mostrar la página entera de una vez, el sistema usa refrescos parciales para crear una animación en la que el pez se dibuja trazo a trazo y la descripción aparece palabra por palabra. Entre los dos procesadores solo viajan los datos de imagen que cambiaron, lo que reduce la comunicación innecesaria.

Bruges también desarrolló una interfaz web para configurar el equipo, con opciones para el diseño, el intervalo de generación y la velocidad de dibujo. Hay tres diseños disponibles, que van desde una lámina simple de espécimen hasta una página completa de libro.

Los detalles para armar una copia propia están en la documentación completa del proyecto que publicó Bruges.