3 điểm bởi GN⁺ 2025-08-05 | 1 bình luận | Chia sẻ qua WhatsApp
  • Kilopixel là một màn hình hiển thị gỗ quy mô lớn dựa trên 1000 pixel gỗ, được phát triển trong 6 năm, cho phép bất kỳ ai cũng có thể vẽ tranh qua Internet
  • Dự án này hoàn thiện sau quá trình thử nghiệm gồm thiết kế nhiều nguyên mẫu vật lý khác nhau, kiểm tra vật liệu và chuyển đổi hình dạng pixel
  • Cấu trúc này có cách kết nối độc đáo giữa trực tuyến và ngoại tuyến nhờ tận dụng máy CNC cùng Raspberry Pi, ứng dụng web và cảm biến
  • Người dùng có thể tham gia bằng cách nộp tranh trực tiếp qua website hoặc bỏ phiếu; dự án cũng thiết lập môi trường phát trực tiếp và video tua nhanh theo thời gian
  • Trong tương lai, đây là dự án mang tính sáng tạo và mở, nơi việc chuyển quyền kiểm soát điều khiển màn hình cho người khác hoặc các hướng sử dụng khác đang được xem xét

Tổng quan dự án

  • Kilopixel là một trong những màn hình 1000 pixel gỗ kém hiệu quả nhất thế giới đã được phát triển trong 6 năm
  • Đây là một hệ thống tương tác được thiết kế để bất kỳ ai cũng có thể vẽ trên màn hình này qua website (kilopx.com)
  • Dự án là kết quả của sự kết hợp các yếu tố IT/maker như ứng dụng web, bộ điều khiển vật lý, gia công CNC, tạo mã G, mô hình hóa 3D và in 3D

Ý tưởng và động lực ban đầu

  • Ý tưởng được lấy cảm hứng từ những tác phẩm gương phi truyền thống của Danny Rozin và máy phát phim siêu chậm dựa trên eInk
  • Không giống màn hình độ phân giải cao hiện đại, dự án chọn phương thức chuyển đổi cực chậm, chỉ 10 lần mỗi phút
  • Khối ảnh được thể hiện trên lưới 40×25 để đúng 1.000 pixel, và được đặt tên theo tên miền dễ nhớ “kilopx.com”

Chế tạo nguyên mẫu đầu tiên (21×3 pixel)

  • Ban đầu dùng thanh gỗ làm khung, sau đó chuyển ngay sang dùng linh kiện nhôm của Openbuilds kit (cấu trúc tương tự máy in 3D)
  • Dựng hệ thống tự động cơ bản với Raspberry Pi, bộ điều khiển CNC, động cơ bước
  • Phát hiện nhiều giới hạn và vấn đề kỹ thuật trong cơ chế chọn và thao tác pixel

Khó khăn khi tìm pixel phù hợp

  • Đã thử nghiệm nhiều vật liệu dạng cầu như bóng bàn, xốp, bóng gỗ
    • Đối mặt với các vấn đề thực tế như chi phí, trọng lượng, độ khó trong việc mua vật liệu, và sự không đồng đều về kích thước
    • Ví dụ: nếu mua 1.000 quả bóng trị giá 50 xu mỗi quả, chi phí sẽ là 500 USD
  • Bóng bàn bị biến dạng dễ dàng khi khoan lỗ, và bị loại vì sai lệch kích cỡ
  • Neopball, bóng nảy, bóng gỗ, xốp cũng bị loại vì không phù hợp do khó khoan lỗ, sơn, độ bền và trọng lượng
Quảng cáo

Thử nghiệm cơ chế quay pixel

  • Cố gắng xoay pixel bằng cách kết hợp bánh xe Lego và động cơ cùng cảm biến
  • Thử nhiều cơ chế hoạt động như điện từ, servo... nhưng tất cả đều dừng vì khó kiểm soát chặt chẽ

Chuyển từ pixel cầu sang pixel lập phương

  • Sau một cuộc trò chuyện podcast, nhóm chuyển hẳn sang pixel gỗ dạng lập phương và bắt đầu tự chế tạo
  • Vì tính chất sản xuất hàng loạt nên tốn nhiều thời gian, nhưng vẫn hài lòng với chất lượng hiển thị và chuyển động

Chế tạo lưới pixel

  • Thiết kế cấu trúc khung cố định thay vì chính pixel để bảo đảm độ chính xác của bố trí 40×25
  • Gia công 25 tấm ván mỏng có 40 lỗ, xuyên dây các pixel trên dây kim loại để giữ khoảng cách đồng đều
  • Thiết kế để mỗi pixel hoạt động độc lập hoàn toàn mà không bị ảnh hưởng bởi pixel xung quanh

CNC và điều khiển hệ thống

  • Bài viết có giải thích về nguyên lý CNC cơ bản và cách dùng mã G
  • Sử dụng Raspberry Pi, bộ điều khiển CNC, script Python, cảm biến ánh sáng, thư viện pigpio và các thành phần liên quan
  • Tích hợp với web API: chọn pixel sẽ thay đổi tiếp theo, điều khiển bằng G-code, kiểm tra kết quả bằng cảm biến rồi phản hồi qua API theo vòng lặp

Cơ chế thao tác pixel (pixel poking)

  • Mỗi pixel có rãnh tùy chỉnh theo từng bước 90°, rồi dùng que dẻo (gluestick) đẩy phần viền để xoay
  • Tất cả các thao tác này đều được tự động hóa bằng G-code
Quảng cáo

Chế độ xuất ảnh và giao diện web

  • API được điều khiển từ ứng dụng web, với ba chế độ hiển thị
    • Nộp nội dung: bất kỳ ai đều có thể gửi ảnh 40×25 và bỏ phiếu; các tác phẩm được hiển thị tuần tự theo mức độ phổ biến
    • Cộng tác thời gian thực: người tham gia thay đổi pixel trực tiếp (nếu quá nhiều người thì không phù hợp)
    • Chế độ idle: biến đổi có thuật toán như đồng hồ, hình học
  • Ngăn xếp web app đã phát triển từ Node/Socket.IO, Laravel+Livewire rồi đến Laravel+InertiaJS+VueJS ở giai đoạn cuối

Phát trực tiếp thời gian thực và timelapse

  • Với 2 webcam (góc cận và góc rộng), dùng OBS và ffmpeg để phát trực tiếp màn hình lên YouTube theo thời gian thực
  • Sau khi kiểm tra trạng thái API, hệ thống cũng hỗ trợ tạo và đăng video timelapse cho tác phẩm hoàn chỉnh

Bảo mật và vận hành của hệ thống mở

  • Xây dựng cơ chế kiểm tra tối thiểu để giảm lạm dụng, và hỗ trợ xóa nhanh tác phẩm khi cần
  • Mặc định duy trì cấu trúc tham gia rất mở, áp dụng đăng nhập bằng Bluesky OAuth

Kế hoạch trong tương lai

  • Mong đợi sự tham gia đa dạng từ người dùng; sau đó xem xét chuyển quyền điều khiển qua API cho người dùng khác
  • Về dài hạn, dự án nghĩ tới việc dùng làm nền webcam cá nhân hoặc triển khai trong văn phòng, quán cà phê và nhiều không gian khác
  • Bất kỳ ai cũng có thể tham gia và thưởng thức theo thời gian thực qua website

Kết luận

  • Kilopixel là dự án độc đáo khi kết hợp tính tương tác của trực tuyến với tính vật lý của ngoại tuyến
  • Quá trình phát triển với nhiều thử và sai, cùng nỗ lực kỹ thuật đáng chú ý, là ví dụ hấp dẫn có thể truyền cảm hứng cho cả maker lẫn nhà phát triển

1 bình luận

 
GN⁺ 2025-08-05
Ý kiến từ Hacker News
  • Đây là một dự án tuyệt vời; mình cũng từng làm một màn hình 30 pixel trước đây. Dự án tham khảo PixelWeaver dùng cơ chế cơ khí: punch card và tay quay để tất cả pixel đổi cùng lúc, nên quy trình phát triển cơ chế trông rất quen thuộc.

    • Thật đáng kinh ngạc vì công việc này. Mình thừa nhận cần rất nhiều nỗ lực mới có thể hoàn tất nó. Gần đây khi được nhìn trực tiếp chiếc máy in chữ Linotype của thế kỷ 19, mình lại trầm trồ trước thành tựu của thế hệ đi trước. Máy quá phức tạp khiến mình khó hình dung họ đã chế tạo nó ra sao; nghe nhắc đến máy dệt (loom) thì cảm giác ấy lại ùa lên.
  • Mumbo Jumbo đã từng dùng trap door để hiện thực hóa một concept tương tự trong Hermitcraft. Giờ đây đang có một cuộc “cách mạng buildstone”, nơi người ta dùng redstone để tạo các chi tiết thẩm mỹ. Video Mumbot 2.0 có thể xem thử. Grian cũng từng tạo thác nước hoạt ảnh với dispenser, hạt băng tuyết và mũi tên potion. Video thác nước của Grian

  • Mình thấy dự án này thật tuyệt, đã xem tới cả phần con mèo nói “hi”. Có vẻ như suốt 9 ngày gần đây Bluesky của @kilopx.com chưa có bài mới. Nếu được đề xuất vài cải tiến: khi nộp xong nên đẩy “bút” đi xa hơn để chụp tác phẩm hoàn chỉnh gọn gàng hơn, và hiển thị ngay người đang nộp bài hiện tại trên site. Ngoài ra, nên tách riêng gallery “history” cho các bài đã hoàn thành. Hiện tại chỉ có liên kết tĩnh như “Timelapse will be available after this is drawn” cho bài đang chờ, nên mình không thấy cách nào dễ để tìm kết quả đã xong hoặc đang làm dở.

  • Việc refresh rate 370 microhertz đã khiến khái niệm “Calm Technology” có thêm một ý nghĩa mới hoàn toàn, rất hay. Giải thích về Calm Technology trên wiki

    • Chủ đề này rất cuốn hút. Mình tò mò không biết ai đã đọc sách của Amber Case về “Calm Technology” có thấy nên đọc không.

    • Tỷ lệ khung hình của camera chính trong livestream YouTube lại tình cờ trùng đúng con số này; mong OP sửa điểm này.

  • Theo trải nghiệm của mình, đây có lẽ là màn hình đắt nhất theo pixel, nhưng đây là một display hấp dẫn như chưa từng thấy, theo nghĩa tốt đẹp nhất thì thực sự… vô cùng “phi lý”.

    • Một ví dụ khác về pixel vừa đẹp vừa đắt là tác phẩm gương của Danny Rosin được nhắc trong bài video liên quan

    • Một điểm cộng lớn là nếu không đổi ảnh thì hầu như không tiêu thụ điện.

    • Mythbusters dường như vẫn giữ kỷ lục này video thí nghiệm liên quan

    • Thực ra, mình không muốn tưởng tượng ra giá cho từng pixel; cộng thêm giá trị thời gian của mình thì càng không muốn, nên mình cố tình tránh tính tổng chi phí cuối cùng.

    • Mình đã dùng que dính linh hoạt để làm cơ chế đâm ra-đâm vào (poking) qua lại. Đây là lựa chọn “vật liệu tiêu hao” sáng tạo và tiết kiệm chi phí nhất.

  • Một ý tưởng khác: căn chỉnh sao cho khi khối quay về phía trước thì không phải mặt mà là cạnh quay về phía trước. Nếu mỗi khối có hai mặt tối kề nhau và hai mặt sáng kề nhau, có thể đồng thời thiết lập hai ảnh (mỗi pixel có tổng cộng 4 trạng thái): một nhìn từ 45° bên trái, một từ 45° bên phải.

    • Nếu chấp nhận đánh đổi một màu, có thể dùng hình dạng lăng kính tam giác để đặt các mặt ảo sát nhau và quay riêng lẻ hình minh họa

    • Có thể mở rộng thành màn hình màu bằng cách sơn mỗi mặt theo RGBK hoặc CYMK.

    • Tương tự, có thể nhân đôi số pixel với cùng phần cứng hiện có dù đặt camera ở thẳng trước mặt.

  • Dù dự án này rất đẹp, mình vẫn không ngừng nghĩ ra cách đẩy tốc độ lên cao hơn (dù biết tốc độ không phải điểm chính). Nếu cơ cấu quay khối hoạt động mà không cần đổi căn chỉnh trục x liên tục thì có thể xử lý nhanh cả một cột; hoặc nếu không cần căn chỉnh trục y thì xử lý theo hàng ngang cũng được. Nếu tạo cơ chế quay mà không phải reset máy xoay liên tục (ví dụ kiểu quay), chắc sẽ nhanh hơn. Mình tưởng tượng nếu giao việc này cho chuyên gia tự động hóa sản xuất thì sẽ làm rất nhanh. Nhân tiện, ấn tượng với cách họ ban đầu chọn kiểu e-ink analog bằng bi.

  • Khi nói về một “lựa chọn ma trận điểm chỉ tiêu thụ điện khi cập nhật ảnh”, đây là một hướng chưa từng nghĩ tới: đặt một máy in nhiệt ở một bên hộp, bên kia giấu cuộn dây cuốn và lò xo căng; giấy nhiệt cuộn ra sau lớp kính [chắn UV] và hiển thị, rồi in ảnh mới để “refresh” lại màn hình.

    • Đẩy xa hơn nữa, có thể phủ bề mặt display bằng mực xóa nhiệt của Pilot Frixion. Mực này tan ở 60°C và tối lại ở -10°C, ổn định ở nhiệt độ trung gian, nên có thể tái sử dụng một vòng lặp. Chưa rõ mực bền được bao nhiêu chu kỳ.

    • Một số máy fax đã dùng giấy nhiệt và có thể mở rộng ít nhất tới 8.5 inch.

    • Nếu phải vứt giấy mỗi lần thay ảnh thì sẽ khó gọi đó là “display”.

    • Dùng cấu trúc hộp có thể nhân rộng display lên 4 mặt; chỉ cần làm cơ chế tốt. Khi đổi ảnh màn hình chính, ảnh kế tiếp chuyển thành display thứ 2, 3, 4. Thiết kế rất thú vị nếu đặt roller giấu trong khung ở mỗi góc và tạo khe trên bezel.

  • Mình thấy nó rất đẹp; bài viết thật vui khi đọc. Dự án này gợi lại những gì từng đọc trong tiểu thuyết steampunk; mình đã tra cứu và nhìn thấy kinotrope trong Difference Engine của Gibson & Sterling. Có người từng làm phiên bản gắn servo cho từng pixel ở đây, chắc hẳn rất đắt. Bài blog liên quan

    • Từ công việc của Rozin ở Breakfast, mình đã làm nhiều panel tương tự bằng nhiều “chất liệu” khác nhau. panel breakfaststudio
  • Mình còn tiếp tục tưởng tượng các biến thể “nhanh hơn”: ví dụ cấp bóng gỗ theo từng scanline qua ống/kênh tương ứng màu, rồi dùng trọng lực hoặc khí nén để reset/tái nạp một hàng; có thể mở rộng kích cỡ sân vận động để làm pixel bằng bóng bowling. Điểm khó sẽ là phân phối đúng thời điểm khi đưa lại từng màu về các kênh cấp và cần cơ cấu giảm xóc để hạ tiếng ồn, mài mòn do va đập bóng. Ngược lại, cách active matrix cũng khả thi, mỗi block xoay tại chỗ bằng solenoid/servo để tạo nhiều màu.