Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
flipdot:start [2013/02/12 11:25] – [Vorschlag fuer HW] luja | flipdot:start [2024/03/07 22:07] (current) – linuxhackerman | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | = Flipdot | ||
+ | |||
---- dataentry Projekt ---- | ---- dataentry Projekt ---- | ||
- | Projekt_url | + | Projekt_url |
- | Name : Flipdot | + | Name : Flipdot |
- | Beschreibung_wiki | + | Beschreibung_wiki : Flipdotmatrixen |
+ | Links_urls | ||
+ | Bilder_imgs | ||
+ | Source_url | ||
+ | Lizenz | ||
+ | Beteiligt | ||
+ | Termine_page | ||
+ | Status_ | ||
+ | Kategorie_tags | ||
+ | Verwandtes_tags | ||
+ | ---- | ||
- | Links_urls | + | Uns ist irgendwann mal ein Rudel Flipdot-Panels zugelaufen, die wir sowohl im Münchner Club als auch in andere Hackerspaces verteilt haben. Die Panels wurden in verschiedenen Konfigurationen zu mehreren Displays aggregiert und zeigen z.B. den Clubraum Status, das Channel Topic oder aktuelle (politische) Nachrichten im Schaufenster an. |
- | Bilder_imgs | + | |
- | Source_url | + | Es gibt verschiedenste Treiberplatinen und Ansteuerungshardware, |
- | Lizenz | + | |
- | Beteiligt | + | Der Quellcode sammelt sich im [[https:// |
- | Termine_page | + | |
- | Status_ | ||
- | Kategorie_tags | ||
- | Verwandtes_tags | ||
- | ---- | ||
- | Wir haben eine Flipdotmatrix. | + | Ein Panel hat die Abmessungen 30x24x6cm und wiegt mit vier Haltern ca. 1,2 kg. Zwei Panels mit Rücken aneinander |
- | | + | == Nomenklatur |
- | * Steuerplatine: 10 8-Stufe Schieberegister (80 bit) [[http:// | + | |
- | * Normalbetrieb am ' | + | Um dem Chaos ausnahmsweise entgegen- und nicht zu-zuwirken legen wir hier feste Worte für die einfachere Kommunikation fest! |
+ | |||
+ | | ||
+ | * FIXME: Sollte man nicht lieber 16 Spalten × 20 Zeilen verwenden? Dann entspräche eine Modulzeile einem 16 Bit Wort, was auch die interne Aufteilung von üblichen Framebuffern entspricht. | ||
+ | * Treiberplatine == nimmt seriell Daten entgegen und gibt dieses Parallel auf die Dot-Matrix eines Moduls. | ||
+ | * Panelzeile == horizontal aggregierte Ansammlung von Dots, typischerweise 20 Dots | ||
+ | * Panelspalte == vertikal aggregierte Ansammlung von Dots, typischerweise 16 Dots | ||
+ | * Der Ursprung ist oben links (wenn man von vorne draufschaut) und mit X0Y0 beschriftet | ||
+ | * **Assembly** == Ein bis mehrere Panel sind zu einem größeren Aggregat zusammengebaut worden und haben eine gemeinsame Steuerungseinheit. Im Club stehen drei Assemblys im Schaufenster rum. | ||
+ | * **Display** == Ein Display besteht aus einer bis mehreren Assemblies und ist für den Betrachter eine zusammenhängende Installation. Z.B. die drei Assemblies im Clubschaufenster, | ||
+ | * **Window** == Ein rechteckiger Bereich in einem Display. Diese Bereiche können als Resource an verschiedene Teilnehmer vergeben werden die darauf schreiben dürfen. | ||
+ | |||
+ | **ACHTUNG**: | ||
+ | |||
+ | |||
+ | == Displays | ||
+ | |||
+ | Wir haben aktuell folgende Flipdot-Displays: | ||
+ | |||
+ | ^ ^ Anzahl | ||
+ | | Mini | 2 | Zeigt den Clubstatus an, kann (offiziell? | ||
+ | | Zeile | ||
+ | | [[wand|Schaufenster / Wand]] | ||
+ | | [[mobil|Mobil / Demo]] | ||
+ | |||
+ | === Zeile | ||
+ | |||
+ | 176x20 Pixel. | ||
+ | |||
+ | Es gibt mehrere Möglichkeiten die Zeile anzusprechen: | ||
+ | - UDP: Wie alle Displays beherrscht auch die Zeile ein triviales UDP-Protokoll: | ||
+ | - In #ccc auf darkfasel: Alle Posts, die " | ||
+ | - < | ||
+ | |||
+ | === Bildformat | ||
+ | Es muss ein animiertes 144x120 gif sein mit einem delay auf dem frame. am besten sowas wie 600 sekunden oder so | ||
+ | |||
+ | Schwarz-weiss: | ||
+ | |||
+ | Bug: Aktuell scheinen die linkesten 16 pixel am rechten Rand angezeigt zu werden. | ||
+ | |||
+ | Workaround: '' | ||
+ | |||
+ | einfach per ssh das gif in ~/ | ||
+ | |||
+ | === Schaufenster / Wand | ||
+ | |||
+ | Das Fenster ist ca. 210x215cm – damit braucht es dann 7x9, also 63 Panele. | ||
+ | |||
+ | Web-UI: http:// | ||
+ | == Change Log | ||
+ | |||
+ | * **2013-10-20**: | ||
+ | {{gallery>? | ||
+ | IPs: | ||
+ | links 2001: | ||
+ | mitte 2001: | ||
+ | rechts 2001: | ||
+ | |||
+ | * **2013-10-19**: | ||
+ | * **2013-10-14**: Holzspäne vom Vorkonstrukteur gekehrt!; alle Gewindestangen geflext, entgratet und gestapelt; Rollflipdotpanel in das linke Schaufenster gerollt; ein Kantholz gesägt und mit einem weiteren Flipdotpanel gebohrt und geschraubt; das dritte Flipdotpanel schräg dazu gestellt; 3x Kanthölzer werden vermisst bzw. nicht gefunden zum weiter machen; rest-Flipdotmaterial in eine Kiste gepackt; das Werkzeug vom Vorkonstrukteur!! und das eigene weggeräumt; | ||
+ | |||
+ | {{gallery>? | ||
+ | |||
+ | * **2013-09-30**: | ||
+ | * **2013-09-2x**: | ||
+ | * **2013-09-07**: | ||
+ | * Kernel-Anpassungen nötig, daher erstmal Aufsetzen eines Cross-Build-Environments für RPi Kernel: [[http:// | ||
+ | * Wir nehmen als Basis [[https:// | ||
+ | * Fnord! Fork: [[https:// | ||
+ | * Um den gpio-max7301 GPIO Device Treiber zu benutzen, muss man entweder Platform Code ändern/ | ||
+ | * Wir machen Platform Code, weil DT neuen Bootloader und damit mehr Fnord erfordert hätte [[https:// | ||
+ | * Der RPi GPIO Treiber bcm2708_gpio ist kaputt, man kann nicht mehrere GPIO Devices haben... | ||
+ | * Fix: [[https:// | ||
+ | * **TODO**: Der RPi SPI Treiber spi-bcm2708 ist, diplomatisch ausgedrückt, | ||
+ | * Der MAX7301 kann eigentlich nur 16 Bit pro Word, testweise auf 8 Bit runter (wegen Schieberegister), | ||
+ | * Der BCM2708 kann erstmal nur 8 Bit pro Word, oder mehr wenn man DMA benutzt, der Treiber kann weder DMA noch mit anderen Wordsizes umgehen | ||
+ | * **TODO**: Evaluation [[https:// | ||
+ | * Wir brauchen einen Logic Analyzer (es sollen diverse im Club sein, aber keinen gefunden), da total unklar ist was auf dem SPI Bus wirklich passiert | ||
+ | |||
+ | * **2013-09-0x**: | ||
+ | |||
+ | * **2013-06-14**: | ||
+ | * Ziel: Streaming eines (virtuellen) Framebuffers | ||
+ | |||
+ | |||
+ | |||
+ | == Steuerplatine | ||
+ | * 10 8-Stufe Schieberegister (80 bit) [[http:// | ||
+ | * Aufgeteilt in row + column register | ||
+ | * Normalbetrieb am orginal-' | ||
* Einmal komplettes Durchschieben: | * Einmal komplettes Durchschieben: | ||
+ | * FIXME: Wo kommt die Zahl her, gilt das für ein Modul, also eine Steuerplatine? | ||
+ | |||
+ | == Pinbelegung | ||
+ | Thx an x5444 von den Ingolstädern für das PIN-Layout! | ||
+ | |||
+ | Das row register ist 24px lang. (effektiv werden beim chainen noch 4px fnord mitgeschickt) | ||
+ | Das col register is 16px lang. | ||
+ | |||
+ | ^ 1 | ?1 ^ 2 | GND | | ||
+ | ^ 3 | ROW_DATA | ||
+ | ^ 5 | STROBE | ||
+ | ^ 7 | WHITE_OE | ||
+ | ^ 9 | BLACK_OE | ||
+ | ^ 11 | COL_CLOCK ^ 12 | GND | | ||
+ | ^ 13 | ROW_CLOCK ^ 14 | GND | | ||
+ | ^ 15 | COL_DATA | ||
+ | ^ 17 | DO ^ 18 | GND | | ||
+ | ^ 19 | ?1 ^ 20 | ?2 | | ||
+ | |||
+ | * ?1 == durchverbunden, | ||
+ | * DO == Ausgang des zweiten nichtinvertierten Schieberegisters für die Spalten auf der input Seite bei Kaskadierung von Modulen | ||
+ | * ?2 == ind ein wenig komisch, die sind jeweils ein bestimmter pegel (hab ich grad nicht im kopf) sobald an einer der steuerplatinen in der kette die matrix die tatsächliche display-einheit verbunden ist | ||
+ | |||
+ | |||
+ | == Historie | ||
+ | |||
+ | Ursprünglicher Standort über der A9 bei Fröttmaning: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Wir haben 198 schwarze und 4 blaue Panels mit je 20x16 Pixeln | ||
+ | |||
+ | Bisher wurden nur die schwarzen verbaut. | ||
- | ====== Geometrie ====== | + | Davon stecken insgesamt |
- | | + | |
- | | + | |
+ | * 24 x im mobilen Flipdot | ||
- | ====== Pinbelegung ====== | + | === Verteilung |
- | 04:18 < x5444> pin 1 ist durchverbunden, | + | |
- | 04:18 < x5444> pin 2 ist dateneingang für die zeilen (also die seite mit 20 pixeln) | + | |
- | 04:18 < x5444> pin 3 ist die strobe | + | |
- | 04:18 < x5444> pin 4 und 5 sind die OEs | + | |
- | 04:19 < x5444> pin 6 ist takteingang für die spalten (also die seite mit 16 pixeln) | + | |
- | 04:19 < x5444> pin 7 ist takt für die zeilen | + | |
- | 04:19 < x5444> pin 8 ist daten für die spalten | + | |
- | 04:20 < x5444> pin 9 ist der ausgang des zweiten nichtinvertierten schieberegisters für die spalten auf der input seite (dem flachband kabel), auf der buchse unbelegt | + | |
- | 04:21 < x5444> pin 10 und 11 sind ein wenig komisch, die sind jeweils ein bestimmter pegel (hab ich grad nicht im kopf) sobald an einer der steuerplatinen in der kette die matrix die tatsächliche display-einheit verbunden ist | + | |
- | 04:21 < x5444> pin 12 bis 20 ist ground | + | |
- | + | ||
- | ===== Vorschlag fuer HW ====== | + | 70 Vergeben: |
- | Man nimmt ein kleines FPGA, und etwas RAM(z.B. im FPGA enthalten) und hat einen Prozess, | + | * 4 x bei den Ingolstädtern; |
- | der die Daten zu den Schieberegistern schreibt. Der Pin9 sollte zum Prueflesen benutzt werden. | + | * 1 x bei Karsten (Student-Robotics-Student von lila) |
- | Nun teilen wir den RAM in 2 Bildschirmspeicher ein: | + | * 6 x Hannover, Mcfly (gewannen eine Wild Demo Compo: http:// |
- | Einer der Speicher wird angezeigt, und der andere kann geladen werden. | + | |
- | Ein Toggle-Bit im config-Register des FPGA schaltet zwischen Bildschirmspeicher und Vorbereitungs- | + | * 1 × datenwolf |
- | Speicher um. Bei Flankenwechsel des Speicherschalt-Bits wird der Update-Prozess ausgeloest. | + | * 6 x Metalab Wien, overflo https:// |
+ | * 8 x Dortmund, Eimann | ||
+ | * 3 x Karlsruhe | ||
+ | * 3 x Darmstadt, bios | ||
+ | * 6 x ccc Köln | ||
+ | * 4 x AFRA - Abteilung-für-Redundanz-Abteilung (Martin weis mehr) | ||
+ | * 2 x Tausch gegen neuen Münzer Matemat (Bekommt noch 2, Martin weis mehr) | ||
+ | * 4 x + 1 Steuerplatine normal für OpenLab Hackspace/ | ||
+ | * im Tausch gegen Datenhandschuh und Geekend | ||
+ | * 2014-01-14: Haben über krobin ein Ersatzteilmodul bekommen. Pixel waren kaum noch drauf, aber Spulen und Transistoren. | ||
+ | * 6 x Southampton(UK) + fuer SoMakeIt/ | ||
+ | * 3 x Chaostreff Salzburg via ahuemer. Geplante Projekte: Julia Mengen Betrachter, Mate Counter für das baldig kommende Geekend bei uns. | ||
+ | * 2? x foobar Essen via gammlaa | ||
+ | * 3 x [[http:// | ||
+ | * 2 x Hackerspace Budapest | ||
+ | am 31c3 rausgegeben von Gigo an ccczh | ||
+ | * 2 x [[https:// | ||
+ | * 2 x [[http:// | ||
+ | * 2 x [[http:// | ||
+ | * 2 x [[http:// | ||
- | Insgesamt kann man das Verhalten wie bei den grafikfaehigen Industrie-Displays LCD gestalten, sodass | + | === Requests |
- | man vorhandene Linux-Treiber fuer den Druckerport nutzen und anpassen kann. | + | |
- | Von der Ansteuerungsseite aus wird man z.B. 2 Addressen sehen, mit 8bit breiten Daten. | + | Wir haben noch ca. 11 Panels zu vergeben, Hackerspaces werden bevorzugt. Die Plan-Spalte wird nur von Mitgliedern des Fliptdot-Vergabe-Kommitees geändert. |
- | Adresse 1 ist config register: | + | |
- | '' | + | |
- | 7 | + | |
- | M | + | |
- | e | + | |
- | m | + | |
- | _ | + | |
- | b | + | |
- | u | + | |
- | f | + | |
- | t | + | |
- | o | + | |
- | g | + | |
- | g | + | |
- | l | + | |
- | e | + | |
- | b b | + | |
- | u u | + | |
- | f f | + | |
- | f f | + | |
- | + | ||
- | W | + | |
- | '' | + | |
- | Beschreibung: | + | |
- | Die unteren bits sind fuer status | + | ^ Angefragt |
+ | | 1 defektes | - | com ]aet[ flipdot.org | ||
+ | | 2 | 1 | Attraktor Hamburg via mc.fly | ||
+ | | 4 | 2 | [[https:// | ||
+ | | 1 oder 2 | 0 | Philip Dusl | Abholen @ muCCC | ||
+ | | 4 | 2 | [[http:// | ||
+ | | | 2 | www.hackerspace-bielefeld.de | ||
+ | | 2 | | [[http:// | ||
+ | | 2-4 | | daniel domscheit-berg / havel: | ||
+ | | 4 | | FabLab Nürnberg: charlie ]ät[ fabfolk ]dod[ com | Abholung, Uebergabe auf Veranstaltung, | ||
+ | ^ ^ ~~=sum(range(1, | ||
- | Wenn error-flag gesetzt, bringt ein read vom | ||
- | dataport den errorcode | ||
- | wenn error-flag nicht gesetzt, bringt read vom | ||
- | data port, den zuletzt mit addresse selektierten | ||
- | ram_inhalt. | ||
+ | Sonstige | ||
+ | * 1 x Marian Kleineberg -> Jan kümmert sich | ||
- | Also haben wir eine Address-Select-Leitung | ||
- | und eine 8-bit-Datenleitung fuer den hackerport | ||
- | Rambedarf ist Pixelzahl zweimal | ||
- | Mein Vorschlag waere ein kleines automotive-fpga von actel. | ||
- | Als Bildspeicher: | ||
- | Wenn ichs richtig hab: | ||
- | 20*16*11*18 | ||
- | 63360BIT*2 | ||
- | rund 128Kbit, also 16KBYTE RAM, ein paar Addressleitungen und 8 bit datenleitung zum | ||
- | FPGA und fertig. Wird auf nen 1-Lager passen. | ||
- | Als RAM ein altes CAcHE-SRAM vom 586er oder 486er Mainboard, denn SRAM ist zahm in der Ansteuerung, | ||
- | kein Refresh und so zeugs. Address/ | ||
- | Asynchrones Reset und Clock versteht sich fuer das ganze Design von selbst. | + | == Archiv |
- | + | * [[https:// | |
- | Takt mit beliebigem Quarz z.B. 14.xxx MHZ aus Bastelkiste/ISACLK aus altem Mainboard. | + | |
- | Wegen altem Mainboard, frueher TM war IDE nur ein per Puffer und Addressdekoder rausgefuehrter ISA-BUS! | ||
- | Und das Zeugs ist aufwaertskompatibel. Man koennte das FPGA-Ding als " | ||
- | denn IDE wird aehnlich addressiert: | ||
- | |||
- | ich waere dafuer, dass man die beiden 8-bit Register (Config und Data) zusaetzlich ueber SPI zugreifbar macht, | ||
- | einen SPI-Core von opencores.org nimmt, und so das Teil an irgendeinen OpenWRT-Router drandengeln kann, | ||
- | und so ein web-interface hat, wo man SW-BMPs hochladen kann. | ||
- | Ob man jetzt per Parallel-Port oder SPI drauf geht ist egal. | ||
- | Vorteil der FPGA-Loesung ist, dass das Timing voellig Egal ist, denn das FPGA kuemmert sich um das Geschiebe. | ||
- | Theoretisch koennte man durch das Prueflesen des Schieberegisters bis zur Geschwindigkeitsgrenze der HW gehen. | ||
- | Ich wuerde aber sagen, dass 2MHZ schiebe-Clock genug sind. Wir nehmen z.B. besagten 14MHZ-Quarz oder sonst was ab 10MHZ, | ||
- | und teilen uns den Clock wie wir ihn brauchen. Evtl, im Configregister noch ein Flag fuer FAST/slow shift haben | ||
- | (z.B. 2MHZ vs 500kHz) | ||
- | Das wars schon mal aufs erste. | + | == Live interaction at rc3 |
+ | See the flipdot in our rc3.world assembly in the couch area or at [[https:// | ||
- | luja | + | You can send own pixel data to the flipdot using IPv6 (only! Still using legacy IP? Time to upgrade) UDP packets to the Host flip.y.nu port 2424. |
+ | There are a few examples in our [[https:// | ||
+ | For a quick start try out [[https:// | ||
+ | Unfortunately so far the animations won't stop when you send data (unlike our [[https:// | ||