- Alih-alih LED yang menyala, proyek ini memakai disk yang benar-benar dibalik secara fisik untuk membuat wall art interaktif untuk kantor, dengan 9 panel AlfaZeta disusun 3x3 menjadi display 84x42
- Perangkat kerasnya disatukan dengan catu daya 24V 10A, rangka aluminium 80/20, kabel RS485, dan Nvidia Orin Nano; jika ingin frame rate tinggi, jumlah panel per jalur RS485 harus dibatasi maksimal 6
- Perangkat lunaknya dibagi menjadi library Node.js flipdisc yang menangani frame RS485 dan kompresi RLE, serta flipdisc-server yang mengurus antrean scene, REST API, websocket, dan loop rendering
- Rendering memanfaatkan PIXI, Three.js, Matter.js, GSAP, node-canvas, dan node-gl, sementara pengenalan gesture MediaPipe dijalankan dengan mengeksekusi skrip Python dari Node lalu menerima hasilnya lewat ZeroMQ IPC
- Pada resolusi 42x84, perancangan ekspresi yang sesuai untuk resolusi rendah seperti font 3x5 piksel dan dithering Floyd-Steinberg maupun Bayer sangat menentukan kegunaan nyata
Mengapa flip-disc
- Flip-disc adalah display yang membalik disk kecil di antara dua warna dengan pulsa elektromagnetik; ditemukan lebih dari 80 tahun lalu, tetapi prinsip dasarnya hingga kini sebagian besar tetap sama
- Proyek ini dipilih untuk membuat wall art interaktif berukuran besar untuk kantor yang memiliki gerakan dan suara fisik, alih-alih kesan layar LED yang terang dan mulus
- Ciri khasnya adalah keterbacaan tinggi, umur pakai panjang, operasi di kisaran 25-60fps, serta suara seperti rintik hujan saat disk-disknya dibalik
- Seperti pixel knitting app untuk visualisasi kode dan crafting tool untuk Atom Editor yang pernah dibuat sebelumnya, proyek ini didekati sebagai eksperimen yang menggabungkan kode dan medium fisik
Susunan perangkat keras
- 9 panel Alfazeta disusun dalam grid 3x3 untuk membuat display disk 84x42
- Setiap papan terdiri dari 2 panel 28x7
- PCB-nya memiliki mikrokontroler ATMEGA128 lawas, ratusan dioda MELF, dan 2 DIP switch
- Satu DIP switch mengatur alamat, yang lain mengatur baud rate
- Detail tentang papan AlfaZeta bisa dilihat di manual
- Papan dan komponen flip-disc sulit didapat, dan pasar saat ini lebih cocok untuk permintaan perusahaan seperti industri transportasi daripada konsumen umum
- Jika dibuat ulang, ada baiknya bereksperimen dengan desain papan sendiri
- Jika memiliki akses ke firmware, penalaan performa akan lebih mudah
- Biaya panel meningkat cepat sehingga sulit diperluas ke ukuran yang lebih besar
- Pemasok dan produk yang layak dirujuk
Daya, rangka, dan kabel
- Display memerlukan 24V 1A per papan, dan untuk membalik semua dot di seluruh 9 papan diperlukan total 9A
- Konfigurasi aktual menggunakan MEAN WELL HLG-240H-24 24V 10A
- Rangkanya dibuat dari 80/20 aluminum extrusions dan standoff PCB dipasang langsung ke rangka
- Papan dan disk sangat rapuh sehingga mudah kehilangan atau memecahkan disk saat perakitan
- Disk sangat rapuh hingga diibaratkan seperti sayap kupu-kupu, jadi papan harus dipegang dari tepinya dan dipasang satu per satu dengan hati-hati
- Foto hasil akhirnya ada di photos of the final build
- Komponen 80/20 yang digunakan
- (7) 1010 - dipotong menjadi 25.2 inci
- (2) 1010 - dipotong menjadi 49.65 inci
- (12) 33460 Corner Connector
- (72) M3x16MM screws
- (72) M3x10MM spacer
- Pengkabelan menghubungkan setiap kolom secara serial lalu seluruhnya dirangkai berantai
- Jalur data memakai +/- dari terminal blok RS485
- Jalur daya memakai 18AWG, data memakai kabel shielded 22AWG
- Jika ingin frame rate tinggi, satu jalur RS485 harus menghubungkan maksimal 6 panel
- Seluruh display menggunakan 3 perangkat USB RS485
- Jika konten disajikan dari server eksternal, server RS485 ke ethernet juga bisa menjadi opsi
Unit pemrosesan dan input/output
- Karena memakai machine learning untuk memproses suara, video, dan gambar, dibutuhkan daya komputasi lebih besar daripada komputer papan tunggal dasar atau mikrokontroler
- Konfigurasi aktual memakai Nvidia Orin Nano
- Raspberry Pi juga bisa digunakan, tetapi frame rate mungkin lebih rendah
- Kameranya memakai IMX708 camera
- Untuk input/output audio dipakai Waveshare audio board
- Dibuat Dockerfile untuk deployment ke Jetson 6.0, dan MediaPipe harus dikompilasi dari source untuk mengaktifkan GPU
- Jalur yang lebih mudah adalah merekomendasikan M2 Mac Mini, dan jika interaksi dihilangkan maka pendekatan yang lebih murah seperti Raspberry Pi juga memungkinkan
Komunikasi papan dan driver Node.js
- Komunikasi papan memakai RS485 dan format frame-nya adalah
0x80 0x83 0x01 imageData 0x8F- Setiap frame dimulai dengan byte awal
0x80 - Lalu diikuti flush
0x83atau buffer0x84, alamat papan, data gambar, dan byte akhir0x8F - Data gambar hanya memakai dua status,
0dan1 - Kompresi untuk frame transmisi memakai RLE
- Setiap frame dimulai dengan byte awal
- Dibuat library dasar Node.js flipdisc, yang saat ini berjalan pada papan AlfaZeta dan Hanover lewat USB dan ethernet
- Data
ctx.getImageData(0, 0, width, height)dari instance canvas bisa dikirim langsung, dan data piksel dikonversi menjadi1atau0berdasarkan luminance - Instalasi dan dokumentasi
- Driver Documentation
npm install flipdisc
Rendering, interaksi, dan struktur server
- Tujuannya bukan menampilkan aset yang sudah dirender sebelumnya pada perangkat berdaya rendah, melainkan membuat visualisasi real-time yang langsung menerima umpan balik pengguna
- Rendering memanfaatkan teknologi web yang sudah ada
- Untuk interaksi digunakan library dan model Google MediaPipe libraries
- Demo pengenalan gesture bisa dilihat di Gesture Recognizing
- Karena banyak library ML memakai Python, Node mengeksekusi skrip Python lalu menerima kembali data lewat IPC ZeroMQ
- Ke depan, Python WASM juga bisa dipakai
- Visualisasi direpresentasikan masing-masing sebagai scene dan bisa ditambahkan ke antrean
- Pemutaran scene dan pengelolaan antrean diakses lewat REST API
- Data pemutaran real-time dikirim lewat websocket
- Dengan useLoop function, event bisa di-subscribe atau dimasukkan ke antrean rendering
- Setiap file scene harus mengembalikan scene dan schema, dan secara opsional bisa memiliki background task
- Background task dijalankan pada interval tertentu dan, jika berhasil, menambahkan scene ke antrean pemutaran
- Paket server dan contoh
- Server Documentation
- Scene Examples
npm install flipdisc-server
- Fitur yang ditangani
flipdisc-server- Mengimpor scene dari direktori
- Live reload file scene
- Background task yang menambahkan scene ke antrean
- Komponen UI untuk teks, gambar, dan daftar
- Flex layout berbasis Yoga
- Getter dan setup dasar untuk pixi/three/matter, serta penyambungan modul tambahan
- Server REST dan websocket untuk data real-time
- Loop rendering dan penggunaan shader GLSL
Aplikasi kontrol
- Untuk menghindari masalah lupa perintah apa yang harus dijalankan seiring waktu sehingga proyek sulit dipakai kembali, dibuat antarmuka yang stabil secara terpisah
- Dipilih aplikasi expo untuk prototyping cepat
- Dari aplikasi, display bisa dikontrol untuk pause, start, skip, dan previous
- Variabel scene bisa diatur untuk mempersonalisasi pengalaman
- Pengguna juga bisa menggambar bebas langsung di layar
- Aplikasi Flipdisc tersedia di App Store
- Fitur aplikasi
- Pause/play scene
- Menambah atau menghapus dari antrean
- Pindah ke berikutnya/sebelumnya dalam antrean
- Melihat secara real-time tampilan yang sedang ditunjukkan display
- Menggambar bebas di layar
- Mengirim configuration variable ke tiap scene
Desain pada resolusi rendah
- Pada display flip-disc berukuran 42x84, perlu ditentukan seberapa sederhana informasi disampaikan dalam piksel yang terbatas; ini lebih dekat ke desain berbasis batasan
- Untuk font baca utama digunakan 3x5 pixel font
- Ada juga varian 4x5 dan mono
- 3x3 fonts dan 3x4 nano fonts lebih kecil, tetapi dinilai terlalu sulit dibaca untuk penggunaan nyata
- Di atas 12 piksel, sebagian besar font umumnya sudah cukup bisa dibaca
- Karena anti-aliasing tidak dirender, bitmap font sangat cocok untuk display seperti ini
- Arsip Bitmap designed fonts juga menarik untuk diintegrasikan
- Gambar diproses dengan campuran Floyd-Steinberg dithering dan Bayer 4x4 ordered dithering
- Floyd-Steinberg lebih disukai karena memberi distribusi piksel yang lebih alami pada gambar
- Bayer lebih cocok untuk elemen UI karena menghasilkan pola yang konsisten
- Untuk referensi terkait, direkomendasikan Ditherpunk — The article I wish I had about monochrome image dithering
- Untuk scene kantor, dibuat New York Times RSS reader, Spotify client, weather app, serta kumpulan scene lainnya
Langkah berikutnya dan proyek referensi
- Target berikutnya adalah membuat antarmuka agen yang transparan untuk AI dengan memanfaatkan input/output multimodal baru
- Fitur ini rencananya akan dikerjakan setelah menunggu peluncuran model generasi berikutnya
- Ada harapan agar flip-disc menjadi lebih mudah diakses para pembuat hobi, dan diminta untuk menghubungi jika tertarik berkolaborasi pada perangkat keras flip-disc murah
- Proyek dan materi yang memberi inspirasi
1 komentar
Pendapat di Hacker News
Untuk disebut “usia pakai hampir tak terbatas”, mungkin tidak setakterbatas yang diharapkan. Disk yang lepas atau macet cukup sering terjadi, tetapi saat berfungsi dengan benar tampilannya benar-benar keren, dan suaranya terutama bagus
Dulu saya pernah berada di kantor yang punya display flip-dot, dan belakangan display itu dibongkar. Saya punya foto seperti apa disk yang macet: https://photos.app.goo.gl/onpHefUVL8oeP4si7
Fakta menarik: Texas Instruments DLP (Digital Light Processing) mirip seperti versi miniatur dari display flip-disc
Bedanya, flip-disc berputar 180°, sedangkan piksel DLP hanya dimiringkan sedikit untuk mengarahkan cahaya ke heatsink; flip-disc memiliki warna berbeda di kedua sisinya, sedangkan DLP adalah piksel cermin. Flip-disc kemungkinan besar punya umur pakai terbatas, sementara DLP mampu bertahan hingga triliunan siklus, dan DLP bereaksi sangat cepat dalam hitungan mikrodetik sehingga grayscale diwujudkan lewat modulasi duty cycle (PWM)
Breakfast Studio membuat karya seni keren dengan modul flip-disc
https://breakfaststudio.com/flip-discs
Saya penasaran bagaimana persisnya penulis mendapatkan panelnya. Dulu saya pernah mencari hal seperti ini, dan selain tempat seperti eBay, praktis mustahil mendapatkannya
Kecuali kalau bersedia membeli dalam jumlah industri dengan harga industri. Saya ingin tahu membelinya di mana dan berapa harganya
Di tulisan itu saya juga menulis bahwa saya berharap panel seperti ini menjadi lebih murah bagi pengembang hobi. Kalau ada yang ingin berkolaborasi ke arah ini, silakan hubungi saya
Dibuat dan dikirim dari Polandia, tidak ada daftar harga publik, tetapi satu panel 7x28 kira-kira sekitar 220 euro. Mahal, tetapi memang belum banyak tempat yang masih memproduksi hal seperti ini. Kalau membaca lebih lanjut, ada juga tautan ke produsen lain yang tampaknya lebih murah, termasuk dari AliExpress
Benar-benar keren. Senang melihat JavaScript digunakan untuk hal seperti ini
Saya terkejut saat tahu bahwa James Webb Telescope memakai runtime JavaScript kustom untuk cukup banyak fungsi onboard-nya
https://news.ycombinator.com/item?id=19739454
Meski begitu, saya masih belum terlalu paham mengapa mereka memilih JavaScript. Menurut makalahnya, itu adalah mesin JavaScript komersial: https://ui.adsabs.harvard.edu/abs/2006SPIE.6274E..0AB/abstra...
Ini sepertinya bisa berguna sebagai monitor NOC. Sebagian besar tampilannya statis, tetapi saat ada yang bermasalah layar diperbarui, dan suaranya secara alami menarik perhatian. Tidak perlu “alarm” terpisah
Di mana animasi Touhou Bad Apple yang sudah semestinya ada di display hitam-putih ini?
Video asli untuk yang belum tahu: https://www.youtube.com/watch?v=FtutLA63Cp8
Versi favorit saya adalah video ini yang menggunakan objek sungguhan: https://www.youtube.com/watch?v=lT-fdnIK0k0 (diskusi HN: https://news.ycombinator.com/item?id=39527559)
Bagus. Saya juga suka flip-dot. Saya memulainya dari controller JavaScript untuk display bus Hanover (https://engineer.john-whittington.co.uk/2017/11/adventures-f...), lalu berlanjut hingga modul Alfa-Zeta setelah mendapat pesanan membuat controller 256x56, yaitu skala 24 panel
Saat itu saya memakai modul Python (https://github.com/tuna-f1sh/flipdot), admin berbasis Python Flask/React, dan informasi urutan dari DB SQLite. Hasilnya mirip dengan aplikasi ini, termasuk efek transisi yang sudah dimuat sebelumnya dan tentu saja Game of Life: https://engineer.john-whittington.co.uk/2020/04/game-of-life...
Membuat controller HDMI langsung berbasis FPGA untuk modul Alfa-Zeta ada di daftar TODO proyek saya. Kecepatan refresh firmware bawaannya agak mengecewakan
Bagian awal video demo mengingatkan pada Ye Olde Wooden Mirror
https://www.smoothware.com/danny/woodenmirror.html
Atau juga teringat yang lebih baru ini: https://tisch.nyu.edu/itp/news/spring-2024/daniel-rozin--itp...
Daripada “display flip-disc adalah teknologi yang agak asing”, sepertinya lebih tepat menyebutnya teknologi niche. Niche-nya adalah keterbacaan di bawah sinar matahari
Beberapa tahun lalu display flip-disc sangat umum di bus, kereta, dan sebagainya. Lalu LED membaik, sehingga niche itu menghilang