Flipdot-Hack

Wie immer zuerst mal der Aufruf: Wer hat Lust mitzumachen? Es geht um Schaltungsentwicklung, Schaltungsaufbau (auch Löten genannt), Arduino-Programmierung und Web-Anbindung (schließlich soll es ja einfach sein, mit dem Webbrowser Nachrichten auf dem Flipdot Display zu schreiben).

Da unser C-Hack-Panel ja nur begrenzt komplexe Nachrichten anzeigen kann fehlte uns unbedinngt noch eine detailreichere Großanzeige.
Auf der Makerfaire gab es Anzeigen aus Linienbussen zu erstehen. Klar, dass man dort zugreifen musste:
Display-Transport

Das Teil ist ca. 2 Meter lang. Jedes der 6 Panels a 28×28 Pixel. Also haben wir es mit 168×28 Pixeln zu tun.

Mehr zur Funktionsweise findet ihr hier: https://en.wikipedia.org/wiki/Flip-disc_display
und hier: https://wiki.attraktor.org/FlipdotDisplay

Manche dieser Busanzeigen kommen mit einer RS422 Schnittstelle. Dieses leider nicht. Es wird direkt von einem Mikrocontroller angesteuert, der sich voreingestellte Texte aus einem EPROM holt. Welcher Text angezeigt wird, kann über eine IBIS Schnittstelle (24V Linienbus Bus – was für ein schlechter Kalauer :-)) gesteuert werden. Ist aber Langweilig, weil man dann nur zum Beispiel „Linie 123 nach Schwäbisch Gemünd“ anzeigen kann.

Panel-Rückseite

Hacking-Optionen:

Es wird also auf eine der drei folgenden Optionen herauslaufen:
1. Wir versuchen, nur den Mikrocontroller zu erstezen und greifen die Signal direkt dort ab.
Vorteil: Praktisch Alles in der Schaltung kann verwendet werden.
Nachteil: Ziemlicher Aufwand an reverse Engineering. Wir müssen uns durch die vielen Funktionen der Schaltung wühlen udn alles gut dokumentieren.

2. Wir legen die passenden Signale per Arduino an die Flachbandkabel an.
Vorteil: Der reverse Engineering Aufwand ist viel kleiner
Nachteil: Obwohl die ganze Controller-Platine (Siehe Bild) wegfällt, müssen wir immer noch alles nach 24V wandeln, weil die Spaltentreiber auf den Panels das erwarten.

3. Wir gehen vor wie Option 2. aber hacken auch noch die Panels so, dass bis auf die Treiber-Spannung für die Pixel alles mit Arduino-kompatiblen 5V funktioniert.
Vorteil: Man macht nicht so leicht etwas kaputt.
Nachteil: Zusätzliche Arbeit an den Panels.

Ein paar Vorüberlegungen

Es sieht so aus, dasss man tatsächlich nur jedes Pixel einzel schalten kann. D.h. mann muss tatsächlich alle 168×28 Pixel extrem schnell aber hintereinander kippen.

EinPanel

Magnete

Warum?
Jeder der Elektromagnete, die die Pixel verdehen, zieht etwa 300mA. Will man z.B. alle Pixel einer Spalte gleichzeitig drehen, dann ist der Strom I = 28 x 300mA = 8.4A !!!!!
No way – da raucht jeder Treiber ab.

Hier mal vorab die Schaltung der Pixel:
PixelSchaltung

Hier die etwas gekritzelte Schaltung des Spaltendekoder auf jedem der 6 Panels.
Die R-Arrays setzen die 24V Bussignal herunter auf 5V. Vielleicht vermeiden wir das, wenn wir Option 3 wählen.
Schönere Zeichnung kommt noch.
FP2800Dekoder

Reverse Engineering…

Irgendwie hat es mich die Vorstellung ja schon genervt, jetzt noch mal genau das nachzubauen, was bereits auf dem Display vorhanden ist.

Also habe ich mich mal an Variante 1 (s.o.) herangemacht

Dazu habe ich mir mal die Controllerplatine in die heimische Werkstatt geholt und versucht nachzuvollziehen, was der Mikrocontroller so treibt.
ReverseEngineerin-Setup

Netterweise gibt es eine ziemlich eindeutige Schnittstelle:
Ich vermute, die Jungs von Brose haben die Widerstände eingebaut, damit der Mikrocontroller nicht geschossen wird, wenn er mit 24V versehentlich in Berührung kommt.
MCU-Schnittstelle-Board
Den betagten 80C535 habe ich zunächst mal aus dem Sockel genommen, damit der nicht auch noch dazwischenfunkt und ich selber Logiksignale anlegen kann, ohne den Controller zu schießen.
Sollte der Hack funktionieren, landet der 80C535 aber eh in der Schrottkiste.

Nach einigem Durchpiepsen und versuchsweise Anlegen von 5V bzw. 0V bin ich der Bedeutung der einzelnen Leitungen so ziemlich auf die Spur gekommen:
MCU-Schnittstelle

Was ungemein geholfen hat ist die Steckerbelegung des großen 60poligen Flachbandkabels. Die gibt es hier: http://www.fingers-welt.de/wiki/index.php?title=FlipDot
Natürlich habe ich mal ein paar Probemessungen gemacht, um zu sehen, ob die Pinbelegung auch bei unserem Panel gilt.

Außerdem war ja davon auszugehen, dass es 3:8 Dekoder gibt, mit denen jeweils die Zeile bzw. die Panel-Nummer dekodiert wird. Wären ja sonst viel zu viele Pins am Mikrocontroller. Und bedingt durch den hohen Spulenstrom darf ja eh immer nur ein Pixel zu einer Zeit aktiv sein.
So habe ich mich dann von den Dekoder ICs rückwärts zur MCU gearbeitet.
Hier noch mal die Links zu den Datenblättern der Dekoder:
HEF4555b 2x 2:4 Dekoder
74HC237 3:8 Dekoder
74HC138 invertierender 3:8 Dekoder

Arduino Hack

Um weiterzukommen, wurde es Zeit, einen Arduino anzuschließen, damit man auch realistische Signale anlegen kann.
Hier die Andockstelle auf dem Controllerboard. Original MCU musste das Spielfeld verlassen. Das einzelne grüne Kabel ist GND. Das habe ich mir an einem LM7805 abgegriffen.
Arduino_Interface

Auf der anderen Seite der Kabel sind die Postenstecker für einen Arduino. In unserem Fall „Leonardo“.
Arduino_Stecker

So sitzt der Leonardo Huckepack auf dem Controllerboard:
Arduino_Huckepack

Erste Lebenszeichen

Die Zeilendekodierung funktioniert!!!!
Im Moment habe ich die Pixel in Spaltenrichtung einfach per Ground- bzw. 24V-Verbindung umgekippt.
Dazu habe ich das FP2800 aus dem Sockel genommen.

Flipdot-ersterVersuch

Zeilen und Spalten entschlüselt

Nach einigem Probieren habe ich endlich die Zeilen und Spaltendekodierung entschlüsselt.
Mittlerweile gibt es auch eine rudimentäre Firmware und drei Zeichensätze.
Hier der aktuelle Source Code:
https://github.com/surasto/Flipdot

foto-07-09-16-21-23-07

Hier sieht man noch ein paar Pixelartefakte, die dadurch entstanden sind, dass ich eine oder zwei Dioden zerschossen habe bei meinen ersten Vorversuchen.
Die muss ich jetzt noch austauschen…