- Kilopixel ist ein großes Display mit 1000 Holz-Pixeln, das über sechs Jahre entwickelt wurde und es jedem erlaubt, über das Internet zu zeichnen.
- Das Projekt wurde durch verschiedene Prototypen in physischer Form, Materialtests und den Wechsel der Pixel-Formen zur Reife gebracht.
- Durch den Einsatz von CNC-Maschine und Raspberry Pi, einer Web-App und Sensoren entsteht eine einzigartige Struktur, die Online- und Offline-Welt verbindet.
- Nutzer können entweder Bilder direkt über die Website einreichen oder durch Abstimmung mitmachen; außerdem gibt es eine Umgebung für Live-Streaming und Time-Lapse-Aufnahmen.
- Künftig werden mögliche Übergaben der Display-Kontrolle an andere Personen oder unterschiedliche Nutzungsszenarien untersucht, was es zu einem kreativen und offenen Projekt macht.
Projektübersicht
- Kilopixel ist das weltweit ineffizienteste 1000-Pixel-Holzdisplay, das über sechs Jahre entwickelt wurde.
- Es ist als interaktives System konzipiert, bei dem jeder über die Website (kilopx.com) auf die Anzeige malen kann.
- Das Projekt ist das Ergebnis der Integration von Web-App, physischem Controller, CNC-Bearbeitung, G-Code-Generierung sowie 3D-Modellierung und -Druck und vereint verschiedene IT- und Maker-Elemente.
Anfangsidee und Motivation
- Die Inspirationsquelle waren die untypischen Spiegelwerke von Danny Rozin und ein eInk-basierter, ultraschneller Movie-Player.
- Anders als moderne hochauflösende Displays wurde ein extrem langsames und ineffizientes Verfahren gewählt, bei dem die Pixel nur zehn Mal pro Minute wechseln.
- Mit einem 40×25-Raster werden exakt 1.000 Pixel dargestellt; der Name leitet sich von der leicht zu merkenden Domain kilopx.com ab.
Erster Prototyp (21×3 Pixel)
- Zunächst wurde ein Holz-Gantry verwendet, danach schnell auf Aluminiumteile des Openbuilds-Kits (ähnlich der Struktur eines 3D-Druckers) umgestellt.
- Ein Grundaufbau aus Raspberry Pi, CNC-Controller, Schrittmotoren und ähnlichen Komponenten wurde montiert und für Testläufe in Betrieb genommen.
- Dabei wurden verschiedene Grenzen und technische Probleme im Pixel-Auswahl- und Steuerungsmechanismus erkannt.
Schwierigkeit bei der Suche nach geeigneten Pixeln
- Verschiedene Kugelmaterialien wurden getestet, darunter Tischtennisbälle, Styropor und Holzkugeln.
- Dabei traten praktische Probleme wie Kosten, Gewicht, Beschaffbarkeit der Materialien und Größenabweichungen auf.
- Beispiel: 1000 Tischtennisbälle zu je 50 Cent kosten insgesamt 500 US-Dollar.
- Tischtennisbälle verformen sich leicht beim Bohren und fielen wegen Größenabweichungen durch.
- Nerf-Bälle, Bouncy-Balls, Holzbälle, Styropor usw. wurden aufgrund von Problemen beim Bohren, Lackieren, der Haltbarkeit und dem Gewicht ebenfalls verworfen.
Experimente mit dem Pixel-Drehmechanismus
- Die Pixelrotation wurde mit Lego-Rädern und -Motoren in Kombination mit Sensoren versucht.
- Solenoid- und Servomotoren und weitere Bewegungsprinzipien wurden getestet; alle wurden wegen der schwierigen präzisen Steuerung verworfen.
Wechsel von kugelförmigen zu würfelförmigen Pixeln
- Nach einem Podcast-Gespräch erfolgte der komplette Wechsel zu kubischen Holz-Pixeln, und die Eigenfertigung wurde gestartet.
- Die Serienproduktion ist zeitaufwendig, liefert aber eine zufriedenstellende visuelle und dynamische Qualität.
Herstellung des Pixel-Rasters
- Statt des Pixels selbst wurde eine feste Rasterstruktur entworfen, um die Genauigkeit des 40×25-Arrangements zu gewährleisten.
- Es wurden 25 dünne Leisten mit je 40 Bohrlöchern gefräst, um die Pixel auf Metalldrähten aufzufädeln und einen gleichmäßigen Abstand zu halten.
- Jedes Pixel wurde so ausgelegt, dass es unabhängig vom Umfeld vollständig autonom arbeitet.
CNC und Systemsteuerung
- Enthalten sind Erklärungen zu den Grundprinzipien von CNC und zur Nutzung von G-Code.
- Raspberry Pi und CNC-Controller, Python-Skripte, Lichtsensoren sowie die
pigpio-Bibliothek kommen zum Einsatz. - Über das Web-API wird das nächste zu ändernde Pixel ausgewählt, per G-Code gesteuert, das Ergebnis per Sensor geprüft und anschließend über die API zurückgespielt.
Pixel-Manipulationsmechanismus (Pixel-Pushing)
- Die Pixel haben alle 90°-Schritte mit einer passgenauen Nut; ein flexibler Stab (Gluestick) drückt die Kante und dreht sie.
- All diese Bewegungen sind über G-Code automatisiert.
Bildausgabemodi und Web-Interface
- Die API wird über die Web-App gesteuert, und es gibt drei Display-Modi:
- Nutzerbeiträge: Jeder kann ein 40×25-Bild einreichen und abstimmen; die beliebtesten Bilder werden nacheinander ausgegeben.
- Echtzeit-Kollaboration: Teilnehmende ändern die Pixel in Echtzeit (bei zu vielen Teilnehmenden ist das ungeeignet).
- Idle-Modus: Uhren, Formen usw. werden per algorithmischer Transformation ausgegeben.
- Der Web-App-Stack entwickelte sich über Node/Socket.IO, Laravel+Livewire bis hin zu Laravel+InertiaJS+VueJS.
Live-Streaming und Time-Lapse
- Mit zwei Webcams (Nahaufnahme, Weitwinkel) wird das Display mit OBS und ffmpeg als Live-Stream auf YouTube übertragen.
- Nach der API-Statusprüfung werden zudem Time-Lapse-Videos vollständiger Ergebnisse erzeugt und veröffentlicht.
Sicherheit und Betrieb eines offenen Systems
- Für den Missbrauchsschutz wurde eine minimale Prüfung implementiert und eine Funktion zum schnellen Löschen von Werken bei Bedarf aufgebaut.
- Grundsätzlich bleibt die Teilnahmestruktur sehr offen, inklusive Bluesky-OAuth-Anmeldung.
Zukünftige Pläne
- Man hofft auf vielfältige Beteiligung der Nutzer und denkt darüber nach, die API-Steuerung künftig an andere Nutzer zu übertragen.
- Langfristig ist geplant, das Display als Webcam-Hintergrund zu nutzen oder in Büros, Cafés und weiteren Orten einzusetzen.
- Jeder kann die Inhalte auf der Website in Echtzeit erleben und mitbestimmen.
Fazit
- Kilopixel ist ein originelles Projekt, das die Interaktivität des Internets mit der Materialität der physischen Welt vereint.
- Der Entwicklungsprozess mit vielen Iterationen und technischem Aufwand ist ein spannendes Beispiel, das Makern und Entwicklern gleichermaßen als Inspiration dienen kann.
1 Kommentare
Hacker News Kommentar
Tolles Projekt; ich habe selbst schon einmal ein 30-Pixel-Display gebaut. Siehe auch das PixelWeaver-Projekt. Es war eine mechanische Lösung mit Lochkarten und Kurbel, bei der alle Pixel gleichzeitig geändert wurden, und der Ablauf des Mechanismus kam mir sehr vertraut vor.
Mumbo Jumbo hat in Hermitcraft schon einmal mit einem Trapdoor eine ähnliche Idee umgesetzt. Aktuell entsteht gerade eine Art „Buildstone“-Revolution, in der mit Redstone ästhetische Elemente gebaut werden. Siehe außerdem das Mumbot-2.0-Video. Grian hat mit Dispensern, Eye-Particles und Potion Arrows sogar einen animierten Wasserfall gebaut. Video von Grians Waterfall
Ein wirklich großartiges Projekt – ich habe bis zu der Stelle geschaut, an der die Katze „hi“ sagt. Es wirkt, als gäbe es seit 9 Tagen keinen neuen Beitrag auf Bluesky von @kilopx.com. Ich würde folgende Verbesserungen vorschlagen: den „Pen" nach dem Absenden so weit wie möglich zu verschieben, damit sich das fertige Werk sauber fotografieren lässt, und auf der Seite den aktuell eingereichten Beitrag anzuzeigen. Und fertige Werke sollten separat in einer „History“-Galerie erscheinen. Im Moment gibt es einen Permalink wie „Der Timelapse ist nach dem Zeichnen verfügbar“ nur für eingereichte, aber noch wartende Beiträge; es scheint keine einfache Möglichkeit zu geben, fertiggestellte oder laufende Resultate zu finden.
Eine Bildwiederholrate von 370 Mikrohertz verleiht dem Konzept von „Calm Technology“ eine völlig neue Bedeutung – finde ich klasse. Beschreibung von Calm Technology auf Wikipedia
Meiner Erfahrung nach ist dieses Display wohl die teuerste Lösung pro Pixel, aber ein so reizvolles Display habe ich noch nie gesehen – im besten Fall einfach unglaublich.
Eine weitere Idee wäre, die Ausrichtung so zu wählen, dass bei Frontansicht nicht die Fläche, sondern die Kante direkt nach vorne zeigt. Wenn jeder Würfel zwei angrenzende dunkle und zwei helle Seiten hat, könnten zwei Bilder gleichzeitig gesetzt werden: eines aus 45° links und eines aus 45° rechts (insgesamt 4 Zustände pro Pixel).
Das Projekt ist beeindruckend, aber es bringt mich ständig auf Ideen, wie man es schneller machen könnte (auch wenn Geschwindigkeit nicht der Hauptpunkt ist ...). Wenn der Mechanismus, der die Blöcke dreht, so funktioniert, dass er die x-Achsen-Ausrichtung nicht ständig neu justieren muss, scheint eine ganze Spalte schneller verarbeitet werden zu können; oder, falls keine y-Achsen-Ausrichtung nötig ist, könnte es auch zeilenweise laufen. Ein System, bei dem das Drehmodul der Blöcke selbst nicht immer zurückgesetzt werden muss (z. B. als rotierendes System), wäre vermutlich noch schneller. Ich könnte mir vorstellen, dass ein Spezialist für industrielle Automatisierung das sehr schnell umsetzen könnte. Übrigens ist es wirklich beeindruckend, dass sie anfangs auf einen analogen e-Ink-Ansatz mit Kugeln gesetzt haben.
Wenn wir von einer „Dot-Matrix-Alternative nur mit Stromverbrauch bei Bild-Updates" sprechen, habe ich so etwas bisher nicht gesehen: Auf der einen Seite der Box könnte ein Thermodrucker sitzen, auf der Gegenseite eine Rolle mit Zugfeder vergraben, sodass Thermopapier hinter UV-Blockierscheibe abrollt und als Display erscheint; ein neuer Bildausdruck könnte als „Refresh“ fungieren.
Ich finde es wirklich großartig und habe den Artikel mit großem Spaß gelesen. Dieses Projekt erinnerte mich an ein Szenario aus einem Steampunk-Roman. Ich habe mir die Details per Google angesehen, und in Gibsons und Sterlings Difference Engine gab es den Kinotrope. Jemand hat dort anscheinend einen Servo an jedes Pixel gesetzt – das muss unglaublich teuer gewesen sein. Passender Blogpost
Ich denke immer wieder über „schnellere“ Varianten nach. Zum Beispiel kann man sich ein System pro Scanline vorstellen, bei dem Holzperlen durch Röhren oder Kanäle geschossen werden, um die passende Farbbecher zu liefern; mit Gravitation oder einem Pneumatiksystem lässt sich eine Zeile zurücksetzen bzw. neu aufladen. Und man könnte sich vorstellen, das auf Stadiongröße zu skalieren und sogar mit Bowlingball-Pixeln umzusetzen. Die Herausforderung wäre die richtige Verteilung, damit jede Farbe über den Rückführungskanal wieder ordentlich verteilt wird, sowie ein Mechanismus zur Dämpfung, um Stoß, Geräusch und Verschleiß zu reduzieren. Der Gegenpol wäre ein Active-Matrix-Ansatz, bei dem jeder Block am Platz mit Solenoid/Servo rotiert und mehrere Farben darstellt.