Prof. J. Walter - Informationstechnik, Mikrocomputertechnik, Digitale Medien Softwaredoku
Hochschule Karlsruhe Logo Informationstechnik
MQTT-Test (Swimming Pixel)
YouTube:
Zwischenpräsentation
Endpräsentation
Sommersemester 2021
Jannik Lassen (laja1024)
Johannes Neckel (nejo1017)

Software Dokumentation

1. Grafische Benutzeroberfläche

Die Steuerung des Systems erfolgt über eine Website wie sie in den folgenden Abbildungen zu sehen ist. Diese wurde von der Gruppe Launchpad-Lightshow programmiert. Diese Website wird auf dem Panasonic Notebook gehostet.


Abb.1: Lightshow Launchpad Web-App

In Abb. 1 ist die Website dargestellt, welche über Node-Red erzeugt wurde. Im Modus "Single Control" (Auswahl: siehe Abb. 2) kann auf der linken Seite die Farbe ausgewählt werden, mit welcher dann, per klick auf die entsprechende Kachel, einer der 16 Pixel aufleuchtet.


Abb. 2: Modus-Auswahl

In Abb. 2 Sieht man das ausgeklappte drop-down Menü zur Modusauswahl, mit einem klick auf Lightshow 1, 2 oder 3, wird eine Message an die ESP32 der Swimming Pixel gesendet, welche diese in die entsprechende Lightshow-Funktion bringt.

2. C/C++ Programm auf den ESP's

Die Arduino Programme für die Microcontroller wurden von dieser Gruppe erstellt.

Um das System mobil mit der Akkubetriebenen Fritzbox zu verwenden, muss der code auf die neuen Routerdaten angepasst werden, siehe Abb. 3:


Abb. 3: Router ssid und Schlüssel sowie IP-Adresse des MQTT-Servers (main.cpp)

Bei einem Test am Haydnplatz waren die Pixel anfangs sehr dunkel und wurden im Laufe des Tests plötzlich hell, es stellte sich bei nachträglicher analyse des codes heraus, dass die Anfangshelligkeit zu niedrig gesetzt wurde, welche sich allerdings innerhalb der Lightshow 3 ändert. Der Code-Abschnitt in Abb. 4 wurde angepasst um das Problem zu beheben. Die Brightness wurde von 5 auf 250 (0 bis 255) gesetzt.


Abb. 4: setup der Helligkeit

Aufrund der verschiedenen Lightshows hat jeder der 16 Pixel eine eigene .h-Datei die von der main aufgerufen wird. Um für den Upload lediglich den namen des includes ändern zu müssen.

zum Beispiel von:
#include "pixel_1_1.h"
zu
#include "pixel_1_2.h"

Somit können die Pixel schnell nacheinander mit dem code bespielt werden.
Allerdings sind änderungen die jeden Pixel betreffen mühselig umzusetzen, da jeder der 16 codes angepasst werden muss. Um dies zum Beispiel bei der Verwendung eines anderen Routers oder eines anderen MQTT-Servers zu umgehen, wurden diese Variablen Global in der main.cpp definiert und innerhalb der einzelnen .h-Dateien mit "extern" bekannt gemacht.


Abb. 5: Router ssid und Schlüssel sowie IP-Adresse des MQTT-Servers (pixel_N_M.h)

Einige Pixel waren von den vorgängergruppen noch mit 16-LED-Ringen anstelle der 8x8-LED-Matrizen ausgestattet, dies muss im code mit der Variable LED_COUNT angepasst werden (wert: 64 für die 8x8-LED-Matrizen). Außerdem werden die Digital-Inputs der Matrizen mit dem GPIO-5 des Microcontrollers verbunden, dies ist auch in jedem code mit LED_PIN angepasst worden. (siehe Abb. 6)


Abb. 6: Einstellungen für die Anzahl der LEDs pro Pixel und die Pin-Nummer



  Mit Unterstützung von Prof. J. Walter Sommersemester 2021