Schild: Unterschied zwischen den Versionen

Zeile 68: Zeile 68:
 
===== Command line =====
 
===== Command line =====
 
Alle LEDs an: <code>perl -e 'print "\x7F\x7F\x7F"x126' | nc -u schild 10002</code>
 
Alle LEDs an: <code>perl -e 'print "\x7F\x7F\x7F"x126' | nc -u schild 10002</code>
 
  
 
Die folgenden Befehle werden in der Regel nicht benötigt, da die backspace API diese Aufgabe übernimmt.
 
Die folgenden Befehle werden in der Regel nicht benötigt, da die backspace API diese Aufgabe übernimmt.
 
  
 
Schild einschalten: <code>perl -e 'print "2"' | nc -u schild 10003</code>
 
Schild einschalten: <code>perl -e 'print "2"' | nc -u schild 10003</code>
Zeile 82: Zeile 80:
 
Some recorded [https://drive.google.com/folderview?id=0Bz_nHnqmhfJCbnhYclBZOFY5ajg&usp=sharing videos].
 
Some recorded [https://drive.google.com/folderview?id=0Bz_nHnqmhfJCbnhYclBZOFY5ajg&usp=sharing videos].
  
===== Sine Demo 2 =====
+
===== Sine 2 =====
github, desc
+
[https://github.com/krisha/backspace-sign/blob/master/clients/SignSineWave2.cs Sign 2] dreht eine doppelte Sinuswelle um das Schild und lässt dabei die Farben faden. Um einen sanften Übergang zu ermöglichen werden die LEDs in kleineren Schritten gedimmt, anstatt einfach den Sinus um komplette LEDs zu verschieben.
  
 
===== Warsow =====
 
===== Warsow =====
github, desc
+
Der [https://github.com/krisha/backspace-sign/blob/master/clients/Warsow.cs Warsow Client] lässt das Schild bei einem Kill im Deathmatch Mode von Warsow aufblitzen. Der praktische Nutzen ist an der geplanten aktuellen Position des Schildes aber natürlich nicht mehr gegeben (:
  
 
===== Up/Down row demo =====
 
===== Up/Down row demo =====
 
github, desc
 
github, desc

Version vom 22. Januar 2014, 05:37 Uhr

Crystal Clear action run.png
backspace Schild

Status: unbekannt

Backspace schild.jpg
Beschreibung beleuchtetes Außenschild mit unserem Logo
Autor: krisha
Version 0.8
PayPal Spenden für Schild

Ziel war es ein beleuchtetes Schild mit unserem Logo außen an den Vereinsräumen anzubringen.

Erlaubnisantrag

Im ersten Schritt mussten wir einen denkmalschutzrechtlichen Erlaubnisantrag für ein Schild kleiner als 1m² bei der Bauberatung der Stadt Bamberg einholen. Hierfür haben wir uns einen Lageplan beim Vermessungsamt besorgt und eine Skizze angefertigt.

Nachdem uns die Erlaubnis erteilt wurden ist, haben wir mit der Planung angefangen. Wir haben uns schließlich auf ein transparentes Schild mit dem Logo inklusive unserem Schriftzug geeinigt.

Herstellung

Schild

Schild.jpg

Wir wollten das Schild zuerst selbst mit unserer CNC-Fräse fräsen. Probleme bereitete hierbei aber die nierdige Schmelztemeperatur des Kunststoffes. Eine Kühlung wäre sehr aufwändig geworden und hätte auch den Erfolg nicht garantiert. Zudem hatten wir temporäre Probleme, dass die Fräse bei größeren Wegen manchmal hängen blieb. Das hätte eventuell dazu geführt, dass wir mehrere Plexiglasplatten benötigt hätten. Aus Kostengründen haben wir uns entschieden, das Schild fräsen zu lassen.

Das Schild wurde schließlich von Kunststoff- und Acrylglasvertrieb in Hallstadt gefertigt. Aufgrund der Beratung haben wir uns dann auch für EndLighten Plexiglas und einer zusätzlichen Folie entschieden. Das EndLighten Material hat Vorteile für die Beleuchtung und tagsüber ist die Folie gut zu sehen.

Rahmen

Der Rahmen wurde uns von (TODO) gesponsort und besteht aus Stahl und Edelstahl. Die Abwicklung, das Lackieren, das Einkleben und das Anbringen des Rahmens wurden von hallojoh übernommen.

Das Rahmen ist so gebaut, dass das Schild schwingen kann.

Kosten

Die vom Space und den Mitgliedern getragenen Kosten belaufen sich auf ca. 310€. Vielen Dank an die Sponsoren, die Mitglieder und für den Rabatt :)

Ansteuerung

Hardware

Raspberry Pi SPI connection (GND, CLK, MISO, MOSI)

Wir haben uns entschieden, dass das Schild mit addressierbaren RGB LEDs angesteuert werden soll. Hierfür haben wir in den USA bei Insomnia Lightning 3 Meter RGB Stripe mit dem Chip LPD8086 besorgt. Die Stripes sind angeblich IP67 wasserfest.

Für die Ansteuerung kamen verschiedene Systeme in Betracht:

  • Atmel XMEGA (AVR)
  • NXP LPC (ARM)
  • Raspberry Pi

Die Entscheidung viel nach einem kurzen Test auf den Raspberry Pi. Hätten wir einen Mikrocontroller eingesetzt, hätten wir eine Platine fertigen müssen und, da das Schild über Netzwerk gesteuert werden soll, einen weiteren Ethernetchip verbauen müssen. Zudem hätten wir hier einen UDP Stack benötigt, oder selbst einen entwerfen müssen.

Der Raspberry Pi unterstützt von Haus aus SPI und Ethernet. Aufgrund der Linuxbasis war es auch erheblich einfacher einen entsprechenden UDP Server aufzusetzen.

Während der Entwicklung war es möglich das Schild mit einem 20MHz Signal anzusteuern. Durch die Montage mussten allerdings die Daten- und Versorgungsleitungen auf 5m verlängert werden. Deshalb mussten wir auch die Frequenz auf 10MHz reduzieren. Zu beachten ist, dass der Raspberry Pi die Frequenz vermutlich auf festgelegte Frequenzen reduziert.

Software

Server

Hardwareansteuerung

Der Server ist in C geschrieben. Der Code ist auf github verfügbar.

Der Server (backspace hostname schild) erwartet ein UDP Paket auf Port 10001 mit LED_COUNT*3 Bytes. Jede LED hat 3 Bytes für die Farben ROT, GRÜN, BLAU (in dieser Reihenfolge). Die Bytes stehen für die Helligkeit und müssen einen Wert zwischen 0 bis 127 haben. Das MSB wird ignoriert, 0x80 entspricht also einer 0.

LED_COUNT entspricht bei unserem Schild 126.

Stream Multiplexer

Um mehrere Streams zu unterstützen wurde ein Multiplexer geschrieben. Dieser erlaubt jedem Stream eine gewisse Zeit anzuzeigen. Neue Clients werden sofort angezeigt, ansonsten werden die Streams im Round-Robin Verfahren durch gewechselt.

Der Multiplexer läuft auf Port 10002. Zusätzlich können die Streams über 10003 abgeschalten werden. Hierfür wird eine ASCII '0' gesendet, mit '1' wird ein schwaches statisches Licht eingeschalten und mit '2' werden die verbundenen Clients durchgeleitet.

Clients

Command line

Alle LEDs an: perl -e 'print "\x7F\x7F\x7F"x126' | nc -u schild 10002

Die folgenden Befehle werden in der Regel nicht benötigt, da die backspace API diese Aufgabe übernimmt.

Schild einschalten: perl -e 'print "2"' | nc -u schild 10003

Schild ausschalten: perl -e 'print "0"' | nc -u schild 10003

Sine Demo

sine.cs is a simple sample client written in C#. It is drawing a sine wave around the sign, controllable by key presses.

Some recorded videos.

Sine 2

Sign 2 dreht eine doppelte Sinuswelle um das Schild und lässt dabei die Farben faden. Um einen sanften Übergang zu ermöglichen werden die LEDs in kleineren Schritten gedimmt, anstatt einfach den Sinus um komplette LEDs zu verschieben.

Warsow

Der Warsow Client lässt das Schild bei einem Kill im Deathmatch Mode von Warsow aufblitzen. Der praktische Nutzen ist an der geplanten aktuellen Position des Schildes aber natürlich nicht mehr gegeben (:

Up/Down row demo

github, desc