Colgante con simulación de fluidos
(mitxela.com)- Proyecto artesanal de hardware que integra una simulación de fluidos FLIP en tiempo real y una pantalla LED circular dentro del tamaño de una joya, con el objetivo de crear un objeto de simulación wearable
- Hace overclock al STM32L432KC a 100 MHz e integra acelerómetro, circuito de carga y chip supervisor de voltaje en una PCB de 4 capas y 0.8 mm, resolviendo tanto el cálculo como la visualización dentro de un colgante pequeño
- Gracias al charlieplexing diagonal y al manejo cíclico con DMA se redujeron la cantidad de vías y el overhead de visualización, aunque también quedaron expuestas trampas de fabricación como la disposición de los LED y los puentes de soldadura
- La implementación de FLIP se reescribió a partir del tutorial de Ten Minute Physics, y las colisiones entre partículas y el hashgrid influyen mucho en la estabilidad y la velocidad incluso en una escala pequeña de 8x8
- Se completaron 10 colgantes en total, pero siguen quedando mejoras pendientes como la orientación del vidrio y la junta, la protección del conector de carga y el mecanizado del estuche metálico, por lo que la producción en masa no parece sencilla
Dispositivo wearable de simulación de fluidos
- El colgante con simulación de fluidos es una joya artesanal que ejecuta una simulación de fluidos FLIP en tiempo real
- Usa una carcasa chapada en oro y un cristal de reloj como protector, mientras que la pantalla LED circular interna muestra el movimiento del fluido
- El primer colgante se fabricó en marzo de 2024, y en los meses siguientes se hicieron varias unidades más
- Actualmente hay una pequeña cantidad de colgantes y, mientras haya stock, algunos están a la venta
- La motivación del diseño y el proceso inicial también pueden verse en este video de YouTube
Del Simsim al colgante: evolución del diseño
- Parte de la línea de trabajo que, después de la animación del anterior volumetric display, buscaba implementar una simulación de fluidos en tiempo real capaz de terminar en una bola de nieve virtual 3D
- El concepto de Simsim que surgió en ese proceso se convirtió en la base de este colgante
- Como resultado, no solo se validó la simulación de fluidos, sino también ventajas inesperadas de una pantalla charlieplexed diagonal
Configuración de hardware
- Los componentes principales son los siguientes
- STM32L432KC: ARM Cortex-M4, con FPU, overclockeado a 100 MHz
- ADXL362: acelerómetro de ultra bajo consumo
- MCP73832: controlador de carga para batería LiR2450
- TPS7A02: regulador de ultra bajo consumo
- TPS3839: chip supervisor de voltaje de alimentación
- El circuito está montado sobre una PCB de 4 capas y 0.8 mm
- Usa una batería tipo moneda LiR2450, y el diseño final incluye controlador de carga y protección por bajo voltaje
- Apunta a unas 10 horas de uso con carga completa
Charlieplexing diagonal y manejo de la visualización
- El charlieplexing diagonal puede reducir a la mitad la cantidad de vías frente a una matriz convencional
- En pantallas LED de paso pequeño, la cantidad de vías suele ser un factor limitante, así que el efecto es importante
- Como los LED de la misma red quedan ubicados en extremos opuestos, la mayoría de los puentes de soldadura no afectan el rendimiento
- La matriz de visualización se maneja con modo circular de DMA sin overhead
- Si se controlan dos streams de DMA, una matriz charlieplexed también puede manejarse de la misma manera
- Para conectar los LED con los píxeles hace falta una tabla de consulta
- Cambiar el mapeo no tiene costo adicional
- Las señales de la matriz pueden conectarse a cualquier pin de los puertos del microcontrolador, lo que facilita el ruteo
- Si se maneja una pantalla grande directamente desde los GPIO, pueden aparecer problemas de brillo por la resistencia
onde los FET de salida- Como el charlieplexing enciende solo un píxel a la vez, el efecto de esa resistencia se reparte uniformemente en todos los píxeles
- También se puede controlar el brillo de la pantalla cambiando el voltaje del microchip
Implementación del simulador de fluidos FLIP
- La simulación FLIP se basa en el trabajo de Matthias Müller en Ten Minute Physics, en especial el tutorial “How to write a FLIP Water Simulator”
- El código no es un port directo, sino una reimplementación siguiendo el tutorial
- En una simulación de fluidos euleriana, el movimiento del fluido se resuelve con advection, pero en FLIP el movimiento de las partículas transporta el fluido y no hace falta una etapa separada de advection
- La etapa de colisión entre partículas no podía omitirse
- Si se quitaba la etapa de colisión, todo el fluido colapsaba en una masa superpuesta
- Las partículas se empujan entre sí con un impulso proporcional al inverso de la distancia
- El código final tenía un switch para alternar entre colisión simple y colisión con hashgrid
- El hashgrid agrega overhead tanto en cálculo como en comprensión, pero mostró una mejora grande de velocidad incluso en tamaños pequeños como 8x8
- En el ejemplo de Ten Minute Physics había un pequeño error en la condición de borde izquierda que hacía que el fluido no se quedara quieto, y eso fue detectado
Experimentos de simulación y estimación de memoria
- Durante el desarrollo se generaron muchos resultados de simulación de fluidos anómalos, y al renderizar partículas aparecían con frecuencia formas parecidas a huevas de rana
- El gráfico de densidad mostraba cuántas partículas se superponían en cada celda de la grilla, y al chocar contra las paredes aparecían efectos visuales similares a ondas de choque
- Unas dos semanas después de publicar el concepto Simsim se creó la demo Simsimsim
- Era una herramienta interna de prueba para verificar qué tan baja podía ser la densidad de LED sin dejar de verse como un fluido
- También se usó para estimar aproximadamente la RAM necesaria para un port bare-metal
- El STM32L432KC tiene 64 KB de RAM, y una pantalla de diámetro 16 requiere unos 26 KB
- El código fuente de la demo y del colgante todavía no se ha publicado, pero se planea hacerlo más adelante
Fabricación del primer colgante
- Antes de fabricar la PCB, se hizo un prototipo cableado a mano para comprobar que el patrón de pantalla charlieplexed realmente funcionara
- Se fijaron los LED con una tarjeta cortada por láser y se conectó una matriz de 8x9 a una placa de desarrollo STM32L432
- Soldar cable esmaltado era tan tedioso que eso llevó a diseñar rápidamente la PCB
- La simulación FLIP primero corrió en el L432 dentro de un pequeño cuadrado de 8x8, y luego se expandió como el área superior izquierda de un colgante virtual
- En una matriz charlieplexed convencional, cada LED necesita al menos una vía, pero la disposición diagonal reduce eso de forma importante
- De los 240 LED posibles con 16 GPIO, la pantalla real solo necesitaba 216 LED
- La intención era que la pantalla fuera circular, pero con diámetro 16, según la disposición, terminó pareciéndose más a un octágono
Diseño de PCB y mecánica
- El primer diseño de PCB fue más fácil de lo esperado, y la reducción en cantidad de vías ayudó mucho
- Las capas internas de la PCB se redondearon usando el plugin KiCad track-rounding
- El panel se configuró manualmente para que la máquina de pick-and-place pudiera sujetar las placas
- En los contactos de la batería se usaron terminales elásticos dorados montados en PCB, tipo RFI shield finger
- Llevaría tiempo encontrar un conector de carga magnético de perfil bajo de 4 mm, y la pieza usada fue la cx-4mm-jz de WNRE
- Los conectores de carga de 4 mm pueden no ser compatibles entre sí aunque la polaridad y la orientación de los imanes sean las mismas
Mecanizado del metal y carcasa
- La carcasa se hizo mecanizando latón y luego se chapó en oro
- La primera estructura era de tipo snap-back, y se añadió un O-ring para eliminar el juego y obtener además un sellado resistente al agua
- Gracias al O-ring, las tolerancias necesarias se relajaron bastante
- Desde el segundo colgante se usó cristal de reloj sobre la pantalla
- Se eligió un vidrio de 27.5 mm, y con una junta de 0.45 mm el diámetro total pasó a ser de 28.4 mm
- El vidrio entraba bien al presionarlo con la fuerza adecuada, aunque en algunos casos se rompió por intentar colocarlo sin la herramienta correcta
Problemas eléctricos detectados durante el ensamblaje
- En la primera PCB, un problema fue no haber dejado afuera el pin de reset del microcontrolador
- Como la pantalla usaba todo el Port A y SWDIO/SWCLK también estaban en Port A, durante el desarrollo era difícil cargar firmware nuevo
- Hacía falta un cable temporal para resetear el chip justo antes de programarlo
- El bus keeper de la línea de interrupción del acelerómetro fue una de las causas de glitches en la pantalla
- Al principio se agregó una resistencia, y al final se resolvió por completo con un diodo
- La detección de bajo voltaje por software simplificaba el circuito, pero dejaba un punto débil
- En la siguiente revisión de PCB se añadió un chip supervisor por hardware
- También se armó un circuito que detecta la conexión del conector de carga y tira del pin de reset
- Si el cable de carga se conecta produciendo un corto breve, el polyfuse se calienta y el voltaje puede subir lentamente sin generar un pulso de reset
- Se concluyó que, si hace falta, basta con conectar primero el lado magnético y después enchufar el USB
Ahorro de energía y activación
- El colgante no tiene botones y la única entrada son los datos del acelerómetro
- Al principio se pensó en activar el deep sleep haciendo girar el colgante desde el extremo de la cadena
- Al final se optó por subir a 6g el umbral de la interrupción de detección de movimiento del acelerómetro
- Así se reducen los wake-ups accidentales y sigue siendo fácil volver a encenderlo agitándolo
- Es un método que no consume más energía que el sleep normal
Segunda PCB y supervisión de voltaje
- Antes del segundo colgante se incorporaron a la PCB el circuito de reset, el diodo en la línea de wake-up y el supervisor por hardware
- El chip supervisor de voltaje TPS3839 tiene una corriente de alimentación de 150 nA, y junto con los 25 nA del regulador TPS7A02 sigue siendo un nivel muy bajo para una batería tipo moneda
- La batería tipo moneda LiR2450 tiene una capacidad de 120 mAh, y harían falta más de 13 años para descargarla solo con 1000 nA
- El umbral de corte por bajo voltaje se fijó en 3.08 V
- Se eligió de forma conservadora para que, incluso si la batería cae hasta ese nivel, pueda permanecer años en un estante sin sufrir químicamente
- Los circuitos de protección de litio comunes cortan cerca de 2.5 V porque, bajo carga, el voltaje en terminales es menor que el voltaje en circuito abierto
- El TPS7A02 tiene una versión P con active discharge y una versión sin ella
- La versión non-P hace que el microcontrolador y los capacitores de alimentación se descarguen lentamente incluso cuando el regulador está deshabilitado
- Al cambiar a la versión P desapareció el problema de soft-lock que ocurría cerca del umbral del supervisor
Tercer colgante y estructura sellada
- En el tercer colgante se eliminó el snap-back y se rediseñó como una carcasa tipo copa
- El cristal de reloj puede retirarse, pero en la práctica el acceso implica sacarlo por la cara del vidrio o, en el peor caso, romperlo
- El vidrio de repuesto cuesta alrededor de 50p, y como hay circuito de carga y protección por bajo voltaje, se consideró que no hacía falta reemplazar la batería tipo moneda
- La forma de copa simplifica mucho más el mecanizado del metal y además reduce el grosor total en alrededor de 1 mm
- Como el conector magnético tenía que instalarse primero, se usó cable flexible de 36AWG
- La resistencia entre la carcasa y el ground de la PCB se midió en 0.00Ω con multímetro
- Como no había suficiente profundidad interna, al presionar el vidrio el circuito podía quedar apretado, así que se ajustó retirando a mano unos 0.3 mm
Mejoras de fabricación desde el cuarto en adelante
- A partir del cuarto se mecanizó un poco más de profundidad interna para que el circuito entrara cómodamente
- La parte trasera se dejó plana mediante lapping
- Se pega lija a una superficie plana y se frota el latón, avanzando de forma gradual a abrasivos más finos
- Se usó el 5C collet holder del torno Hardinge para centrar con precisión las piezas y reducir el daño a la superficie exterior
- La superficie trasera de la carcasa vaciada quedó por debajo de 1 mm de espesor, y una vez se cortó demasiado y terminó perforándose
- Para fijar el jump ring funcionó mejor atarlo con alambre blando y luego soldarlo
- El chapado en oro no se adhiere bien sobre soldadura de estaño, así que al final se aceptó el contraste como un elemento visual
Conector de carga y problemas de uso
- Hace falta sellar con epoxi alrededor del conector de carga magnético, pero sin cubrir los contactos de soldadura, lo que vuelve el trabajo incómodo
- Si se acopla el conector de carga sin cuidado, puede haber chispas incluso a 5 V
- Si ocurre repetidamente, los dos contactos pueden desgastarse rápidamente
- Si se conecta primero el lado magnético y después el USB, se puede evitar la chispa
- También puede darse un caso en el que, al empujarlo en un ángulo raro, la polaridad se invierta
- Si se hubiera añadido un diodo, habría sido fácil protegerlo, pero eso se descubrió demasiado tarde
- El LED rojo indicador de carga funciona bien y proyecta un pequeño círculo rojizo sobre el cable a través del epoxi
Cantidad terminada y estuche de almacenamiento
- Como estuche portátil, el contenedor plástico de una pantalla de enfoque Nikon F3 casi encajaba bien, y luego se usó una caja plástica de tamaño similar con revestimiento de espuma antiestática
- Se completaron 10 colgantes en total
- Algunos tienen rayones o defectos superficiales
- La fabricación se detuvo cuando se usaron todas las placas de circuito preparadas
- Si se hicieran más, sería necesario cambiar el diseño para que el vidrio y la junta se asentaran de forma más estable
- La PCB podría reducirse un poco
- Se podrían añadir notch o cutout de alineación
- Se podría agregar un shoulder donde apoye la PCB y un cutout para los cables del conector
- Se descubrió tarde que tanto el vidrio como la junta tienen orientación
- El tamaño del bisel del vidrio cambia entre arriba y abajo
- La junta tampoco es simétrica si se observa al microscopio
- Eso pudo haber influido en que la fuerza necesaria para presionar el vidrio variara entre colgantes
Elección de materiales y posibilidad de producción masiva
- También se consideró la posibilidad de hacerlo completamente en oro, pero no sería razonable fabricar una pieza así tallando un bloque de oro puro
- La plata es más viable económicamente y, con una forma de copa, también sería posible hacer el cuerpo soldando una tira y una placa de plata y luego mecanizando ligeramente en torno
- La PCB es fácil de producir en masa, pero la carcasa presenta dificultades aparte
- Podría omitirse el chapado en oro y fabricarse en acero inoxidable
- La forma de copa simplifica el mecanizado CNC
- El jump ring podría requerir un proceso aparte, como soldadura TIG
- Una versión muy barata también podría hacerse con PCB y carcasa impresa en 3D
- La razón principal por la que es poco probable intentar producción masiva es simplemente que hay otros proyectos ocupando el tiempo
Cierre y pendientes
- Este proyecto puede considerarse un éxito y la calidad de fabricación mejoró frente al anterior amulet
- Aun así, incluso después de fabricar 10 unidades, el resultado no termina de dejar totalmente satisfecho al autor
- Un punto lamentable es no haber grabado la fecha ni un número de serie en la parte trasera
- Para hacer mejores joyas y mejorar el mecanizado del metal harían falta inversión en equipo y más aprendizaje
- Fue difícil tomar fotos del colgante puesto
- Para evitar el tearing de la pantalla hacía falta una velocidad de obturación lenta
- La pantalla se ve más interesante en movimiento, así que cuesta capturarla bien en fotos
1 comentarios
Comentarios en Hacker News
Era un video interesante y terminé viéndolo casi hasta el final sin planearlo, totalmente absorbido.
Cuando veo software así, se me hace todavía más difícil entender la idea de que porque un LLM pase evaluaciones de código ya sea “mejor que el mejor desarrollador humano”.
Cuando hice que varios modelos de Claude y ChatGPT me ayudaran con problemas especializados, fueron terribles; son excelentes para CRUD o algoritmos comunes, pero muy débiles para cosas nuevas o inusuales.
Al ver algo como la “simulación FLIP” de este proyecto, me cuesta creer que incluso ChatGPT o3, que aún no se ha publicado, pudiera escribir el software que hace funcionar este colgante.
Por eso no creo que ese juicio sea correcto. Los LLM son fuertes cuando implementan algo desde cero sobre una base vacía con límites de API claros, ya sea una app CRUD o una simulación física.
Más bien, donde son débiles es en trabajos que atraviesan muchos módulos dentro de una gran base de código legacy y están llenos de pistas confusas.
El problema mayor es la precisión del simulador generado. Los LLM no pueden crear buenas pruebas, y se necesitan tanto verificación (verification), que es una prueba de las matemáticas, como validación (validation), que es una prueba de la física; hoy por hoy los LLM no hacen bien ninguna de las dos.
El método de soluciones manufacturadas (MMS), una técnica estándar de verificación, puede automatizarse en buena parte con software de álgebra computacional, pero sigue siendo tedioso, y por experiencia cuesta confiar en que un LLM maneje bien las manipulaciones algebraicas que aquí se necesitan.
Peor aún, un LLM no puede generar los datos experimentales reales que hacen falta para la validación. Hay que encontrarlos en la literatura o hacer experimentos directamente; quizá en el futuro pueda orientar hacia papers experimentales adecuados, pero por ahora no parece ser así.
Aun así, puede ser útil para dar consejos cuando la simulación no coincide con datos experimentales, y parece saber algo de modelado de turbulencia, aunque dudo que conozca bien los avances más recientes.
Si se trata de simulación de fluidos para juegos o gráficos por computadora, la precisión física no es la prioridad máxima, pero aun así conviene usar MMS para comprobar que la implementación matemática sea correcta. MMS es una técnica interesante sin un equivalente directo en las pruebas de software comunes: la idea es modificar mínimamente el software para crear un oráculo, y si el software modificado pasa la prueba, se puede considerar que el software original también la pasa.
En muchas materias universitarias se les pide a los estudiantes que escriban estos algoritmos como tarea, y hay mucho conocimiento relacionado disponible gratis en internet para que los LLM lo aprendan, como en los videos de YouTube que menciona el autor.
Claro, el proyecto de esta publicación sigue siendo muy impresionante.
Me hace pensar en la frase “el acceso a un torno es un derecho humano básico”.
Hace tiempo un profesor me contó sobre la última sala de tornos escolar de su estado, una instalación que había surgido en varias escuelas justo después de la Segunda Guerra Mundial y que había seguido existiendo de forma excepcional.
Decía que hoy ya no se podría crear una nueva en ese estado, que en otros estados quizás ni siquiera podría existir, y que bastaría un solo accidente grave para que desapareciera por completo y no quedara ninguna.
Lo que más me gusta es que la mitad es muy moderna y la otra mitad son equipos excedentes de la Segunda Guerra Mundial que parecen indestructibles, así que la mezcla se ve realmente genial.
Me cuesta imaginar la idea de eliminar los tornos de las escuelas por accidentes; me parece una actitud cultural autodestructiva.
Con CNC cerrada, más del 99% de los problemas de seguridad quedan mitigados y la utilidad es muchísimo mayor. En CNC, muchas veces uno entra al área de trabajo con solo los servos encendidos y no el husillo, así que incluso las lesiones más graves probablemente serían fracturas; en cambio, con equipo manual el husillo o el mandril pueden atrapar a una persona y matarla o lanzar fragmentos.
También estaría bien contar con un buen equipo open source de pick-and-place. Hoy los PCB son baratos, pero esos equipos todavía no manejan bien componentes 0201 ni BGA de alta densidad.
En “Machine Technology 1” dice que se adquieren conocimientos y habilidades para usar herramientas manuales generales, torno paralelo, limadora, taladro de columna, fresadora y rectificadora, y que se practican principios mecánicos básicos y fundamentos usados en la industria de manufactura de precisión.
En “Welding 1” dice que se aprende seguridad, configuración del equipo, transferencia de metal, blindaje por gas y soldadura de varios metales, con enfoque en oxiacetileno y soldadura por arco de tungsteno con gas.
En “Construction Trades 1” dice que se aprende carpintería, metal, electricidad y plomería, además del uso seguro de herramientas manuales y eléctricas para cada oficio.
Parece que en los 90 y 2000 hubo una época en que la educación técnica vocacional casi desapareció de las escuelas públicas, pero por suerte da la impresión de que está regresando.
Charlieplexing: https://en.m.wikipedia.org/wiki/Charlieplexing
Es un proyecto realmente genial, y me gusta especialmente la parte de la simulación
Estoy haciendo algo parecido, una pantalla POV para bicicleta con muchos LEDs, y logré enviar video por Wi‑Fi casi en tiempo real: https://youtu.be/hxAHBvuyqpY?si=8XraFuG_Fi54Bs7T
Las ideas de proyecto de mitxela y sus videos del proceso de fabricación son realmente buenos. Recomiendo revisar también sus otros proyectos
Este proyecto es una combinación asombrosa de arte e ingeniería
El nivel de detalle tanto en la simulación de fluidos como en el diseño de hardware es impresionante, y me llamó especialmente la atención el uso inteligente de Charlieplexing para optimizar la disposición de los LEDs
Es impresionantemente asombroso. Ver proyectos así y a la gente que los hace me inspira muchísimo, pero al mismo tiempo también me intimida
Reconozco la ética de trabajo y las habilidades multidisciplinarias necesarias, pero no creo que pudiera reproducir algo así yo mismo. Supongo que solo me toca admirarlo desde atrás
Si conocen a otro creador parecido, con este nivel de acabado e intereses, me gustaría saberlo
Tiene muchos proyectos muy interesantes que usan microcampos magnéticos, motores y flappers
Si te gustó la parte del mecanizado de la carcasa, también te recomiendo ver Clickspring. Entre la calidad visual de los videos, la narrativa y la técnica real, no sería exagerado decir que es el mejor maquinista activo en YouTube hoy en día: https://youtube.com/@clickspring
Se puede ver aquí: https://mitxela.com/rants
Por desgracia no se puede enlazar directamente, así que hay que bajar un poco. En lo personal, me inspira a su manera y a veces lo vuelvo a leer
Curiosamente, me atrae más una idea anterior de usar mercurio, un líquido real, para encender los LEDs
Sería mucho más simple de colocar en KiCad y no haría falta una placa de 4 capas
Es realmente hermoso. Me sorprendió ver el precio, esperaba algo así como 10 veces lo que están cobrando ahora
Yo no lo llamaría “prototipo”, como dijo el autor