Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
flipdot:start [2013/06/30 20:06] martinflipdot: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   Die Flipdotmatrix die uns zukam in Betrieb nehmen +Beschreibung_wiki : Flipdotmatrixen in Betrieb nehmen 
 +Links_urls        :  
 +Bilder_imgs       :  
 +Source_url        : https://github.com/muccc/flipdots 
 +Lizenz            : -- 
 +Beteiligt         : sepi, jan, lilafisch, martin, krobin, fpletz 
 +Termine_page      : 
 +Status_           : done 
 +Kategorie_tags    : Hardware, Software 
 +Verwandtes_tags   : Display, Schaufenster 
 +----
  
-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          : https://github.com/muccc/flipdots +Es gibt verschiedenste Treiberplatinen und Ansteuerungshardware, die auch mal besser dokumentiert werden müsste. :-
-Lizenz              : --+
  
-Beteiligt           : sepi, jan, lilafisch, martin, krobin +Der Quellcode sammelt sich im [[https://github.com/muccc/flipdots|flipdot git]].
-Termine_page        : flipdot:termine+
  
-Status_             : hardware planen, mehr testen 
-Kategorie_tags      : Hardware, Software 
-Verwandtes_tags     : Display, Schaufenster 
----- 
  
 +Ein Panel hat die Abmessungen 30x24x6cm und wiegt mit vier Haltern ca. 1,2 kg. Zwei Panels mit Rücken aneinander haben zusammen ca. 9 anstatt 6 cm Tiefe.
  
-====== Aktuelles ======+== Nomenklatur
  
-  * 2013-06-14: sepi/fpletz hacken an [[https://github.com/muccc/netfbd]] +Um dem Chaos ausnahmsweise entgegenund nicht zu-zuwirken legen wir hier feste Worte für die einfachere Kommunikation fest!
-    * Ziel: Streaming eines (virtuellen) Framebuffers+
  
 +  * **Panel** == 1 Object voll mit Dots; besteht aus: Dot-Matrix mit 16 Zeilen und 20 Spalten. Hat hinten noch die Treiberplatine dran.
 +    * 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, eine Assembly die aus einer "Zeile" panels besteht und im Clubhauptraum den ganzen Raum umrundet. Eine Einpanelassembly die nur den Clubstatus anzeigt.
 +  * **Window** == Ein rechteckiger Bereich in einem Display. Diese Bereiche können als Resource an verschiedene Teilnehmer vergeben werden die darauf schreiben dürfen.
  
-====== Einführung ======+**ACHTUNG**: Eventuell ist im Rest der Wikiseite alles vertauscht. Das sollte später gefixt werden!
  
  
-Wir haben eine Flipdotmatrix.+== Displays
  
-  * 198 schwarze und 4 blaue Module +Wir haben aktuell folgende Flipdot-Displays:
-    * 4 der schwarzen Module sind noch den Ingolstädtern designated! +
-    * 1 x Schwarz bei Karsten (SR-Student von lila) +
-    * 4 (oder 6?) x Schwarz bei Flop +
-    * 2 x Hannover +
-    * 2 x McFly schwarz+
  
-====== Nomenklatur ====== +^                               ^ Anzahl  ^                                                                               ^ 
-Um dem Chaos ausnahmsweise entgegen- und nicht zu-zuwirken legen wir hier feste Worte für die einfachere Kommunikation fest!+| Mini                          |  2      | Zeigt den Clubstatus an, kann (offiziell?nicht direkt angesprochen werden. 
 +| Zeile                          11     | Zeigt Topic aus #ccc an                                                       | 
 +| [[wand|Schaufenster / Wand]]  |  63     | drei Assemblies die in der Regel als ein großes Display betrieben werden      | 
 +| [[mobil|Mobil / Demo]]        |  ??     | mobiles, wasserfestes Case                                                    |
  
-  * Modul (Panel) == 1 Object voll mit Dots; besteht aus: Dot-Matrix mit 16 Zeilen und 20 Spalten. Hat hinten noch die Treiberplatine dran. +=== Zeile
-  * Treiberplatine == nimmt seriell Daten entgegen und gibt dieses Parallel auf die Dot-Matrix eines Moduls. +
-  * Zeile == horizontal aggregierte Ansammlung von Dots, typischerweise 20 Dots +
-  * Spalte == vertikal aggregierte Ansammlung von Dots, typischerweise 16 Dots +
-  * Der Ursprung ist oben links und mit X0Y0 beschriftet+
  
-**ACHTUNG**: Eventuell ist im Rest der Wikiseite alles vertauscht. Das sollte später gefixt werden! +176x20 Pixel. 
-====== Steuerplatine ======+ 
 +Es gibt mehrere Möglichkeiten die Zeile anzusprechen: 
 +  - UDP: Wie alle Displays beherrscht auch die Zeile ein triviales UDP-Protokoll:  `2001:7f0:3003:beef:ba27:ebff:fe89:4cd2` Port `2323` 
 +  - In #ccc auf darkfasel: Alle Posts, die "Alarm" enthalten sowie Topic-Änderungen werden angezeigt. 
 +  - <del>https://muc.pads.ccc.de/flipdot wird angezeigt (BETA)</del> Landet aktuell auf der Wand, nicht auf der Zeile 
 + 
 +=== Bildformat 
 +Es muss ein animiertes 144x120 gif sein mit einem delay auf dem frame. am besten sowas wie 600 sekunden oder so 
 + 
 +Schwarz-weiss: Image -> Mode -> Indexed...:  use black and white (1-bit) palette 
 + 
 +Bug: Aktuell scheinen die linkesten 16 pixel am rechten Rand angezeigt zu werden. 
 + 
 +Workaround: ''gm convert tdoh.gif -affine 1,0,0,1,-16,0 -transform -draw 'image Over -112,0 144,120 tdoh.gif' tdoh2.gif'' 
 + 
 +einfach per ssh das gif in ~/gifs/active legen 
 + 
 +=== Schaufenster / Wand 
 + 
 +Das Fenster ist ca. 210x215cm – damit braucht es dann 7x9, also 63 Panele. 
 + 
 +Web-UI: http://[2001:7f0:3003:beef:ba27:ebff:fee3:ff77]:8000/ 
 +== Change Log 
 + 
 +  * **2013-10-20**:  
 +{{gallery>?flipdot-ph*.jpg&lightbox&4}} 
 +IPs: 
 +  links 2001:67c:20a1:1033:33c3:beef:1234:0001 
 +  mitte 2001:67c:20a1:1033:33c3:beef:1234:0002 
 +  rechts 2001:67c:20a1:1033:33c3:beef:1234:0003 
 + 
 +  * **2013-10-19**: fehlende Kanthölzer und zusätzlich Holzbretter (Holzbretter als Netzteil-Unterlage zum mit'rollen) wurden besorgt und Flipdotpanel für das linke Schaufenster wurde mit vielen Helfern fertiggestellt. 
 +  * **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; den eigenen dreck wie Holzspäne gekehrt. Siehe: 
 + 
 +{{gallery>?flipdot_image_*.jpg&lightbox&4}} 
 + 
 +  * **2013-09-30**: Das 48x120 gross Display ist jetzt unter 2001:7f0:3003:cafe:ba27:ebff:fe71:dd32 zu erreichen. In eventuellen Skripten einfach die IP und groesse anpassen. Das Netzteil ist normalerweise aus und muss mit dem Netzkabel erst mit Strom versorgt werden. Der Treiber startet automatisch. 
 +  * **2013-09-2x**: Ein Netzteil, Treiberplatine und rpi wurden zusammengeschaltet. Ein schnell gehackter Treiber steuert alles an. 
 +  * **2013-09-07**: fpletz, argv und martin haben versucht den [[http://datasheets.maximintegrated.com/en/ds/MAX7301.pdf|MAX7301]] unter Linux zum Laufen zu bekommen 
 +    * Kernel-Anpassungen nötig, daher erstmal Aufsetzen eines Cross-Build-Environments für RPi Kernel: [[http://www.elinux.org/Rpi_kernel_compilation|elinux kernel compile guide]] 
 +    * Wir nehmen als Basis [[https://github.com/raspberrypi/linux/tree/rpi-3.11.y|raspberrypi/linux/rpi-3.11.y]] 
 +    * FnordFork: [[https://github.com/muccc/linux/tree/rpi-3.11.y-max7301|muccc/linux/rpi-3.11.y-max7301]] 
 +      * Um den gpio-max7301 GPIO Device Treiber zu benutzen, muss man entweder Platform Code ändern/schreiben oder Device Table benutzen 
 +        * Wir machen Platform Code, weil DT neuen Bootloader und damit mehr Fnord erfordert hätte [[https://github.com/muccc/linux/commit/655678d08e177502f539ed376365edea0b4e84d8|Commit]] 
 +      * Der RPi GPIO Treiber bcm2708_gpio ist kaputt, man kann nicht mehrere GPIO Devices haben... 
 +        * Fix: [[https://github.com/muccc/linux/commit/af493530b7f1ff4af4b344649841cf42604b01f6|Commit]] 
 +      * **TODO**: Der RPi SPI Treiber spi-bcm2708 ist, diplomatisch ausgedrückt, unvollständig 
 +        * Der MAX7301 kann eigentlich nur 16 Bit pro Word, testweise auf 8 Bit runter (wegen Schieberegister), aber [[https://github.com/muccc/linux/commit/6ef80df17e079b010ee83ddf20d6cfcf260a57d9|Fail-Commit]] 
 +        * 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://github.com/raspberrypi/linux/pull/147|dieses Pull Requests]], auf den ersten Blick Fnord 
 +    * 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**: jan hat Extension Boards für RaspberryPi mit MAX7301 per SPI gebastelt 
 + 
 +  * **2013-06-14**: sepi/fpletz hacken an [[https://github.com/muccc/netfbd]] 
 +    * Ziel: Streaming eines (virtuellen) Framebuffers 
 + 
 + 
 + 
 +== Steuerplatine
   * 10 8-Stufe Schieberegister (80 bit) [[http://www.nxp.com/documents/data_sheet/74HC_HCT4094.pdf|74HC_HCT4094]]   * 10 8-Stufe Schieberegister (80 bit) [[http://www.nxp.com/documents/data_sheet/74HC_HCT4094.pdf|74HC_HCT4094]]
     * Aufgeteilt in row + column register     * Aufgeteilt in row + column register
Line 54: Line 121:
     * FIXME: Wo kommt die Zahl her, gilt das für ein Modul, also eine Steuerplatine?     * FIXME: Wo kommt die Zahl her, gilt das für ein Modul, also eine Steuerplatine?
  
-===== Pinbelegung =====+== Pinbelegung
 Thx an x5444 von den Ingolstädern für das PIN-Layout! Thx an x5444 von den Ingolstädern für das PIN-Layout!
  
Line 60: Line 127:
 Das col register is 16px lang. Das col register is 16px lang.
  
-^ 1  | ?1        ^ 11 ?2      | +^ 1  | ?1        ^  GND      | 
- | ROW_DATA 12 | GND     | + | ROW_DATA  | GND     | 
- | STROBE    ^ 13 | GND     | + | STROBE    ^  | GND     | 
- ROW_OE    14 | GND     | + WHITE_OE   | GND     | 
- COL_OE    15 | GND     | + BLACK_OE  10 | GND     | 
-6  | COL_CLOCK ^ 16 | GND     | +11 | COL_CLOCK ^ 12 | GND     | 
-7  | ROW_CLOCK ^ 17 | GND     | +13 | ROW_CLOCK ^ 14 | GND     | 
-8  | COL_DATA 18 | GND     | +15 | COL_DATA 16 | GND     | 
-9  | DO        ^ 19 | GND     | +17 | DO        ^ 18 | GND     | 
-10 | ?       ^ 20 | GND     |+19 | ?       ^ 20 | ?2     | 
 + 
 +* ?1 == durchverbunden, kann man wohl am abschluss für nen rückkanal nutzen, so dass man die anzahl der segmente zählen kann 
 +* 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 
  
-?1 == durchverbunden, kann man wohl am abschluss für nen rückkanal nutzen, so dass man die anzahl der segmente zählen kann +== Historie
-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+
  
-====== Schaufenster ====== +Ursprünglicher Standort über der A9 bei Fröttmaning:
-Das Fenster ist ca. 210x215cm, die es zu füllen gilt. Damit braucht es dann also 7x9=63 Panele.+
  
-====== Alles neu, unsere viel bessere modulare Ansteuerung ======+{{:flipdot:flipdot_a9.png?direct&200|}}
  
-===== Vorschlag von luja ====== +Wir haben 198 schwarze und 4 blaue Panels mit je 20x16 Pixeln
-Man nimmt ein kleines FPGA, und etwas RAM(z.B. im FPGA enthalten) und hat einen Prozess,  +
-der die Daten zu den Schieberegistern schreibt. Der Pin9 sollte zum Prueflesen benutzt werden. +
-Nun teilen wir den RAM in 2 Bildschirmspeicher ein: +
-Einer der Speicher wird angezeigt, und der andere kann geladen werden.  +
-Ein Toggle-Bit im config-Register des FPGA schaltet zwischen Bildschirmspeicher und Vorbereitungs- +
-Speicher um. Bei Flankenwechsel des Speicherschalt-Bits wird der Update-Prozess ausgeloest.+
  
 +Bisher wurden nur die schwarzen verbaut. 
  
-Insgesamt kann man das Verhalten wie bei den grafikfaehigen Industrie-Displays LCD gestalten, sodass +Davon stecken insgesamt 
-man vorhandene Linux-Treiber fuer den Druckerport nutzen und anpassen kann.+  * 54 x in den drei großen Displays fürs Schaufenster 
 +  * 2 x im Minidisplay Hauptraum 
 +  * 24 x im mobilen Flipdot
  
-Von der Ansteuerungsseite aus wird man z.B. 2 Addressen sehen, mit 8bit breiten Daten. +=== Verteilung
-Addresse0 ist das Daten-Transferregister. +
-Adresse 1 ist config register:+
  
-Beschreibung:+70 Vergeben: 
 +    * 4 x bei den Ingolstädtern; http://bytewerk.org/index.php/Schaufenster_Tetris und http://bytewerk.org/index.php/Flipdot-Matrix 
 +    * 1 x bei Karsten (Student-Robotics-Student von lila) 
 +    * 6 x Hannover, Mcfly (gewannen eine Wild Demo Compo: http://xayax.net/flippin_the_dots/
 +    * 2 x Hamburg, Mcfly, Attraktor 
 +    * 1 × datenwolf 
 +    * 6 x Metalab Wien, overflo https://metalab.at/wiki/Flipdots 
 +    * 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/Chaostreff Augsburg, via gamambel im IRC -- als Wall im Space und für Veranstaltungen. 
 +      * 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/StudentRobotics (lilafisch) 
 +    * 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://flipdot.org/blog/|flipdot]] Kassel, http://vimeo.com/99262516 
 +    * 2 x Hackerspace Budapest
  
-Wenn error-flag gesetzt, bringt ein read vom +am 31c3 rausgegeben von Gigo an ccczh 
-dataport den errorcode +    * 2 x [[https://www.ccczh.ch|CCC Zürich]]   
-wenn error-flag nicht gesetzt, bringt read vom  +    * 2 x [[http://bastli.ch|Bastli]] ETH Zürich daraus wurde unsere [[http://bastli.ch/uploads/coffeedot.jpg|Coffeedot-Anzeige]] zur [[http://bastli.ch/uploads/coffedot-machine.jpg|Studenten-Kaffeemaschine]]! 
-data port, den zuletzt mit addresse selektierten +    * 2 x [[http://zurich.fablab.ch|Fablab Zürich]] 
-ram_inhalt.+    * 2 x [[http://coredump.ch|coredump]]
  
 +=== Requests
  
-Man kann im Config-Register 2 Register unterbringen,  +Wir haben noch ca. 11 Panels zu vergebenHackerspaces werden bevorzugt. Die Plan-Spalte wird nur von Mitgliedern des Fliptdot-Vergabe-Kommitees geändert
-wenn Register nur lesbar oder nur schreibbar sind, wird +
-je nach richtung das Register selektiert.+
  
 +^ Angefragt  ^ Plan                                ^ Hackerspace/Person                                     ^ Transport                                   ^ Kommentar                                                                                                  ^
 +| 1 defektes | -                                   | com ]aet[ flipdot.org                                  | auf 32c3 übergeben                          | Haben 2, aber defekte Pixel, deswegen Ersatz aus defektem Panel                                            |
 +| 2          | 1                                   | Attraktor Hamburg via mc.fly                                                                       | Haben schon 2 (siehe oben)                                                                                 |
 +| 4          | 2                                   | [[https://​stratum0.org|Stratum 0]] Braunschweig                                                   | als Twitter/IRC/...-Wall fürs Easterheg                                                                    |
 +| 1 oder 2   | 0                                   | Philip Dusl                                            | Abholen @ muCCC                                                                                                                                        |
 +| 4          | 2                                   | [[http://lug-hgw.de/|LUG Greifswald]]                  | auf 31c3 übergeben                          | Außenwerbung / Statusanzeige / Termine                                                                     |
 +|            | 2                                   | www.hackerspace-bielefeld.de                                                                                                                                                                                  |
 +| 2          |                                     | [[http://hackerspace-bamberg.de|Hackerspace Bamberg]]  |                                             | Würden gerne unsere Fenster mit schönen interaktiven Krams dekorieren                                      |
 +| 2-4        |                                     | daniel domscheit-berg / havel:lab                      | Abholung, Uebergabe auf Veranstaltung, etc  | Wuerden einen hacker/makerspace im Aufbau gern mit idealerweise 2x2 Displays versorgen, fuer Auge und Ohr  |
 +| 4        |                                     | FabLab Nürnberg: charlie ]ät[ fabfolk ]dod[ com                      | Abholung, Uebergabe auf Veranstaltung, etc  | Statusanzeige, Twitterwall und Veranstaltungsshowcase  |
 +^            ^ ~~=sum(range(1,0,col(),row()-1))~~  ^                                                                                                                                                                                                           Summe |||
  
-Also haben wir eine Address-Select-Leitung  
-und eine 8-bit-Datenleitung fuer den hackerport 
  
-Bedeutung der Kommandos: +Sonstige 
-Config-Register: +    x Marian Kleineberg -> Jan kümmert sich
-Bit0 invert: invertiert den bildschirmspeicher. Zusammen mit Redraw zum Blinken und Oelverteilen :-)  /W 1=Invert +
-BIT1 redraw: Schiebt den Bildschirmspeicher raus bei jedem uebergang 0->+
-BIT2 speed: 0=slow, 1=fast, Speed fuer schieberegister /W +
-BIT3 error_flag (irgend ein error ist da) /R  error_clear /W +
-BIT4 ADDRESS_STROBE fuer Addresse_Highbyte wird aus Inhalt, der im Register an Addresse 0 liegt, gesetzt +
-BIT5 ADDRESS_STROBE fuer Communikations-Register an Addresse0 -> Addresse_Lowbyte wird aus Inhalt, der im Register an Addresse 0 liegt, gesetzt +
-BIT6 DATA_STROBE fuer Communikations-Register an Addresse0 -> Daten werden in zuvor selektierte Addresse  +
-BIT7 TOGGLE_FRAMEBUFFER ->1=Higher Buffer wird angezeigt, lower kann gefuellt, gelesen werden. /W +
-  +
-Redraw: entweder 3xToggeln Bit 7 oder Bit1 toggeln, +
-je nach Erfahrungen mit dem Schieberegisterkram. +
-Wir koennen auch den Redraw unabhaengig vom Buffer-Select BIT7 +
-machen, sodass man mit Bufferselect ein Redraw befehlen muss, wenn man rausschreiben will. +
-So koennte man evtl. auch den Aktuellen Puffer manipulieren, um einen Blink-Cursor zu machen. +
-Intelligente Ansteuerung nach "Was hat sich geaendert" werden die Schieberigister nicht koennen oder? +
-Wenn ja koennte man die Elemente einzeln an das FPGA machen und so z.B. auch nur das sich geaenderte +
-Element updaten. I/Os haben FPGAs genug :-)+
  
  
-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/Datenbus, r/W, da wars schon. 
  
-Asynchrones Reset und Clock versteht sich fuer das ganze Design von selbst.+== Archiv
  
-   +* [[https://wiki.muc.ccc.de/flipdot:start?rev=1385812570#deprecated_krobin_und_sepi_s_vorschlag|krobin_und_sepi_s_vorschlag]]
-Takt mit beliebigem Quarz z.B14.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 "Festplatte" an den IDE/ISA-Bus haengen, 
-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. SPI waere aber schon cool wegen Router-Recycling. 
-Hab mal fuer ein MIL-Projekt SPI per LVDS angesteuert, ist sicher fuer einige Meter ok. 
-  
-Vorteil der FPGA-Loesung ist, dass das SW-Timing voellig egal ist, denn das FPGA kuemmert sich um das Geschiebe und das Timing 
-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) 
  
-====== Krobin und Sepi's Vorschlag ====== +== Live interaction at rc3
-======= BOM ======= +
-* uC: ATMEGA162 (~3-5€ für 100, 1 Stück) +
-* ethernet: ENC28J60 (~3€ ab 1 Stück) +
-* ethernet buchse mit magnetics: ~2€ / Stück +
-* Step-down converter LM2675-3.3: 2€ / 100 Stück oder 4€ einzeln +
-* total/board min 11€ +
-* total: 200*11€ = 2200€+
  
-Da noch platinen hergestellt werden müssten und ethernetkabel  +See the flipdot in our rc3.world assembly in the couch area or at [[https://webex.muc.ccc.de/rc3lounge|RC3 lounge]] via Jitsi.
-======= Modulcontroller ======= +
-Jedes Modul bekommt einen ModulcontrollerEr ist mit einem AVR mit SPI bestückt. Desweiteren hat er einen [[http://ww1.microchip.com/downloads/en/DeviceDoc/39662e.pdf|ENC28J60]] SPI Ethernet controller an Bord. Zusätzlich braucht die Platine noch diverse Widerstände, Kondensatoren, zwei Quarze, zwei Linearspannungsregeler, zwei Quarze und eine RJ45-Buchse mit Magnetics. Als Treiber für den Ethernet-MAC kommt https://code.google.com/p/enc28j60-avr/ zum Einsatz. Ein Modulkontroller sollte nicht mehr als 10€ kosten (Könnte schwierig werden).+
  
-======= Displaycontroller ======= +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.
-Alle Module werden über eien Hub mit einem Raspberry PI oder anderem Linux Rechner verbundenAuf dem Raspi läuft ein eigener [[http://linuxconsole.sourceforge.net/fbdev/HOWTO/index.html|Framebuffertreiber]], der über Ethernet mit den Modulen spricht. Mehrere Framebuffer können konfiguriert werden und somit mehrere logische Flipdotanzeigen separat treiben. Multicast/Broadcast wäre auch möglich. Die MAC-Adressen der Module werden aus der Geometrie & einer Startadresse berechnet. Die Geometrie kann man bestimmt über Parameter bei der Framebufferinitialisierung konfigurieren.+
  
-======= Protokoll ======= +There are a few examples in our [[https://github.com/muccc/flipdots/tree/master/scripts|flipdot git]] but they need some tweaking for the resolution and the destination host.
-Module bekommen ein ganzes Bild (16*20 = 320 Pixel ~ 40Byte) pro Ethernet frame übertragenMan könnte auch eine Art Diff übertragen um höhere Framerates zu erlauben.+
  
-======= Warum? ======= +For a quick start try out [[https://pla.y.nu/flipdot-gameoflife.tar|this archive]] containing an adapted version of the game of life script. Beware: it needs python2. Example use: python2 gameoflife.py random
-Framebuffer hat den Vorteil dass man sehr viel Inhalt dafür hatMplayer, X11, eigenes Zeug, Konsole, SDL, etcEthernet ist gut weil die Verkabelung einfach ist, weil man Switches benutzen kann, weil die Ansteuerung einfach ist, evenutell später auf UDP/IP umsteigen kann, es multicast und broadcast kann, es grosse Reichweiten hat, zuverlässig ist, einfach zu debuggen ist, standard ist. +
-AVR hat den Vorteil einer guten freien Toolchain, relative niedrigen Preises, genügender Performance.+
  
-======= Stromaufnahme der Komponenten ====== +Unfortunately so far the animations won't stop when you send data (unlike our [[https://wiki.muc.ccc.de/acab|ACAB]]), so depending on the shown animations your frames interleave with the current display or are almost invisible... We are working on that.
-  * Atmega core 4MHz@3V = 5mA +
-  * I/O Pin = max 40mA +
-  * ENC28J60 TX = 180mA +
-  * Total ~ 500mA+
  
-Also wären 1A@3.3V ganz nett 
  • flipdot/start.1372622802.txt.gz
  • Last modified: 2021/04/18 12:32
  • (external edit)