Projekte

Ich habe im Laufe der Jahre viele verschiedene Dinge geschaffen. Manche nur zum Spaß, manche für einen bestimmten Zweck. Diejenigen, die ich gerne mit der Welt teilen möchte, sind unten aufgeführt.

Derzeit von anderen genutzte Projekte Link zu Überschrift

Diese werden momentan tatsächlich von anderen als mir selbst verwendet.

DMX-Board Link zu Überschrift

Im Rahmen des Studienmoduls “Mikrocontroller-Anwendungen” habe ich in Zusammenarbeit mit meinem Kommilitonen Tom Wahl dieses Board und die dazugehörige Software entwickelt. Technische Grundlage ist ein ESP32-Mikrocontroller von Espressif.

Ursprüngliches Ziel im Rahmen der Prüfungsleistung war es, eine einfache Aufnahme und Wiedergabe von Lichtprogrammen, also auf dem Eingang eingehenden Daten inklusive ihres Timings zu ermöglichen.

Nach Abschluss des Moduls wurde die Hardware dann auf Anfrage des Professors noch um GPIO-Klemmen erweitert. Ziel war es, die Platine als Anschauungs- und Versuchsobjekt in Lehrveranstaltungen nutzen zu können.

Mein Fokus bei diesem Projekt lag in der Software: Die als Prüfungsleistung eingereichte Software wurde direkt auf Grundlage des ESP-IDF entwickelt, ohne Verwendung des Arduino-Frameworks. Die Ansteuerung des DMX-Busses und der Bedienelemente (OLED-Display, Encoder) erfolgen über getrennte FreeRTOS-Tasks. So kann eine Priorisierung der Bedienung des DMX-Busses sichergestellt werden.

Zusätzlich erfolgt die Ansteuerung des DMX-Busses per DMA-Controller. Dies bietet sich an, da der DMX-Bus üblicherweise von einem zentralen Knoten (dessen Rolle wir hier übernehmen), dem Controller, bespielt wird. Eine DMX-Übertragung mit Daten für alle 512 Kanäle eines DMX-Unversiums benötigt ca. 22 ms. Geschieht dies nun mit der üblichen Framerate von 40 FPS, stellt man fest, dass der DMX-Bus fast durchgängig mit Daten bespielt wird. Da allerdings alle Daten bereits zu Beginn der Übertragung feststehen, wäre es ineffizient, diese unter Verwendung von CPU-Zeit durchzuführen.

Unter Verwendung von DMA kann der Mikrocontroller problemlos den DMX-Bus sowie alle andere zur Bedienung vorhandene Peripherie bedienen, wie im Screenshot des Logic Analyzers zu sehen ist.

Versuchsaufbau der Schaltung auf Breadboard. Der Arduino Uno im Oberen Teil diente vorübergehend als Logic Analyzer

Versuchsaufbau der Schaltung auf Breadboard. Der Arduino Uno im Oberen Teil diente vorübergehend als Logic Analyzer

Erste zum Test geschriebene Software zur Ansteuerung eines RGBW-Strahlers. M steht hierbei für Mode, S ist bei RGB-Ansteuerung (Mode 0) nicht relevanter Zusatzparameter.

Erste zum Test geschriebene Software zur Ansteuerung eines RGBW-Strahlers. M steht hierbei für Mode, S ist bei RGB-Ansteuerung (Mode 0) nicht relevanter Zusatzparameter.

Parallele Ansteuerung der verschiedenen Datenbusse. Oben: DMX

Parallele Ansteuerung der verschiedenen Datenbusse. Oben: DMX

Schaltung als einfache CNC-gefräste Platine

Schaltung als einfache CNC-gefräste Platine

Gefertigte Platinen

Gefertigte Platinen

KaraoQueue Link zu Überschrift

Ursprünglich kurz vor der der COVID-19-Pandemie zur Vereinfachung der Veranstaltungen entwickelt, und dann im späteren Verlauf dieser als Teil von Maßnahmen eingeführt, die es uns ermöglichen sollten, Karaoke-Abende wieder zu ermöglichen und gleichzeitig den Kontakt zwischen Menschen zu minimieren. Das Tool wird weiterhin vom Studentenklub StuK Leipzig verwendet, für den ich es geschrieben habe, während ich dort aktiv involviert war. Es erhält immer noch Fehlerkorrekturen von mir sowie gelegentliche Ergänzungen.

Die Gäste können den Liederkatalog durchstöbern (mit Vorschlägen für Lieder, die bei den vorherigen Veranstaltungen häufig gesungen wurden), die Metadaten der Lieder einsehen und sich für ihren Auftritt am Mikro eintragen. Der Moderator des Abends kann die Warteschlange einsehen und Einträge entweder annehmen oder ablehnen. Wenn ein Eintrag akzeptiert wird, wird er (anonym) zu einer Aufzeichnung der gespielten Songs der Veranstaltung sowie zu den Statistiken hinzugefügt, aus denen sich die Vorschläge ableiten.

Das Projekt ist in Python geschrieben und nutzt das Flask-Framework. Die Architektur ist als ältestes meiner überlebenden Projekte sehr simpel; zum Beispiel besteht das Frontend komplett aus handgeschriebenen Jinja-Templates, wobei alles (einschließlich handgeschriebenem JavaScript) inline enthalten ist. Als UI-Framework wird Bootstrap per statischer CSS/JS-Einbindung genutzt.

Auf der Backend-Seite wird eine MariaDB für die Datenspeicherung verwendet, und es können derzeit Katalog-CSV-Dateien im Format von Recisios KaraFun eingelesen werden. Wiedergabestatistiken können exportiert und importiert werden, funktionieren aber nur mit dem entsprechenden Katalog.

Screenshot der Hauptseite

Screenshot der Hauptseite

Ansicht der Metadaten eines Songs

Ansicht der Metadaten eines Songs

Suchansicht mit Vorschlägen

Suchansicht mit Vorschlägen

Liste der gespielten Songs des aktuellen Events

Liste der gespielten Songs des aktuellen Events

Quellcode auf GitHub
Von mir für den StuK Leipzig betriebene Instanz