世界を動かす技術を、日本語で。

超薄型名刺が流体シミュレーションを実行する

概要

flip-cardプロジェクト の全ファイルを収録したリポジトリ FLIP流体シミュレーション を実行する名刺型デバイスの設計 PCB設計ファイルWASMシミュレータ など複数コンポーネントで構成 各フォルダに詳細な README を配置 参考プロジェクト や設計上の工夫も言及

flip-cardプロジェクト概要

  • flip-card は、 流体-暗黙-粒子(FLIP)シミュレーション を名刺サイズで実現する電子デバイスプロジェクト
  • PCB設計ファイル は「 kicad-pcb」フォルダに格納
  • プロジェクトの着想源は mitxelaのfluid simulation pendant project (https://mitxela.com/projects/fluid-pendant)
  • 流体シミュレーションロジック は独立したcrateとして「 fluid_sim_crate」フォルダに実装
    • Matthias Müller (https://github.com/matthias-research)および Ten Minute Physics チャンネルのデモを基に設計
  • 充電式バッテリー の実装が技術的課題
    • cnlohrのtiny touch lcd project (https://github.com/cnlohr/ch32v003_3digit_lcd_usb/)の基板エッジUSB-Cポート設計を参考
  • WASMシミュレータ (「 sim_display」フォルダ)で流体挙動のデバッグを実施
  • RP2350 上で動作する流体シミュレーションの実装は「 flip-card_firmware」ファイルに収録
  • 各フォルダには README ファイルがあり、詳細情報を記載

参考・関連リソース

  • mitxela fluid simulation pendant project
    • 流体シミュレーションを小型デバイスで実現する先行事例
  • Matthias Müller
    • FLIP法の理論とデモ動画で有名な研究者
  • cnlohr tiny touch lcd project
    • 小型デバイス向けUSB-Cポート設計の参考資料

フォルダ構成

  • kicad-pcb :PCB設計ファイル一式
  • fluid_sim_crate :Rustクレート形式の流体シミュレーションロジック
  • sim_display :WASMベースのシミュレータ・デバッガ
  • flip-card_firmware :RP2350用ファームウェア実装
  • 各フォルダ内に README ファイル配置、追加情報の参照が可能

技術的特徴

  • FLIPシミュレーション による実時間流体挙動再現
  • 充電式バッテリー 対応のコンパクト設計
  • USB-C ポートの基板エッジ実装
  • WASMシミュレータ による開発効率化

利用方法・詳細情報

  • 各コンポーネントや実装の詳細は、該当フォルダ内の README を参照
  • プロジェクト全体の構成や背景 を把握することで、設計・開発の流れを理解可能

Hackerたちの意見

話は変わるけど、物理シミュレーションの書き方を学ぶにはどこから始めればいいの?数年前にこのプロジェクト[0]を見つけて、C++で88行で書けるアルゴリズムに圧倒されたんだ。コンピュータサイエンスのトピックの中で、物理シミュレーションが一番わからないことに気づいたよ(コンパイラやデータベースの専門家ってわけじゃないけど、トイコンパイラやデータベースで使う基本的なデータ構造は実装したことあるし)。物理シミュレーションになると、頭が真っ白になっちゃうんだよね。[0]: https://github.com/yuanming-hu/taichi_mpm

剛体シミュレーションはずっと簡単だよ。2001年のSIGGRAPHのコース[0]があって、ちょっと難しいけど、剛体シミュレーションを完全に理解するための数学も教えてくれるよ。[0] https://graphics.pixar.com/pbm2001/pdf/notesg.pdf

私が役立ったのは、意図的に「弱い」ゲームプラットフォームであるpico-8のチュートリアルをやったことかな。その中の一つは、シンプルで理解しやすい慣性や重力シミュレーションを使ったプラットフォームゲーム(ジャンプや左右の移動ができる、マリオみたいなやつ)だった。キャラクターのx/y位置と、現在の速度を表すデルタx/デルタyがあれば、十分理解できたよ。毎フレーム、dx/dyはプレイヤーの入力やキャラクターの状態によって変わるんだ。例えば、プレイヤーがジャンプボタンを押したら、状態を「ジャンプ中」にしてdyを1にする。毎フレーム、dyはdy * 0.9になる。dyが0以下になったら、状態を「落下中」にする。毎フレーム、dyはdy * 1.1になって、dyが1(終端速度)になるまで続ける。それから衝突判定を追加する。これらの基本が、よりシンプルな物理シミュレーションの背後にもあると思う。落ちる砂のタイプは、こういうアプリケーションには理想的だね。

統計力学については、[1]がすごく良かったよ。たくさんのPythonプログラムが付いてる。興味を引くかもしれない動画は、[2]がいいスタートポイントかも。 [1]: https://www.coursera.org/learn/statistical-mechanics [2]: https://matthias-research.github.io/pages/tenMinutePhysics/i...

ダニエル・シフマンの「The Nature of Code」は素晴らしい入門書だよ。Processing/p5.jsで物理シミュレーションの基本を分かりやすい例で教えてくれる。

Perplexityとか、そういうのに行ってみればいいよ。もうみんな通った道だから。要するに、関連する微分方程式を離散化して、それを2Dか3Dのセルオートマトンで動かすってこと。簡単な例をあげると、2点間の熱の拡散について、変化率(1次導関数)はその間の温度差に比例するんだ。だから、グリッド上の点に対して「セルの温度と隣の温度の平均差を計算して、それに定数を掛けたものがこのセルをこの時点で更新する量だよ」っていう更新ルールを作る。これをすべてのセルで並列に、何度も実行するんだ。そしたら可視化を追加して、熱が拡散する様子を見られるよ。面白い例としては、原始地球の冷却過程なんかがある。地殻が形成されるのを見られるよ。熱の拡散はいいスタート問題だし、重力相互作用もそうだね。

すごいね。ただ、パトリック・ベイトマンには見せない方がいいよ。

「RMDNZが俺のカードよりL-Johnsonのカードを好んだなんて信じられない!」

電気的なポテンシャルに妊娠してるみたい。

すごくいいけど、配るにはちょっと高すぎるかも。似たようなハードウェア名刺を持ってるやつを知ってるんだけど(何をしてたかは正確には覚えてないけど、これほどクールではなかった)。その名刺は結構傷だらけだったのに、渡した後に返してくれって言われたのがちょっと変だったな。

これ、いくらするの?最近のハッカー会議のゲストパスはフルコンピュータになってるから、もしこれも同じ価格帯なら、すごくいいアイデアだね。

GPT-o3によると、これを作るのにかかるコストは10ドルから20ドルくらいらしい。こういうのを売るニッチなビジネスをやる人がいるかもしれないね(例えば、企業向けソフトウェアの営業マンが目立とうとしてるとか)。

これにカスタムQRコードを表示するボタンやモードがあると思ってたんだけど…

もしかしたら、誰にでもあげるわけじゃないかもしれないけど、もらった人は絶対に覚えてくれるよ!私も机の中に置いて遊ぶかも。数週間後には、その人のメールアドレスやLinkedInを永遠に覚えてることになりそう。

1週間くらい経ったら、悲しいたまごっちを入れて、心が折れて元の持ち主に返してくれって罪悪感を与えるのもいいかも。

人が自分の専門分野について説明するのに話さなくてもいい時が大好き。これはすごくいい例だね、素晴らしい仕事!

この形状、めっちゃ好き!似たようなやつにbeamu(einkスクリーン、nrf52にbt付き)があったよ: https://nicgardner.com/2020/05/09/beamu-first-impressions/ (これは実際の製品だけど、ちょっと無意味だったかな。今も持ってるよ)他に何かある?

その機能、使ってる?これはちょっとクールだね。人が一つの製品に機能を詰め込みすぎるのが好きなんだ :P

これが好きなら、Mitxelaの流体シミュレーションペンダント[0]も絶対好きになるし、彼の作品全部が好きになると思う!彼の作品はいつも情報量が多くて楽しいから、驚かされるよ。彼はたくさんのことを自由にシェアしてくれて、制作も素晴らしいし、声も素敵。インスピレーショナル!彼の動画を見たり、記事を読んだり、両方やってみて!こういう人がもっと必要だよ。[0] https://mitxela.com/projects/fluid-pendant

それは記事の中でもっきり言及されてて、リンクもあったよ。

mitxelaに+1、マジで驚かされるわ。

円の方が流体シミュレーションにはずっと良いね。

典型的な中国のソースでは、こういう「デジタル砂時計」タイプのオーナメントがしばらく売られてるよね。昔、Acorn Archimedesの「Cataclysm」ってゲームがあって、これに基づいてたんだ。https://www.youtube.com/watch?v=3Byyz1Vlv8 360用にリメイクされたけど、当時は動いてた機械にしては驚くほどすごいって評価されてたんだよ。

デジタルディスコボールってあるの?

すごいプロジェクトだけど、カードの裏のフォントがダサい。

それは本物のクレジットだね。リアルなクレジット。ダサいフォント。回路がむき出し。ピクセルの間に太い境界線。見た目が悪い充電ポート。でも、合理的に考えても小さくてスリムなボリュームに詰め込まれてるものが多い。完璧に動いてる。それはジョブズじゃない。いや、違う。これはマジでウォズだ。彼は本物のハードウェアエンジニアだよ。

USB CコネクタがPCBを通って、全体の高さがコネクタの高さだけになるのってかっこいいよね。こんなのみたいに:https://www.adafruit.com/product/5180?srsltid=AfmBOopEIapZEq... でも、PCBの上や下にハンダ付けできるようにサイドにサポートがあればいいな。コネクタ用に切り欠きも必要だね。

そうなんだ。むしろもっと小さいよ。USB Cコネクタの内側部分だけで、PCBの厚さと同じくらいなんだ。https://github.com/cnlohr/ch32v003_3digit_lcd_usb/みたいに。

同じこと考えたけど、見た感じだとそれはちょっと珍しいみたい。おそらく、一般的なコネクタほどしっかりと基板に取り付けられないんじゃないかな。

それいいね!でも名刺だから、裏のテキストはもっと読みやすい方がいいと思う(フォントをもっと良くするとか、サイズを大きくするとか)。