LED-Laufschrift fürs Vereinsheim: Unterschied zwischen den Versionen

Zur Navigation springen Zur Suche springen
→‎Lumino-intern: Links zur Doku aktualisiert
(→‎Lumino-intern: Links zur Doku aktualisiert)
 
(16 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
* + evtl. LED-Matrix als Leuchtreklame
* LUMINO als Anzeige für das aktuelle Lied aus dem MPD
* LUMINO zeigt den Song, scrollt zu lange Zeilen, zeigt eine Fortschrittsanzeige an und zeigt den StausStatus (Play, Pause oder Stop) an
* LUMINO hängt gut sichtbar [[Benutzer:Juhe]]
 
 
* [[Benutzer:Cfr34x]]
* [[Benutzer:Esclear|esclear]]
* [[Benutzer:X5444]]
* [[Benutzer:Snyke]]
Im Lumino befinden sich ein STM32F4Discovery, das die 5 LED-Panels ansteuert sowie ein Raspberry Pi, das die Funktion eines Display-Servers übernimmt und Zeichenfunktionen über das Netzwerk zur Verfügung stellt.
 
Das Lumino besteht aus 5 LED-Panels, auf denen sich jeweils 32x24 LEDs befinden. Diese sind wiederum in Blöcken von 4x8 LEDs organisiert, wobei jeder Block von einem Treiberbaustein angesteuert wird. Innerhalb dieser 4x8-Blöcke ist die Anordnung der LEDs willkürlich gewählt, allerdings sind alle Blöcke gleich ([https://rhodecodegithub.bytewerk.orgcom/Bytewerk/LED-SchildLumino/filesblob/master/Dokumentation/Text/mapping.txt Dokumentation zum LED-Mapping]). Die Zuordnung eines Bits aus dem Framebuffer auf die richtige LED wird durch das STM32F4Discovery vorgenommen.
 
Die Kommunikation des Raspberry Pis mit dem STM32F4Discovery erfolgt über [https://rhodecodegithub.bytewerk.orgcom/Bytewerk/LED-SchildLumino/filesblob/master/Dokumentation/Text/UART-Protokoll.txt UART]. Es werden grundsätzlich vollständige Frames übertragen.
 
Auf dem Raspberry Pi läuft der Display-Server, der die Ansteuerung des Displays auf höherer Ebene ermöglicht. Dazu wartet er auf TCP-Port 12345 auf Befehle (siehe [https://rhodecodegithub.bytewerk.orgcom/Bytewerk/LED-SchildLumino/filesblob/master/Dokumentation/Text/API.txt API-Doku]). Zur vereinfachten Anzeige von Text wird ein zweizeiliger Textbereich („textarea“) zur Verfügung gestellt, der beliebig platziert werden kann. Ist der gesetzte Text zu groß für den Textbereich, wird automatisch gescrollt.
 
echo "on" | nc ledschild.bingo 65000
echo "off" | nc ledschild.bingo 65000
 
===Extern (Client-Skript)===
 
* Anzeige des MPD-Status (laufendes Lied, aktueller Fortschritt u.ä.)
* Begrüßung von Mitgliedern, die sich in das [http://mactracker.bingo/[NDATool]] eingetragen haben (dies hat Vorrang vor dem MPD-Status)
 
Dazu kommuniziert das Skript sowohl mit dem Music Player Daemon als auch dem MACTracker-Skript, das eine Liste der anwesenden Personen generiert. Kommt jemand neu hinzu, wird dieser 1 Minute lang begrüßt, ansonsten wird der aktuelle MPD-Status angezeigt.
 
Bei der Wiederinbetriebnahme zeigte sich, dass das Dateisystem auf dem Raspberry Pi die häufigen Resets während der Fehlersuche wohl nicht überstanden hatte und somit das System nicht mehr bootete. Es wurde also ein neues System auf Basis von Gentoo mit crossdev aufgebaut, welches nur-lesbar aus einem squashfs-Archiv geladen wird. Dadurch sind zukünftige Ausfälle des Dateisystems ausgeschlossen und die Bootzeit ist wesentlich geringer.
 
== Umbau im Oktober 2015 ==
 
Das Lumino braucht allgemein zu viel Strom fuer unsere Stromrechnung. Daher soll die Leuchteinheit erst eingeschalten werden, wenn sie benutzt wird.
Dazu wurde ein Relais in die 230V Versorgung des +3V Netzteils geschalten. Dieses wird erst eingeschalten, wenn der Raspberry Pi '''GPIO25''' auf High zieht.
 
Ausserdem wird der schalter an der Rueckseite des Geraets auf '''GPIO2''' eingelesen.
Dieser Schalter wird von einem Skript ausgewertet, welches das Schild erst einschaltet, wenn der Schalter seinen Zustand gegenüber dem Startzeitpunkt des Skripts geändert hat.
Das selbe Skript lauscht auch auf Port 65000, wo es die Kommandos `on` und `off` akzeptiert.
 
 
 
=== Aktueller Stand ===
$ sudo -s
# cd /home/bingo/chroots/gentoo
# ./init_chrootsetup_chroot.sh
# chroot . /bin/bash
(chroot) # source /etc/profile
installiert die erzeugten Binärpakete (nur die Laufzeitabhängigkeiten) unter /root/raspi-root. Das Flag -K ist sehr wichtig, da dies verhindert, dass Pakete aus den Quellen gebaut werden (das sollte nur in der Buildumgebung geschehen).
 
==== Probleme/ToDoInstallation des neuen rootfs ====
 
Sind initramfs.img und root.squashfs neu erstellt, können diese wie folgt auf das Lumino-Pi kopiert werden:
Hardware:
 
1. vor dem Kopieren der Dateien eine SSH-Sitzung zum Lumino-Pi öffnen, /boot schreibbar machen und """offen lassen""":
* 3,3V-Stromverteilungsboard muss weiter nach links verschoben werden, da die Kabel der linken Panele zu kurz sind
* Netzteil wird sehr heiß (auch ohne Volllast) → Lüfter nötig
 
user@client $ ssh root@ledschild.bingo
Software:
root@ledschild # mount -o remount,rw /boot
 
2. im Build-Chroot folgendes ausführen:
* Boot-Zeit zu lang
 
** Symptom: OpenRC steht lang bei „Caching service dependencies“
root@chroot # scp initramfs.img root.squashfs root@ledschild.bingo:/boot
** Mögliche Ursachen: Datei mit Abhängigkeiten fehlt, falsche Zeitstempel
 
** Mögliche Lösung: Root-Dateisystem nach dem Boot vom Pi ziehen, mit dem Original vergleichen und fehlende Dateien nachziehen, so dass diese beim Booten bereits vorhanden sind
3. Lumino-Pi neustarten:
** Alternativer Lösungsansatz:
 
*** Yocto-Linux verwenden --[[Benutzer:Sqozz|Sqozz]] ([[Benutzer Diskussion:Sqozz|Diskussion]]) 22:04, 5. Jul. 2015 (CEST)
Da das root-Dateisystem überschrieben wurde, kann das System nicht regulär neu gestartet werden. Daher wird SysRQ verwendet:
 
root@ledschild # sync
root@ledschild # mount -o remount,ro /boot
root@ledschild # echo 1 > /proc/sys/kernel/sysrq
root@ledschild # echo b > /proc/sysrq-trigger
<Broken Pipe ;-) >
 
Das Lumino-Pi sollte daraufhin mit dem neuen rootfs starten.
 
==== Probleme/ToDo ====
 
Software:
 
* [[Busanzeige|Bus-Schild]] <strike>fehlt komplett</strike> [[Benutzer:Coffee|coffee]] hat [[https://github.com/bytewerk/busschild ein neues Bus-Schild-Skript]], welches auch die Wettervorhersage und Freifunk-Statistiken anzeigen kann.
* Bus-Schild fehlt komplett
** Treiber für EdgePort-vierfach-USB-RS232-Adapter in Kernel einkompilieren
** Python und pyserial installieren (gewisse weitere Abhängigkeiten des Skripts (BeautifulSoup und requests) werden eventuell überflüssig)
 
[[Category:Projekt]]
359

Bearbeitungen

Navigationsmenü