Led Board: Unterschied zwischen den Versionen

K (→‎Server: typo :))
Zeile 89: Zeile 89:
 
Die Daten werden per UART IRQ empfangen. Die Daten werden dann in den Buffer geschrieben. Die kurze Unterbrechung durch den Interrupt ist nicht sichtbar.
 
Die Daten werden per UART IRQ empfangen. Die Daten werden dann in den Buffer geschrieben. Die kurze Unterbrechung durch den Interrupt ist nicht sichtbar.
  
=== Server ===
+
=== Server: LedLoard ===
 
/* TODO */
 
/* TODO */
 +
 
=== Kommunikation ===
 
=== Kommunikation ===
 
==== Server <-> Firmware ====
 
==== Server <-> Firmware ====

Version vom 27. November 2012, 01:50 Uhr

Crystal Clear action run.png
Ledboard

Status: beta

Projekt img ledboard.jpg
Beschreibung LED-Board mit 1536 roten LEDs
Autor: krisha architekt schinken
Version 0.8
PayPal Spenden für Led Board

Idee

  • API zum Ansteuern
  • IRC Ansteuerung
    • Letzte Nachrichten wiedergeben
    • Befehle zur direkten Steuerung
  • Games
    • Quiz
    • Hangman
    • Ping-Pong
    • Snake
    • Pacman
  • Blinkenlights
  • Micro-Qr-Codes

Grafiken auf PC generieren, dadurch keine Probleme mit Codegröße und mehr Möglichkeiten

Hardware

Das Ledboard entspringt einem kommerziellem Produkt bei welchem die Ansteuerung entfernt und durch eine eigene Platine ersetzt wurde. Dadurch war es uns möglich eine eigene Firmware nach unseren Wünschen zu schreiben.

Das Ledboard besteht aus 1536 LEDs, die zu 16 Zeilen mit jeweils 96 Spalten angeordnet sind. Der Controller wird über einen Wannenstecker angeschlossen. Es lassen sich weitere Ledboards über Wannenstecker seriell verbinden. Die Hardware kann jeweils nur eine Zeile anzeigen, was bedeutet, dass wir die 16 Zeilen zeitlich multiplexen mussten. Die Bits werden mit Shiftregistern durch eine Zeile geschoben, per Signal gespeichert und per Signal ausgegeben

Folgende Signale zur Ansteuerung sind vorhanden:

Bezeichnung kurz Bezeichnung lang Funktion
R0 Red aktuelles rotes Bit
G0 Green Unused (missing bondwires)
HE FET enable FETs einschalten (komplettes Board an/aus)
STO Store Speichersignal (Speichern der Bits im Schieberegister)
STR Strobe Anzeigesignal (LEDs an)
CLK Clock Bitrate (Bei jedem Clocksignal wird R0 übernommen und weitergeschoben)
H0-H3 Lines Zeilenmultiplexing

Gehäuse/Kabel

Die gelöteten Verbindungen auf der PCB sorgen immer mal wieder für Probleme. Das Board wurde auf eine MDF-Platte geschraubt, um Verwindungen zu verhindern, die diese Probleme verursachen können. Die MDF-Platte konnte dann auch ohne Probleme an der Wand befestigt werden. Die Steckleisten zum Flashen und für die serielle Kommunikation wurden mit Heißkleber am Board befestigt. Auch hier hatten sich die Drähte immer mal gelöst.

Software

/* TODO Link to github */

Firmware

Um einen teilweisen Bildaufbau zu vermeiden wurde ein Double Buffering verwendet. Geschrieben wird in den Backbuffer, während der Frontbuffer angezeigt wird.

Grundlegend funktioniert der Code so:

  1. Zeile auswählen
  2. 12*8 Bits shiften (mit Clock)
  3. Anzeige aktivieren
  4. Delay
  5. Anzeige deaktivieren
  6. goto 1

Die Daten werden per UART IRQ empfangen. Die Daten werden dann in den Buffer geschrieben. Die kurze Unterbrechung durch den Interrupt ist nicht sichtbar.

Server: LedLoard

/* TODO */

Kommunikation

Server <-> Firmware

/* TODO */

Client <-> Server

/* TODO */


Erweiterungen

Für das LED Board existieren verschiedene Tools, um eine Ausgabe auf das LED Board zu ermöglichen. Als Master fungiert der LedLoard, der die darzustellenden Daten per Socket annimmt. Hier existieren auch verschiedene Prioritäten, um z.B. Darstellungen für wichtigere Nachrichten zu unterbrechen.


Game of Life

Implementierung von Conway's Game of Life für das LED Board. Die Kanten des LED-Boards bilden eine Ellipse. Wikipedia: http://de.wikipedia.org/wiki/Game_of_Life

gif2led

  • Sprache: Python
  • Libraries: PIL (python image library)
  • Code: GitHub

Darstellung von GIF-Animationen auf dem LED-Board. Das Script verwendet zum umrechnen der GIFs die PIL - Python Imaging Library. Die Animationen werden für die Darstellung skaliert und gecroppt, wobei die Ratio immer beibehalten wird.

Beispiel:

  python gif2ledboard.py ~/Pictures/gifs/NyanCat.gif

text2led

  • Sprache: Python
  • Libraries: PIL
  • Code: GitHub

Ermöglicht die Darstellung von scrollenden Text auf dem LED-Board anhand einer TrueType-Schriftart.

twitter2led

Sucht auf Twitter nach HashTags und gibt neue Tweets über die text2led-Library am LED-Board aus.

ledclock

Eine Nachbildung der Google I/O Countdown Clock. Zur realisierung wurde pygame verwendet.