2 điểm bởi GN⁺ 2025-08-09 | 1 bình luận | Chia sẻ qua WhatsApp
  • Dự án flip-card là dự án phần cứng mã nguồn mở chạy mô phỏng FLIP (Fluid-Implicit Particle) trên một thẻ danh thiếp cực mỏng
  • Các tệp thiết kế PCB và logic mô phỏng được đưa trực tiếp vào dự án, nên dễ tham khảo và ứng dụng
  • Nhờ mô phỏng WASM, có thể gỡ lỗi mô phỏng mà không cần phần cứng thật
  • Thiết kế sáng tạo như pin sạc lại và cổng USB-C đã được áp dụng
  • Được phát triển dựa trên các thuật toán mới nhất và các dự án tham chiếu của những nhà nghiên cứu nổi tiếng như Matthias Müller

Tổng quan dự án flip-card

  • flip-card là một dự án phần cứng mã nguồn mở thực thi trên phần cứng thật, nhúng thuật toán mô phỏng dòng chảy vào bo mạch in cỡ thẻ danh thiếp cực mỏng
  • Dự án này lấy cảm hứng từ dự án fluid simulation pendant của mitxela và nổi bật ở chỗ cho phép quan sát chuyển động chất lỏng trực quan trên một thẻ danh thiếp

Tệp và cấu trúc chính

  • Các tệp thiết kế PCB nằm trong thư mục "kicad-pcb"
  • Logic mô phỏng dòng chảy dựa trên FLIP nằm trong crate Rust riêng trong thư mục "fluid_sim_crate", được triển khai dựa trên nghiên cứu của Matthias Müller và phương pháp tiên tiến được giới thiệu trong "Ten Minute Physics"
  • Tệp "flip-card_firmware" chứa triển khai firmware trên chip RP2350

Chức năng và tính năng

  • Tích hợp pin sạc lại: Tham khảo thiết kế của dự án tiny touch lcd của cnlohr, dự án đã áp dụng cổng USB-C ở cạnh bo mạch để tăng tính ứng dụng thực tế
  • Mô phỏng WASM: Công cụ WebAssembly trong thư mục "sim_display" cho phép gỡ lỗi mô phỏng trong môi trường PC và web mà không cần phần cứng
  • Mô tả chi tiết theo từng thư mục đều có trong các file README tương ứng

Thông tin khác

  • flip-card phù hợp cho việc học hỏi và tham khảo về các công nghệ nhúng hiện đại như triển khai chip mô phỏng chất lỏng, kinh nghiệm thiết kế mạch phần cứng, gỡ lỗi mô phỏng dựa trên WebAssembly và thiết kế bo mạch sạc lại
  • Dự án này được cộng đồng mã nguồn mở quan tâm như một trường hợp tham khảo và kinh nghiệm thiết kế đáng giá

1 bình luận

 
GN⁺ 2025-08-09
Bình luận Hacker News
  • Việc đổ một lượng nước vào một khoang rỗng kích thước danh thiếp có lợi ở chỗ có thể tạo chuyển động chất lỏng tự nhiên hơn, giá thành rẻ, dễ sản xuất và cũng dễ gỡ lỗi. Nhược điểm là khi ngồi có thể bị ướt mông, và cảm giác chinh phục khi làm việc khó và thử thách ít hơn.

    • Ở cỡ danh thiếp, chuyển động của chất lỏng có xu hướng quá nhanh.
  • Cái cổng USB-C ở đầu board trông thật "ngầu", có lẽ sẽ còn nhiều thử nghiệm như vậy hơn khi mọi người nhận ra rằng có thể gắn USB-C vào board mà không cần linh kiện phụ hay hàn.

  • Rất đẹp, nhưng có vẻ giá hơi cao nên khó để phát cho mỗi người. Mình từng gặp một người làm danh thiếp phần cứng trước đây; không nhớ rõ lắm nhưng chưa bao giờ đẹp đến mức này. Anh ấy đã đưa cho mình một tấm thẻ đã xước rất nhiều, rồi sau khi cho đi lại xin lấy lại, nên cảm giác hơi kỳ.

    • Mình chắc chắn sẽ không phát cho bất kỳ ai, nhưng ai nhận được sẽ nhớ rất lâu. Có lẽ người nhận sẽ để nó trong ngăn kéo bàn rồi cứ chọc ngoáy, và nhờ vậy sẽ nhớ luôn email hoặc LinkedIn của người tặng.
    • Loại danh thiếp phần cứng kiểu này thường được dùng như dự án portfolio. Nó kéo được nhiều traffic về website; nếu là freelancer hoặc đang xin việc, có thể sản xuất số lượng nhỏ rồi tặng đặc biệt khi có cơ hội khách hàng tiềm năng hoặc cơ hội việc làm.
    • Nếu ai đó xin lại danh thiếp thì đó không còn là danh thiếp nữa, mà chỉ là đồ chơi.
    • Với một số người, cũng không nhất thiết phải tặng một tấm danh thiếp như vậy. Nếu đang đi tìm việc, chỉ cần post blog về dự án này hoặc liên kết trong CV/website cũng đủ ấn tượng rồi.
    • Ban đầu mình cũng mong sẽ có chế độ hiển thị QR code hoặc nút bấm nào đó.
  • Nếu muốn xem sơ đồ PCB và mạch được thiết kế ra sao thì có thể xem trực tiếp trên trình xem KiCad trực tuyến. Có vài câu hỏi cho người làm card (phirks?) là liệu có dự định xuất thêm nhiều tương tác hay hiển thị văn bản qua LED matrix hay không. Khi dùng touch button thì có thể điều khiển mà gần như không phát sinh chi phí BOM (bill of materials). Dù sao thì trạng thái hiện tại của nó đã rất đẹp.

    • Đã từng nghĩ đến việc thêm trò chơi như Tetris bằng gia tốc kế. Sẽ làm điều đó sau khi xong việc tìm việc. Mã để hiển thị số đã hoàn tất từ trước, nhưng chưa được dùng. Văn bản không dễ như tưởng tượng; để chữ nhìn rõ cần nhiều không gian hơn dự đoán, và với khoảng cách LED như hiện tại, font pixel nhỏ trông xấu. Text chạy (scrolling text) có vẻ ổn, nhưng chưa có thời gian đi sâu đến đó. Có thử hiển thị QR code nhưng quét chưa ổn. Vì nguyên tắc là không dùng nút bấm, nên nếu có thể tận dụng click/double-click của gia tốc kế thì sẽ cân nhắc thêm theo hướng đó. Ai cũng có thể fork, đóng góp hay mở issue; mình cũng sẽ hỗ trợ bảo trì tích cực.
  • Ở Trung Quốc thì đã có sản phẩm kiểu “digital hourglass” bán theo cách này từ lâu. Có một game toàn bộ tên Cataclysm cho Acorn Archimedes làm đúng concept này, xem được trên video YouTube. Nó đã được remake cho Xbox 360 nhưng hồi đó nó rất ấn tượng cho chiếc máy lúc bấy giờ.

    • Thật sự là một game mô phỏng chất lỏng rất ngầu và mang sắc thái hoài cổ. Trong Oxygen Not Included có mô phỏng nhiều chất lỏng và khí, có cả sandbox mode và công cụ debug. Mình đặc biệt thích vẽ ra cách các vật liệu khác nhau tương tác với nhau, giống như một bức tranh. Có video gameplay.
    • Không biết có cái gì như Digital Disco Ball hay không.
  • Nếu thích dự án này, thì mình cực kỳ khuyên fluid simulation pendant của mitxela. Mình luôn rất ngưỡng mộ các sản phẩm của anh ấy: vừa tuyệt vời, vừa bổ ích và thú vị. Anh ấy chia sẻ mọi thứ một cách hào phóng; video và bài viết đều có chất lượng cao, giọng đọc cũng hay. Mong sẽ có thêm nhiều người như vậy. Mình thực sự khuyên xem video và bài viết của anh ấy.

    • Thiết kế tròn hợp với mô phỏng chất lỏng hơn.
    • Mình rất thích thiết kế này. Nhưng giá £1200 của nó hơi đắt.
  • Thiết kế rất đẹp và nghệ thuật. Cá nhân mình thấy phần lớp silk chồng nhau; có lẽ nên dọn dẹp sạch hoặc bỏ hẳn phần designator (nhãn linh kiện). Phông chữ phía sau mình muốn thử cảm giác vui tươi hơn, tùy gu mỗi người. Tổng thể đây là một dự án hoàn thiện rất tốt. Mình đang làm nhiều với LED trên RP2350 gần đây, và tò mò không biết có thể chạy code này trên pendant đang thiết kế của mình không.

  • Hơi bị lệch đề một chút, nhưng mình tò mò nên bắt đầu học lập trình mô phỏng vật lý từ đâu. Cách đây vài năm mình xem project taichi_mpm; chỉ có 88 dòng C++ nhưng vẫn thấy quá khó. Với kinh nghiệm build đơn giản về compiler hay database rồi, nhưng riêng mô phỏng vật lý thì vẫn là blank.

    • Nếu bắt đầu, có lẽ tốt nhất là tiếp cận trước với "numerical methods" và "computational physics". Mô phỏng vật lý cực kỳ rộng, nên cách làm cho fluid simulation và tính quỹ đạo hành tinh khác nhau nhiều. Cốt lõi là tích phân số các biến theo phương trình vi phân dựa trên đại số tuyến tính. Cơ bản nhất là Euler's method cập nhật gia tốc, vận tốc, vị trí tính được ở mỗi step; vì sai số lớn nên thực tế thường dùng phương pháp cao cấp như Runge Kutta. Nếu hệ vật lý có tính chất cần giữ (ví dụ: bảo toàn năng lượng), có cả phương pháp số đảm bảo tính chất đó. Hơn nữa cách particle simulation hay grid simulation khác nhau rất nhiều nên câu hỏi này liên quan trực tiếp tới chiều sâu cốt lõi của vật lý. Kết thúc bằng câu kinh điển: mọi thứ đều là vật lý.
    • Rigid body simulation thì dễ hơn rất nhiều. Tài liệu bài giảng SIGGRAPH 2001 về rigid body simulation hơi khó nhưng giúp nhìn toàn bộ quá trình từ nền tảng toán học.
    • Tutorial từ nền tảng game cố tình giảm hiệu năng như pico-8 rất hữu ích. Ví dụ, bạn có thể hiện thực một mô phỏng vật lý đơn giản kiểu Mario: cập nhật vị trí x/y và dx/dy (velocity) của nhân vật mỗi frame để nắm được cảm giác cơ bản. Khi player nhấn nút nhảy thì đặt dy=1 và trạng thái 'jump', rồi mỗi frame nhân dy với 0.9. Khi dy <= 0 thì chuyển sang trạng thái 'falling', sau đó nhân dy với 1.1 để tiến đến terminal velocity. Chỉ cần nắm vài thứ cơ bản này bạn đã có thể dễ dàng làm hiệu ứng vật lý đơn giản kiểu 'falling sand'.
    • Mô phỏng vật lý hầu hết là particle-based hoặc dựa trên tích phân phương trình vi phân. Nhưng thực tế, cả hai gặp nhau ở khâu rời rạc hóa (discretization) và tính toán số. "Numerical Recipes" là cuốn kinh thánh của ai làm vật lý, và "Computer Simulation of Liquids" (Allen) cũng là lựa chọn khởi đầu ổn. Ở đây nói tới hướng tối ưu độ chính xác vật lý thật; trong game design thì có rất nhiều heuristic để trông giống vật lý thực mà không cần đúng hoàn toàn.
    • Với hướng thống kê vật lý, mình gợi ý khóa Coursera về statistical mechanics. Có rất nhiều ví dụ Python. Video tenMinutePhysics cũng rất phù hợp cho người mới.
  • Các ví dụ công nghệ thời điểm mới đây của năm 2009 có thể xem tại đây

  • Mình muốn biết kỹ hơn về cách thức sản xuất; đoán rằng việc lắp đặt surface mount có lẽ đã làm qua outsource.

    • Sản xuất linh kiện điện tử giờ dễ và rẻ hơn tưởng tượng nhiều. Thiết kế mạch và layout bằng KiCAD, có thể đặt chế tạo qua nhà sản xuất PCB nước ngoài, với độ phức tạp như thế này là làm được nhẹ. Vài trăm USD là đủ để sản xuất và giao trong chưa đến một tháng. Với lắp SMD thủ công bạn phải bôi solder paste, đặt linh kiện rồi nung toàn bộ để hàn, nhưng với LED nhiều như này thì làm tay rất phiền.
    • Mình từng làm cùng xưởng lắp ráp (có file centroid chỉ vị trí linh kiện), và đúng là việc đặt linh kiện có thể làm thủ công được. Thậm chí đôi khi cách này còn dễ hơn through-hole vì không phải lật board liên tục. Dù vậy xác suất 99,9% là đã sản xuất ở quy mô như JLC hay PCBWay.
    • Những bảng mạch kiểu này có thể làm số lượng nhỏ với giá vài USD tại JLCPCB. Tuy nhiên LED của sản phẩm này trông khá chất lượng, nên một vài linh kiện có thể có giá cao.
    • Mình tò mò họ sắp xếp LED chính xác như vậy bằng cách nào. Có phải dùng lưới hướng dẫn dạng silicon, hay dùng robot pick-and-place để sắp xếp cực kỳ chính xác?