Cartão superfino executa simulação de fluidos
(github.com/Nicholas-L-Johnson)- O projeto flip-card é um hardware open source que faz funcionar a simulação FLIP (fluid-implicit-particle) em um cartão de visita ultrafino
- Os arquivos de projeto de PCB e a lógica de simulação estão incluídos diretamente, facilitando referência e reaproveitamento
- Com o simulador WASM, é possível depurar a simulação sem o hardware físico
- Há aplicações de design criativo, como bateria recarregável e porta USB-C
- Foi desenvolvido com algoritmos recentes e projetos de referência de pesquisadores renomados como Matthias Müller
Visão geral do projeto flip-card
- O flip-card é um projeto open source de hardware físico que incorpora um algoritmo de simulação de fluidos em uma placa de circuito no tamanho de um cartão superfino e o executa de fato
- Este projeto, inspirado no projeto fluid simulation pendant de mitxela, se diferencia por permitir observar em um cartão movimentos de fluido intuitivos e visuais
Arquivos principais e estrutura
- Os arquivos de projeto de PCB estão contidos na pasta "kicad-pcb"
- A lógica de simulação de fluidos baseada em FLIP está localizada na crate Rust independente da pasta "fluid_sim_crate", e é implementada com base nas pesquisas de Matthias Müller e nos métodos recentes apresentados no "Ten Minute Physics"
- O arquivo "flip-card_firmware" inclui a implementação do firmware baseada no chip RP2350
Recursos e características
- Bateria recarregável integrada: inspirado no projeto tiny touch lcd de cnlohr, uma porta USB-C na borda da placa foi aplicada para aumentar a usabilidade prática
- Simulador WASM: com a ferramenta WebAssembly na pasta "sim_display", é possível depurar a simulação em ambiente de PC e web sem necessidade de hardware
- A descrição detalhada de cada pasta está em seus respectivos arquivos README
Outras informações
- O flip-card é adequado como referência e estudo para diversas tecnologias modernas de hardware embarcado, incluindo implementação de chip de simulação de fluidos, experiência em design de circuito de hardware, depuração de simulação baseada em WebAssembly e design de placas com bateria recarregável
- O projeto é destacado na comunidade open source como caso de referência e expertise em design
1 comentários
Comentários do Hacker News
As vantagens de colocar um pouco de água em um invólucro vazio do tamanho de um cartão de visita são que dá para criar um movimento de fluido mais realista, é barato, é fácil de fabricar e a depuração também é simples.
A desvantagem é que existe o risco de molhar a bunda ao sentar, e a sensação de realização em tarefas difíceis e desafiadoras fica menor.
O conector USB-C na ponta da placa é muito legal; quando as pessoas perceberem que dá para colocar USB-C em uma placa sem componentes extras ou solda, espero que mais projetos assim apareçam.
É um cartão de visita realmente incrível, mas acho que é um pouco caro para ser distribuído dessa forma.
Eu conheci alguém que fez um cartão de visita de hardware; não lembro bem, mas não era tão legal quanto este.
O cartão dela já estava bem riscado e, depois de me entregar, pediu para que eu o devolvesse, o que foi meio estranho.
Vai ficar na gaveta da mesa, a pessoa vai ficar mexendo nele, e com isso acaba decorando naturalmente o e-mail ou o LinkedIn dessa pessoa.
Ele atrai bastante tráfego para o site e, se você for freelancer ou estiver procurando emprego, costuma fazer uma tiragem pequena para distribuir em momentos especiais para clientes em potencial ou oportunidades de trabalho.
Se estiver em busca de emprego, só linkar esse tipo de projeto no post do blog, currículo ou site já pode ser suficientemente impressionante.
Se quiser ver como ficou o esquemático/PCB, dá para conferir direto no visualizador online os arquivos KiCad.
Tenho uma pergunta para o criador do cartão (phirks?): se ele já pensou em exibir mais interações ou diferentes informações em texto usando uma matriz de LEDs.
Se usar um botão touch, é possível controlar sem praticamente custo extra na BOM (lista de componentes).
Claro que no estado atual já é muito bonito.
Assim que terminar de procurar emprego, vou fazer isso.
O código para exibir números já está todo implementado, mas ainda não está em uso.
Texto não ficou tão bom; para ficar legível precisa de muito mais espaço do que imaginei, e com o espaçamento entre LEDs tão largo como este, as fontes de pixel pequenas não ficam boas.
Scroll de texto parece não ser ruim, mas ainda não dei atenção até chegar lá.
Tentei exibir QR code, mas a leitura não funcionou bem.
Como princípio não uso botão, se for possível usar clique/duplo clique do acelerômetro vou pensar mais nessa ideia.
Seria ótimo se alguém fizesse fork, contribuísse ou abrisse issues; também vou tentar manter bem.
Na China, já há bastante tempo produtos desse tipo existem, como a chamada “digital hourglass” (ampulheta digital).
Para Acorn Archimedes, houve um jogo completo chamado Cataclysm com esse conceito, que pode ser visto em um vídeo no YouTube.
Também teve remake para Xbox 360, e lembro que para o aparelho da época foi bem impressionante.
No Oxygen Not Included, diversos fluidos e gases são simulados, com modo sandbox e ferramentas de debug.
Adoro especialmente desenhar como diferentes materiais interagem entre si, quase como uma ilustração.
Há um vídeo de gameplay.
Se você gosta de projetos assim, o fluid simulation pendant do mitxela também é fortemente recomendado.
Todas as criações dele são sempre impressionantes, úteis e divertidas.
Ele compartilha tudo sem economizar nada; os vídeos e textos têm ótima qualidade, e a voz dele também é ótima, o que impressiona bastante.
Tomara que existam mais pessoas assim.
Recomendo fortemente assistir aos vídeos e ler os textos.
Só que o preço de £1200 fica um pouco pesado.
O design é artisticamente bonito.
Pessoalmente, percebo partes em que a camada de silk se sobrepõe; acho que seria bom organizar isso ou até remover todos os designadores dos componentes.
O tipo de fonte do texto de trás, eu gostaria de testar algo mais lúdico; depende do gosto, mas...
No geral, é um projeto muito bem acabado.
Como ando fazendo bastante trabalho com LEDs RP2350 ultimamente, fico curioso se consigo rodar esse código no meu pendente em desenvolvimento.
Saindo um pouco do assunto, mas fiquei curioso sobre por onde começar a estudar programação de simulação física.
Vi o projeto taichi_mpm há alguns anos, e apesar de ter só 88 linhas em C++, achei muito difícil.
Tenho alguma experiência com implementações simples de compilador e banco de dados, mas em simulação física me sinto totalmente zerado.
Simulação física tem um escopo muito amplo, então os métodos de simulação de fluido e de cálculo de órbita planetária diferem bastante.
Em essência, em ambos integra-se numericamente uma variedade de variáveis com base em equações diferenciais e álgebra linear.
O mais básico é o método de Euler, atualizando aceleração, velocidade e posição a cada passo; como o erro é grande, na prática costuma-se usar métodos avançados como Runge Kutta.
Se o sistema físico precisar preservar alguma propriedade (por exemplo, conservação de energia), também existem métodos numéricos que garantem isso.
Também por ser bem diferente escolher simulação de partículas ou de grade, essa questão se conecta com a profundidade central da física.
Conclui com aquela frase clássica de que toda informação é física.
As notas de aula de simulação de corpo rígido do SIGGRAPH 2001 são um pouco difíceis, mas permitem percorrer de ponta a ponta da compreensão matemática.
Tutoriais em plataformas de jogo de desempenho propositalmente baixo, como pico-8, ajudam muito.
Por exemplo, se você implementar uma simulação física simples estilo Mario atualizando a posição x/y do personagem e dx/dy (velocidade) a cada frame, dá para pegar o básico.
Quando o jogador aperta o botão de pular, vai para o estado 'jump' com dy=1 e multiplica dy por 0.9 a cada frame.
Quando dy fica igual ou abaixo de 0, muda para 'falling', e depois dy é multiplicado por 1.1 até atingir a velocidade terminal.
Só com esse básico já dá para implementar com facilidade efeitos físicos simples do tipo 'falling sand'.
Na prática, as duas acabam se encontrando na discretização e no cálculo numérico.
O livro "Numerical Recipes" é a bíblia que todo físico lê; "Computer Simulation of Liquids" (Allen) também é um bom começo.
O que comento aqui é a vertente que busca precisão física real; em design de jogo, dá para usar várias heurísticas que só precisam parecer semelhantes à física real.
Tem muitos exemplos em Python.
O vídeo do tenMinutePhysics também é um bom vídeo para começar.
Um exemplo de tecnologia de ponta da época de 2009 está aqui
Gostaria de saber mais sobre como foi o processo de fabricação; imagino que a montagem SMD foi feita com uma empresa terceirizada.
O circuito e layout foram projetados com a ferramenta open source KiCAD, então provavelmente mandaram fabricar numa empresa estrangeira de PCB, e esse nível de complexidade é tranquilo de lidar.
Com algumas centenas de dólares dá para fazer, enviar e receber em menos de um mês.
Para montar SMD (componentes de montagem de superfície) manualmente, é preciso passar pasta de solda, colocar os componentes e depois aquecer o conjunto para soldar, mas com tantos LEDs quanto esse fica extremamente trabalhoso.
Às vezes esse método até parece mais fácil que through-hole, porque não é preciso ficar virando a placa o tempo todo.
Mesmo assim, 99,9% de chance é que tenha sido feito em escala tipo JLC ou PCBWay.
No entanto, os LEDs desse produto parecem ter boa qualidade, e alguns componentes podem ter custo alto.
Se foi com uma guia em grade de um material tipo silicone, ou se foi uma máquina de pick-and-place robótica que posicionou tudo automaticamente com precisão.