 Ja, hallo, herzlich willkommen. Mein Name ist Marco Sanah. Ich bin Christian Käser. Wir wollen euch heute meine Diplomarbeit vorstellen. Das ist eine interaktive Zeitmaschine, in der man interaktiv sich bewegen kann, Sound und Videos erleben kann zu verschiedenen Epochen. Die ist im Rahmen meiner Diplomarbeit entstanden. Dafür habe ich sehr viel Sponsoring an Land getrieben. Da gehe ich auch noch gleich näher drauf ein. Diese Zeitmaschine findet in einer Litfastäule statt und ist versteckt im öffentlichen Raum in Zukunft. Das wird ein realer Auftrag werden in einer echten Litfastäule. Für meine Diplomarbeit habe ich einen Schreiner gewonnen, einem Team zusammengestellt, vor allem auch unter der Führung mit Christian zusammen. Er wird gleich noch mehr dazu sagen. Bei meiner Diplomarbeit ging es darum, dass ich das Gefühl hatte, man könnte im öffentlichen Raum eine Zeitmaschine verstecken, weil die Litfastäule ein ideales Objekt ist, in der man nichts vermuten könnte. In der Litfastäule selber kann man sich interaktiv drehen und bewegen im Urzeigersinn und gegen Urzeigersinn in die Zukunft und Vergangenheit. Die Themen der Litfastäulen-Zeitmaschine fangen ganz normal klassisch nach dem holistischen Prinzip an. Es ist mal eine der ersten Skizzen gewesen. Da macht Christian gleich weiter, aber im Endeffekt ging es mir darum, zu sehen, wie Menschen auch ein Zeitgefühl verlieren können, was jetzt auch schon die letzten Tage stattgefunden hat. Gab es schon welche, die drin waren? Noch nicht. Könnt ihr nachher gleich erleben. Ja, du warst halb drin. Gut. Ihr erlebt Kompositionen, die ich zu verschiedenen Etappen, die zum Thema Mensch und Maschine Rise of the Machines nach der Motto wie der Mensch und die Maschine immer Bezüge zueinander haben, sich weiterentwickelt haben und ob es der Mensch in Zukunft schaffen wird, Zeit zu reißen. Man sieht also in der Zeitmaschine Videomaterial, das frisch von mir komponiert wurde und Sounds, die geschnitten wurden, die auf die Themen eingehen und mehr, sagt der Christian jetzt. Genau. Nachdem Marco jetzt mal so eine Einführung gegeben hat, worum es allgemein geht, geht es hier in dem Vortrag hauptsächlich um die Technik hinter dem Ganzen, was wir gebaut haben, wie wir es gebaut haben, was es für Probleme gab dabei, wie wir sie gelöst haben. Und ja, die Folie hier, das ist aus Markus Giznbuch abgescannt, zeigt so die Säule mal im Ganzen angedeutet, mein Körser hier, LEDs in den Wänden, Displays rundum, in der Mitte den Drehteller, wo man sich selber drehen kann, zeige ich gleich auch noch mal im Detail Sound, unten ein bisschen Technik drin. Genau. Ich erkläre so im Detail, was die Sachen tun, wenn wir dann dran ankommen. Also der grobe Aufbau ist, ich habe einen kleinen Server, auf dem läuft Ubuntu Linux, da hängen vier Arduino dran, zwei davon steuern die LEDs in den Wänden, einer übernimmt den gesamten Input und einer hat nicht viel zu tun, der überwacht nur, ob die Tür offen oder zu ist. Und ja, und zusätzlich, mit den Displays kommuniziert das Server über WLAN. So, mal von außen nach innen. So sieht die Säule fertig aus, so steht sie da. Hier links einfach mal ein Blick nach innen, in den Rohbau. Die Säule ist offensichtlich keine echte Litfastsäule, das kommt beim nächsten Auftrag, wir haben einen Schreiner gefunden. Marco in seiner charmanten Art, hat eine Zeitungsannounce geschaltet, suche Schreiner für Kunstprojekt und wie das bei sowas ist, keine Bezahlung. Natürlich findet sich nach zwei Tagen ein Schreiner. Genau, der hat uns die Säule gebaut, das sind Holzelemente, man sieht es hier oben noch, dass eins noch offen ist. Die sind zusammengeschraubt, inzwischen verkleistert, in der schwarz geschrittenen Holzpannele, ich weiß nicht, man sieht es auf dem Beamer wahrscheinlich nicht so gut, hier sitzen die LEDs drin und die Displays. Genau, und mal so ein kleiner Blick unten in die Technik. Der schwarze Blob hier unten unter den Kabeln ist unser Server, Audiovorstärker und eine Haufen Elektronik. Genau, Server, ich habe es schon gesagt, ist einfach alter Kompakt-PC, den ich noch irgendwo rumliegen hatte. Kollegen haben so die Angewohnheit, alte Technik bei mir abzuladen zum Leitwesen meiner Freundin. Die meinte dann jetzt, find mal was du damit machen kannst und dann kam Marco daher und meinte, ich brauche eine Zeitmaschine, ging ganz gut. Ich habe einfach ein alter Via Desktop-PC, bisschen exotisch, es ist eine CPU, auch von Via, nicht Intel oder AMD, ist aber ganz normale x86, 32-bit. 1,2 GHz habe ich nicht im Kopf, habe da noch aus dem Funus 2 GB RAM und eine alte Laptop-Festplatte reingestopft, läuft. Läuft Ubuntu 1404 Server-Edischen drauf und hängt außen dran noch eine externe Soundkarte, weil wir es nicht geschafft haben, den Onboard-Sound unter Ubuntu zum Laufen zu kriegen. Da gibt es zwar Treiber, aber aus irgendeinem Grund funktioniert das nicht. Einfachster Schritt der Technik, Türsensor, der erkennt einfach nur, wenn jemand reingeht und die Tür zu macht, fängt das ganze Programm an. Ansonsten ist die Säule komplett inaktiv, alle Lichter aus, alle Displays aus, Sound aus. Da haben wir einfach nur in den Türrahmen längst und rechts jeweils einen analogen Infrarot Entfernungssensor reingebaut. Der hängt, oder die beiden Sensoren hängen dann zusammen an einem Arduino-Uno, an den Analog-Eingängen. Der guckt einfach nur, sind die Werte unter einem gewissen Schwellenwert, dann meldet er an Rechnertüren zu Protokoll. Wie der Rechner mit dem ganzen spricht, ist super simpel. Der schickt ein beliebiges Byte, das wird gar nicht ausgewertet. Dann kommt vom Arduino ein Byte zurück und die letzten beiden Bits geben einfach die beiden Sensoren an, ob offene oder zu. Dann, ich würde mal sagen, das Aufwendigste in dem ganzen Projekt, es werde Licht, knapp 1000 LEDs in dem Raster angeordnet, genau hier 992 LEDs, rote und weiße, in 12 Wandsegmenten und den vier Türsegmenten. Also jede Tür besteht aus zwei Segmenten, einen breiten, einem schmalen. Anforderung war, dass wir jede LED einzeln ansteuern können. Was offensichtlich nicht geht, ist zu 992 LEDs, 992 Leitungen, dann irgendwann Mikrocontroller zu legen. So viel Pins haben wir nicht zur Verfügung. Genau, da sieht man noch mal ein bisschen von hinten, wie die in die Bretter geklebt sind und verkabelt. Da habe ich, glaube ich, nachher noch mal ein anderes Bild, wo man es noch ein bisschen besser sieht. Genau, die Standardlösung ist ganz einfach. Wir ordnen, wie bei diesen Spielzeug-LED-Cubes, die man ab und zu mal sieht, das Ganze einfach in einem Raster an. Dann haben wir nur noch Wurzelanzahl LEDs mal zwei an Pins, was wir brauchen, indem wir einfach sagen, okay, die Zeilen sind dann eben immer an Versorgungsspannung, die spalten an Ground oder umgekehrt, je nachdem, wie man die LEDs einbaut. Genau, bei uns, wir haben ein bisschen gerundet, wir haben gesagt, wir machen eine 16 auf 32 Matrix. Das gibt 512 LEDs, die wir anschließen können. Und wenn ein paar Plätze unbesetzt sind, macht nichts. Genau, und das Konzept funktioniert eben so. Entweder ich lege in die Spalten, einfach entweder High oder Low, welche LEDs ich anhaben will. Und in den Zeilen ist dann eben nur eine Zeile low und die anderen sind High. Und entsprechend fließt dann durch eine Zeile der Strom und die Zeilen wechseln dann einfach durch und das geht so schnell, die LEDs leuchten nach, dass man das überhaupt nicht sieht, also das ist auch kein Flackern oder so. Das Ganze mit 48 Leitungen, so im Nachhinein betrachtet, hätte man einfach einen Aluino Mega anschließen können. Der hat genug Pins, aber warum einfach, wenn es auch kompliziert geht? Da muss Spezial-Hardware her. Da sieht man mal einen ersten Versuch, der auch ein Breadboard gebastelt hat. Ich zeig's gleich nochmal in Detail. Das sind ein paar Schieberregister drauf, eine Verstärkerstufe und hier in dem Fall jetzt ganz, ganz viele Jumperkabel und das Ganze ist gespeist von einem Arduino pro Farbe jeweils. Genau, um jetzt nicht diese 48 Pins zu brauchen, haben wir Schieberregister im Einsatz, pro LED Treiberplatine 6 Stück. Die sind so gebaut. Ich kann sehr real 8 Bit reinschieben und wenn ich dann ein bestimmtes Signal auf Load ziehe, dann werden diese 8 Bit, die ich zuletzt reingeschoben habe, auf den Ausgang gelegt. Ich kann die problemlos in Reihe schalten. Die haben einen Ausgangspin, den ich einfach wieder an den Eingangspin vom nächsten Schieberregister hänge und dann kann ich eben, wenn ich 4 Stück einander hänge, 32 Bit reinschieben. Das ist bei uns dann genau eine Zeile. Und für die Auswahl, welche Zeile aktiv ist, haben wir 2 Schieberregister, die dann eben so sind, dass ich einfach nur alle 16 Takte mal 1 reinschick und ansonsten nullen. Könnte man auch mit Multiplexer machen, bräuchte man ein paar mehr Leitungen. Genau. So, ein kleines Problem gibt es bei der Sache noch. Die Schieberregister können dann ja vertragen ihren Ausgängen nur etwa 35 mA. Eine LED hat schon, also zieht schon 20 mA. Das heißt, bei 32 LEDs pro Zeile, wenn alle gleichzeitig ansinnen, sind wir mit 640 mA deutlich über dem, was man dem Ausgang zumuten sollte. Ich habe es nicht ausprobiert, was er dann tut. Wahrscheinlich wird er durchbrennen. Entsprechend einfach eine kleine Verstärkerstufe hinten dran. Da würde ein einzelner Transistor reichen, weil wir keinen Bock hatten, 16 Transistoren pro Platine zu löten. Gibt es die Dinger auch einfach als fertige Chips. Das sind hier, da sind jeweils 8 kleine Verstärkerstufen drin. Netter Nebeneffekt, dieser Chip invertiert. Ich will ja meinen Ausgang für die aktive Zeile sowieso auf Low haben. Und es ist einfach so fürs Denken angenehmer, wenn ich die Zeile, die ich habe, eigentlich auf High ziehe, aber an sich ist egal. Genau. Nachdem ich dann das Ganze auf dem Breadboard gebaut hatte, dachte ich, klar, ich kann nicht zwei so riesen Breadboards da unten reinstellen. Dieses Leiterplattendesign hier entstanden. Da sieht man es nochmal hier, vier Schieberregister für meine Zeileninfo, zwei Schieberregister für die Zeilauswahl, die Darlington Arrays zum Verstärken. Hier nochmal haufenweise Vorwiderstände für die LEDs und unten eine ganze Reihe Pins. Was ich da ursprünglich noch vorgesehen hatte, ist einfach eine Molex-Buchse, wo man ein ganz normales PC-Netzteil anschließen kann. Also das ist der Anschluss, was man an alten Festplatten und Laufwerken hat. Das haben wir am Ende gar nicht gebraucht. Der Arduino, wenn er am USB-Port vom Rechner hängt, kann genug Leistung liefern, um die LEDs gleichzeitig zu treiben, das ist gar kein Problem. Und man sieht es hier, ich habe am Ende noch ganze sieben Pins, die auf ein Arduino rausgehen. Ich könnte also sogar beide LED-Treiber an ein Arduino hängen, aber einfach damit die Kommunikation mit dem Rechner einfacher wird und weil wir Arduinos in größeren Mengen da haben, hat jeder seinen eigenen bekommen. Genau, ich habe das Ganze erst auf Lochaster-Platine versucht zu löten. Bei diesen Leitungen, die ich hier oben laufe, plus die Querleitungen, die jetzt hier im Bild nicht sind, weil sie auf der Unterseite sind, habe ich irgendwann aufgegeben. Ich habe zwei von den Dingern bestellt. Oh Gott, meine Freundin, guckt schon. Ja, ich habe unseren Estimatisch irgendwie anderthalb Abende lang blockiert, um den Kram zu löten. Ja, ich habe es dann bestellt. Obwohl das eine relativ große Platine ist, geht das preislich noch, wenn man weiß, wo man gucken muss. Genau, die Kommunikation mit dem Rechner ist relativ einfach. Ich schieb da einfach nur ein Beitstrom rein. Alle 64 Beit sagte, okay, jetzt habe ich mein Frame voll und leg mir das inzwischen speicher und schieb das periodisch auf die Schieberregister raus, solange bis das nächste Mal 64 Beit voll sind. Genau, hier sieht man es noch ein bisschen wie unser Team. An diesen Brettern arbeitet. Die sind alle handgelötet, hatten weichengedauert. Zwei Monate. Ja, genau, zwei Monate, bis die alle gelötet waren und bis auch dann Fehler korrigiert waren. Wir hatten es vor allem bei den Türpanels, weil die ein bisschen anders aufgebaut sind, dass dann plötzlich die Anbindung gespiegelt war oder sonst was ist inzwischen aber alles raus. Genau, und hier sieht man es hinten nochmal und sieht, dass es noch nicht so gut gehört werden. Hier hinten gehen einfach quer Flachbandkabel für die Zeilen-Inforum. Also, wir haben Zeilen und Spalten für den Einbau vertauscht, weil es geschickter war. Und hier, was hier so runterhängt, noch nicht ganz angeschlossen, sind die Zeil-Selektor-Leitungen. Genau, man hat es gerade im Bild vorher schon gesehen und ich habe es auch schon angedeutet und Marco auch. Wir haben ein Dreh-Protest, mit dem man die Zeitmaschine steuert, das ganze orientiert sich an den Standard-Spielplatz-Carousels, wo man drauf sitzt. Es fühlt sich an, als würde man an der Platte drehen, aber in Wirklichkeit dreht man sich um eine Platte drum herum. Es ist eine feste Stange, die ist am Boden oder in unserem Fall eben am Rahmen von der Zeitmaschine, von der Leitfassäule montiert. Wir haben hier, wie man es in der Skizze sieht, einfach ein Hocker draufgestellt, statt einer Bank rundherum und das ganze läuft momentan einfach auf ein paar Möbelrollen, die wir kopfüber unten in die Solle montiert haben. So längerfristig sollte man da irgendwie ein Kugel-Lager einbauen. Wir haben festgestellt, das Ding geht inzwischen wahnsinnig schwer, weil nach unseren Tests haben sich die Rollen einfach so sehr abgenutzt und die Lager auf denen liegen, dass man richtig Kraft braucht zum Drehen. Genau, Schwierigkeit ist, wie messen wir eigentlich, wo sich diese Platte befindet und wie schnell sie sich gerade dreht. Es gibt so fertige Drehencoder zum auf eine Platine auflöten, die sind eigentlich für ein Drehknopf gedacht oder so. Die sind in sich offensichtlich zu klein. Man könnte da wahrscheinlich ein Rad drauf montieren, das dann quer unten reinhängen und die Platte dreht dann das Rad. Aber Mechanik ist doof. Keiner von uns hatte Lust, so was zu bauen und dann muss man auch mit Schlupfen noch rechnen. Wenn das Rad nicht genau aufsitzt, dann dreht sich es nicht und ach, alles doof. Michael, also in seinem Team, kam irgendwann an, hatte hier so einen schönen Chip. Das ist ein Axelarometer und ein Bluthof-Sender drauf. Meint ihr, klebt auch das einfach unten an das Podest. Es ist eigentlich eine coole Sache. Wir haben das ausprobiert. Es funktioniert prinzipiell ziemlich gut. Wir kriegen ziemlich akkurate Werte, haben aber zwei Probleme. Erstens, wir müssen dann ein Akku mit dran kleben und den regelmäßig aufladen, weil wir können keine Stromleitungen andrehen, das Podest hängen. Alternative sind Schleifkontakte, das ist genauso doof. Genau, wir hätten noch eine Stelle, wo Funk ist, zusätzlich zu dem W-Land, was ich vorhin schon erwähnt habe. Wenn wir da irgendwo Störungen haben, in der Säule liegen haufenweise schlecht geschirmte Kabel drin. Nee, und diese Chips sind auch noch teuer. Michael meinte irgendwie so 90 Euro für das Ding. Nee. Eine Variante, die man auch höflich einmal sieht, sind so optische Sensoren. Entweder mit so einer Lochplatte, okay, das sieht man auf dem Beamer fast nicht, eine Platte mit Löchern drin, wo man durch scheint und hinten dran hat man Lichtsensoren oder eben man macht den Sensor und die Leuchte auf die gleiche Seite und einfach ein schwarz-weißes Muster. Das hätte man bauen können, dann hätte halt jemand dieses schwarz-weißen Muster auf die Platte malen müssen, möglichst akkurat, auch doof. Unsere Lösung war dann irgendwie, machen wir das einfach mal ganz anders. Wir haben uns einfach Neodym-Magneten genommen. Ich habe jetzt hier geschrieben, wir haben einen genommen, stimmt nicht ganz, es ist ein Stapel von 3 oder 4. Wir haben ja einfach unten an die Platte montiert, wir hatten mit ein bisschen Heißkleber, haben unten Magnetfelsensoren in der Säule verteilt. Wenn sich der Magnet über den Sensor dreht, hat der Sensor einen Ausschlag. Fertig, wir wissen, wo unsere Platte ist. Jeder Sensor hängt einfach an einem Eingang am Arduino Mega, damit haben wir 16 Sensoren. Passte zufällig ganz gut, wie man es vorhin gesehen hat. Wir haben genau 16 Stege da unten drin. Wunderbar. Und der Arduino liefert einen Rechner einfach entweder den Index, von dem Sensor, der gerade den höchsten Ausschlag hat oder die Minus 1, wenn keiner der Sensoren meldet, dass der Magnet gerade drüber ist. Damit haben wir die Position schon. Geschwindigkeit berechnen wir einfach, indem wir uns die Timestamps merken, wann wir die letzten beiden Sensorausschläge hatten und berechnen daraus und aus dem Zeitunterschied zwischen jetzt und dem Letzten. Die Geschwindigkeit ist ziemlich einfach. Problem, damit wäre jetzt, wenn ich stehenbleibe, dann fällt eine Geschwindigkeit mit 1 durch X ab. Wir würden nie eine Null kriegen. Deshalb schneiden wir einfach unter einem bestimmten Wert einfach ab. Gesamtpreis ist hier irgendwie größtendordentlich ein paar Euro. Die Sensoren sind nicht teuer. Die sind super einfach anzuschließen. So, dann das Rad in der Mitte. Man sieht es hier im Bild schon so ein bisschen. Ein großer Taster in der Mitte, 12 kleine Taster außen rum. Mit den roten Tastern kann man dann in jeder Epoche Videos an- und ausschalten, die dann auf den Display erscheinen. Das ist der weißen Taster. Den hatten wir ursprünglich mal vorgesehen, um einfach zufällig in der Zeit hin- und herzuspringen. Als es dann aufgefallen ist, dass das Podest so schwer läuft, dann entschieden wir erinnern das und können jetzt einfach auf den weißen Knopf drücken, um eine Epoche weiterzuspringen. Unser Chef hat den Fehler gemacht, tatsächlich alles von Hand zu drehen. An der Stelle sind LEDs. An der Stelle haben wir nicht nochmal so eine LED Matrix gebaut. Das Gleiche hätte man auch für Input machen können. Das haben wir auch nicht gemacht, sondern wir haben jetzt einfach Ground Pins und Signal Pins direkt an Arduino Mega gehängt. Das einzige, was wir davor haben, ist einfach für jede LED in Transistor, weil das sind natürlich nicht einzelne LEDs, sondern LED-Gruppen und die wollen bei den 12 Volt, weil die eigentlich dafür gedacht sind, irgendwo ins Auto oder sonstwo eingebaut zu werden. Das Ganze ist einfach auf einem Stück Lochresterplatine, als Schild auf dem Arduino Mega obendrauf. Ist eine relativ einfache Sache. Schwierig war die Auswahl der Taster, weil Taster ist nicht gleich Taster. Das ist einfach ein Standard-60-Milimeter-Button, wie er in Arcade-Automaten ist. Der kostet zwar nicht gerade wenig, aber der ist leicht ausgewählt. Da sind LEDs drin, alles kein Problem. Schwierig waren die roten Taster. Das sind so 16-Milimeter-Taster im Metallgehäuse. Passt ganz schön zu dem Edelstahlrad. Aber die gibt es in 1.000 Ausführungen bei Zick-Anbietern. Die sind allesamt schlecht dokumentiert. Da erkennt man nicht, ist das ein Schalter, ist das ein Taster, sprich rastet der ein, wenn ich ihn drück oder kommt er direkt wieder zurück. Steuere ich das Ding mit 5 Volt, 12 Volt, 230 Volt an. Und die Preise schwanken extremer. Da kann so ein einzelner Taster schon mal 10 Euro kosten. Und wir brauchten 12 davon, plus ein bisschen Reserve. Dann haben wir bestellt, haben bekommen Taster, wow super, genau was wir wollten, 230 Volt. Doof, wir haben da 5 Volt rangelegt, leichtes Glimm, 12 Volt, das gleiche, leichte Glimm, so viel wie unser Labornetzteil hergegeben hat, 30 Volt, nicht merklich besser. Haben wir überlegt, können wir das machen? Nee, geht nicht, ist nicht. Dann haben wir noch mal bestellt. Zuerst haben wir bekommen Schalter, 12 Volt, so, genau. Die haben wir 12 Volt, super geläuchtet, aber Schalter, wir wollten nicht, dass die einrasten. Weil bei uns ist, einmal drücken, Video geht an, nochmal drücken, Video geht aus, da wäre Schalter super. Aber wir wollen, wenn man weiter springt in der Zeit, dass alle wieder resettet wären, das kann man mit dem Schalter der mechanische Einraste nicht machen. Genau, am Ende galt dann, wir haben Taster, die nicht hell genug leuchten und Schalter, die hell leuchten, aber einrasten. Und dann gilt im Zweifelsfall, Schalter plus Gewalt gleich Taster. Sprich, wir haben das Gehäuse aufgeknackt, jeweils bei jedem dieser 12 Schalter haben diese Einrastfunktionen raus montiert, haben die Dinger wieder zusammengebaut, ohne dass sie zu viel Schaden nehmen. Michael war da irgendwie, ich weiß nicht, 2 Tage mit beschäftigt, weil das Ding, das Zeug ist verpresst und verklebt, das Plastik, das ist nicht dazu gedacht, dass man es aufmacht. Aber es klappt, sieht jetzt echt super aus, leuchtet hell, funktioniert rass und nicht ein, alles, wie wir es haben wollten. Genau, das Rad und das Podest hängen gemeinsam an einem Arduino Mega. Ich habe hier kein automatisches Streaming, wenn Taster gedrückt wird, dass direkt ein Signal kommt, rechner Polt, das einfach, der schickt erst 2 bytes, wo er sagt, welche LEDs an und aus sein sollen und kriegt dann erst ein byte zurück für Drehsensor-Daten und 2 byte für welche Taster an und aus sind. Hier, genau, hier so als Beispiel, 1fff, also hinter resnet 256, das vordere könnt ihr euch selber ausrechnen, es ist alle LEDs an, kriegen zurück hier minus 1, Drehsensor misst nichts und lauter nullen, kein Taster ist gedrückt, hier nur die roten LEDs an, kriegt eine Drehsensor-Position, Taster-Position und so weiter. So, nächster Schritt, Videos. Zuerst wollte Marco, dass wir die Videos auf einer großen LED-Matrix zeigen. Ich habe ihm ein Vogel gezeigt, habe gesagt, selbst wenn wir 10.000 LEDs nehmen, ist das immer noch so proper Pixel, vergiss es. Also, einfach in jedes Wandsegment ein Display für Videos, plus 2, die Textanzeigen in den Türen. Das sind so runde Gucklöcher, man hat es vorhin auf den Bildern gesehen, die haben so etwa 10 cm Durchmesser. Erster Gedanke war, wir nehmen einfach 7 Zoll HDMI-Displays, hängen hinter ihr das in Raspberry Pi, alles ist gut. Aber wenn man 14 davon braucht und auf dem Studentenbudget arbeitet bei so einem Großprojekt, nee, ist nicht. Lösung ist, wir haben das aller billigste Android-Tablet gekauft, das es bei Amazon gibt, das ist ein All Day Mall A88X, 7 Zoll Tablet, Android 4.4, Auflösung von 1024 x 600, ist nicht supergeil, aber reicht. Da kostet es Stück 40 Euro. Dafür kriege ich nicht mal den Raspberry Pi plus ein Stromkabel. Geschweige denn, Display ist dafür. Da habe ich eine kleine App fürgeschrieben, da sind nur ein paar Hundert Zeilen Java. Die App startet automatisch beim Systemstart. Die kann gleichzeitig Videos auf Vollbild anzeigen und noch Text drüberblenden, mehr zeilig. Die App ist dauerhaft im Vollbildmodus. Es gibt keine Steuerelemente, die man auf dem Touchscreen bedienen könnte. Einfach, damit wir die Displays nicht noch mal hinter Glas packen müssen, sondern die sind tatsächlich nicht nach außen hin offen und das dann nicht einer drauf rumdrückt. Steuerung läuft einfach über WLAN, kleines Textbasiertes Protokoll kann man sich einfach prinzipiell mit dem Telnet-Line drauf einloggen. Befehle sind Play und Videoname. Zeigt mir ein Text an, dann stoppt das Video und gibt noch ein paar mehr. Genau, das hat uns am meisten Probleme gemacht. Punkt 1, ohne Route Rechte kann man unter Android keine Anwendung über Netzwerk nachinstallieren. Denn es gibt zwei Möglichkeiten, entweder ich melde mich per SSH darauf an, dann brauche ich Route Rechte um den Befehl auszuführen oder ich melde mich über ein Android Debugger über Netzwerk an, dann brauche ich keine Route Rechte um den Befehl auszuführen. Dummerweise brauche ich Route Rechte um den Android Debugger in Netzwerkmodus zu schalten, wenn ich nicht bei USB dran bin. Lösung war, naja, sobald die Tablets eingebaut waren in die Säule, durfte Marco keine neuen Wünsche mehr haben, was die App können muss. Er kam immer wieder mal an mit, hey, kannst du machen, dass ich die Textfarbe auswählen kann, sag ich klar, kann ich machen, kann ich das ausnehmen? Kein Problem. Nächstes Problem, ich habe schon gesagt, wir haben ein Haufen ungeschirmte Kabel in der Säule, entsprechend ist das WLAN ein bisschen wackelig. Erste Sache war, wir streamen die Videos nicht auf die Tablets, sondern die Videos liegen dort im Flash-Beicher und wir schicken nur noch das Signal für, spielt das Video ab. Wenn wir die Videos austauschen wollen, die können wir tatsächlich einfach abnehmen. Und das ab und zu mal die Verbindung so schlecht ist, dass unsere Befehle sich mal um ein, zwei Sekunden verzögern, damit muss man halt leider leben, dann läuft das Video halt ein Moment länger oder braucht ein Moment, bis es anläuft. Das fällt im normalen Betrieb eigentlich kaum auf, weil es so wie so in der Säule so viel zu sehen gibt, dass da keiner so genau darauf achtet. Und etwas überraschend, aber so im Nachhinein logisch, was aus hier an einer bestellt, die kommen mit allem möglichen Crab vorinstalliert. Wenn man diese Tablets bootet, während sie am Netzwerk hängen, dann hat man wunderschön Bildschirmpfe und Werbung, wollen sie eine Versicherung, wollen sie einen neuen Viren-Scanner. Hey, du hast schon 20 Viren auf deinem Rechner, installier mal die App, installier mal jene App. Manche davon kann man von Hand wegdrücken, selbst durch diese Gucklöcher durch, manche halt auch nicht. Manche kommen auch immer wieder. Lösung war, sobald mal alles drauf ist, dürfen die Tablets halt einfach nicht ins Internet und nach dem nächsten Reboot ist Ruhe. Zum einen gelöst, einfach indem wir im Router gesagt haben, okay, Traffic, der von den Tablets kommt, wird einfach gedroppt und zum anderen, um wirklich auf Nummer sicher zu gehen, falls jemand nochmal die Router-Konfiguration ändert, haben wir für einen echt Betrieb einfach auch das Kabel zur Außenwelt gezogen. Ja, genau. Nächste komponente Sound. Während jeder Epoche kommt eine Soundkomposition, die Marco geschnitten hat, mit Elementen zum Thema Zeit, Erfindungen, Krieg, Mensch und Maschine. Das Ganze spielt direkt das Herber ab. Wir haben zwei große Lautsprecher oben in der Säule. Die zeigen nach unten. Wir haben Aussparungen im Deckel. Wir haben einen kleinen Verstärker. Der hängt über Klink, dann eben an der Soundkarte. So groß. Man hat ihn vorhin auch ein Bild mal gesehen. Ich habe es vorhin schon gesagt, ist an der Soundkarte, weil ich den Soundtreiber für die Maschine nicht zum Laufen gebracht habe und wird angesteuert über SDL. Das ist eigentlich eine Bibliothek für 2D-Spiele, aber die Bibliothek daraus kann man auch einfach einzeln verwenden, funktioniert einwandfrei. Die Anwendung selbst ist in Ruby entsprechend einfach den Rubyrapper für SDL2. Software auf dem Server läuft ein Ruby-Programm. Nicht so wahnsinnig umfangreich. Das spricht an Arduinos, sendet Signale für MachLEDs an, MachLEDs aus. Wie sind denn meine Taster? Sendet über Netzwerksignale an die Tablets und gibt den Sound aus. Der Aufbau von dem Programm sieht ähnlich aus, wie man es bei einer einfachen Spiele-Engine hatte. Ich habe einen Main-Loop, der fragt am Anfang all seine Inputs ab, macht dann seine Logik für den aktuellen Frame und gebt am Ende wieder aus. Ich habe das Ganze aufgeteilt in Szenen. Ich habe eine Szene für die Türs offen. Die Szene tut im Wesentlichen nichts, am Anfang einmal alles abzuschalten und dann nur noch darauf zu warten, dass die Tür zugeht und dann wird zur nächsten Szene gesprungen. Wir haben eine Tutorial-Szene. Da ist einfach nur ein Voice-Over, das einmal etwa anderthalb Minuten lang erklärt, wie die Maschine zu bedienen ist. Wenn die Szene rum ist, wird automatisch zu einer Introszene gesprungen. Da sind ein paar Videos auf dem Display, eine LED-Animation und man wird aufgefordert, den weißen Button in der Mitte einmal zu drücken, damit es losgeht. Da kommt die Szene für das Time-Jump, wieder Videos, wieder LED-Komposition. Die geht auch in feste Zeit. Ich weiß gar nicht, was wir eingestellt haben, 20 Sekunden. Irgendwie sowas. Und überspringen wir zwei Stück, die EpoX-Szene. Das ist dann das, wo die eigentlichen Kompositionen laufen. Und dann gibt es noch zwei Szenen für entweder ich drehe und reiß dadurch durch die Zeit oder ich habe den mittleren Button gedrückt und reiß dadurch durch die Zeit. Ja, mal so einen Überblick über die Ordnerstruktur. Da sieht man so ein bisschen was drin ist. Es ist eine Klasse, die die LED-Animation kontrolliert. Eine Klasse für ein einzelnen Frame, eine Klasse für eine Animation und so weiter. Für jede Art von Hardware, die ansprechende Klasse, für jede Szene eine Klasse. Web-Interface komme ich gleich noch zu. Eine Klasse, die den Main-Loop enthält. Eine Klasse, die die Konfig lädt und eine Klasse, die die Musik macht. Plus ein bisschen drumherum, was ich jetzt weggeschnitten habe, aber nicht so wichtig. Ein Beispiel, wie das in Ruby aussieht, ist eine Szene. Das ist jetzt der Anfang von der First-Time-Drum-Szene. Das wird einmal ausgeführt, wenn man die Szene startet. Der fängt an, er macht alle LEDs auf einem Rad aus. Dann setzt sich hier ein Timer auf Null, mit dem er nachher dann gemisst, wenn die Szene zu Ende ist, wenn man die Szene zu Ende soll. Sagt den Tablets, spiel mal das Video. In dem Fall kriegen alle Tablets das gleiche. In den anderen Szenen haben die Tablets teilweise auch unterschiedliche Videos. Startet die Musik, falls welche eingestellt ist. Setzt die LED-Animation, falls welche konfiguriert sind. Hier habe ich es abgeschnitten. Kommt noch ein bisschen mehr. Hinterher habe ich einen Loop, wo auch jeden Frame prüft, okay, es ist meine Zeit drum. Es ist eine Zeit, wenn ich etwas verändere oder es springt zur nächsten Szene. Genau. Herausforderungen, die größer waren als gedacht. Ich will ja als Programmierer nicht einstellen müssen, welche Videos, welche Musik, welche sonst was. Da musste in der Teilformat her, dass unsere Designer in einem Texteditor bearbeiten können. Die müssen einstellen, welche Videos, welche LED-Animation, welche Epochen gibt es, in welche Reihenfolge kommen, wie lange dauern bestimmte Szenen und, und, und. Ich habe Jammel als Dateivformat genommen, das ist noch relativ einfach und kann trotzdem ganz gut die Daten strukturieren als Baum. Hier mal so ein Ausschnitt aus wie die Tutorial-Szene konfiguriert ist. Das ist jetzt tatsächlich die gesamte Konfiguration für die roten LEDs, für die weißen LEDs. Die Szene geht 86 Sekunden. Ich habe 3 Sekunden bevor es richtig losgeht. Ich habe eine Audio-Datei und genau das Allows gibt. Das ist eine Debug-Funktion. Weil wir beim Testen nicht jedes Mal diese anderthalb Minuten abwarten wollten, haben wir dann ein, ein gebaut, dass man im Debug einfach auf den weißen Teil auf den weißen Teil geht. Und dann geht es weiter im Echtbetrieb ist das aus. Und man sieht hier noch sehr schön Designer- und Versionsverwaltung. Da taucht so ein Wort wie Final im Dateinamen auf oder plötzlich habe ich einen Ordnernamen mit und ohne eine 2 hinten dran. Irgendwann kriege ich es auch noch hin, den Jungs beizubringen, wie man geht verwendet. Wenn man es lernt, dann will ich ja. Genau. Das ist das Dateivformat für unsere oder die beiden Dateivformate für die LEDs. Genauso wieder da. Die Designer müssen uns schreiben können. Ich wollte keine GUI für schreiben. Eine von unseren Designer hat sich hinterher dann doch eine GUI zusammengeklickt wegen mir. Wir wollten, dass man Frames, die man mehrfach braucht, was weiß ich, alles aus oder so, nicht jedes Mal wieder ablegen muss. Deshalb haben wir 2 Dateien. Der 1. steht einfach drinnen. Aus folgenden Frames besteht die Animation. Das ist der linke Block hier. Wo auch immer mein Cursor ist, der linke Block. Da steht oben entweder Loop oder No Loop. Soll sich die Animation wiederholen. Und dann in jeder Zeile, in Millisekunden, wie lang geht der Frame und eine Referenz auf die Datei, wo die eigentlichen Frame-Daten sind. In dem Fall jetzt hier neuen Frames. Und jeder Frame und der Textdatei, wo für jede LED in der 1 oder 0 steht. Ja, einfach auch damit der Designer das im Text-Editor machen kann und ihn im Text-Editor ermühen muss. Beim Laden wird das dann direkt einmal in eine binäre Präsentation angeschoben und dann geht das auch. Letzte Komponente der Software. Wir wollten uns nicht jedes Mal per SSH auf dem Server einloggen um das Ding zu starten und zu stoppen. Deshalb einfach mit Sinertra. Das ist ein kleines Ruby-Frame-Work für Web-Anwendungen, also quasi Ruby on Rails in kleiner. Das läuft im gleichen Prozess. Das ist in dem alles andere auch läuft, aber als eigener Thread kann also parallel nebenherlaufen. Darüber kann man momentan die Tablets steuern und das Hauptprogramm starten und stoppen. Ich hatte eigentlich mal vorgesehen, dass man da noch mehr machen kann, dass man sagen kann, ich möchte jetzt direkt in diese Szene springen oder in diese Epoche oder Debug-Output im Browser anzeigen, ist dann aus Zeitgründen einfach nichts mehr geworden. Also die drei Controls, die er da sieht, das ist tatsächlich alles, was das Ding momentan kann, aber es reicht. Genau, dann bin ich eigentlich schon am Ende. Wie geht es weiter? Markus Diplom ist rum. Hoffentlich bald ein bezahlter Auftrag. Wir haben da was in Aussicht mit einer Firma, die Litva-Säulen herstellt. Die haben gesagt, hey, das passt irgendwie zu dem, was wir machen. Können wir da nicht Werbung für uns machen? Ich hoffe, das wird was. Beim nächsten Mal, dann hoffentlich auch nicht mit so beschränktem Budget. Dann fallen so die ganzen Probleme mit den Android-Tablets weg. Dann fallen hoffentlich andere Probleme weg. Dann geht das Rad sauber. Dann haben wir insgesamt einfach hochwertigeres Material, hoffentlich. Das war's. Meine Uhr sagt, wir haben noch ein paar Minuten für Fragen, falls ihr welche habt. Ach so, genau. Ja, genau, die Säule steht quasi da vorne schräg gegenüber. Ihr habt es bestimmt schon gesehen mit den weißen Trennwänden. Es steht so ein Bauzaun als Eingang. Wir sind heute Abend noch da. Ihr könnt das Ganze besichtigen. Wir hatten es den Tag über, auch schon immer wieder zu besichtigen. Morgen habe ich schon gesagt, Marco ist leider nicht da. Ich bin leider wahrscheinlich auch nicht da. Aber wenn ihr das sehen wollt, heute Abend noch. Oder wenn ihr aus Karlsruhe seid, auch irgendwie die nächsten Wochen einfach mal vorbeischauen. Da kann ich auch noch was zu sagen. Es gibt eine größere Jahresausstellung, die ist in einem Monat. Da kann man das jeden Tag anschauen auch noch mal. Also die Zeitmaschine. Ja, genau. Ja, genau, Zeitlimit. Braucht man eine Zeitmaschine? Ach, ja. Man kann in dem Ding tatsächlich auch schon mal irgendwie eine halbe Stunde brauchen. Direkt vor dem Vortrag haben wir jemanden nach einer Dreiviertelstunde rausgeschmissen, weil wir gesagt haben, hey, wir müssen zum Vortrag. Und die denken tatsächlich, wirklich, sie waren eine Viertelstunde drin. Es ist übel. Man verliert total das Zeitgefühl. Selbst wir, die es zigmal getestet haben, ich habe im Abend vor der Diplompräsitation noch mal alles durchgecheckt. Ich dachte so, naja, waren es vielleicht zehn Minuten und hinterher habe ich die Uhr geguckt, war es halt doch auch irgendwie über eine halbe Stunde. Und ich bin wirklich nur einmal durch. Ich habe jedes Video einmal angemacht, jedes Video wieder einmal ausgemacht, einmal gehört ist der Ton da, einmal geguckt sind die LEDs an. Ja. Also ihr seid herzlich eingeladen und wenn ihr Fragen auch zu künstlerischen Komponenten nicht zukommen. Also wenn keiner mehr Fragen hat, wer will kann direkt mitkommen.