Steuerung der 8x8 LEDs mit ESP32 über MQTT
Wie zuvor schon erwähnt, werden die 8x8 LEDs direkt mit
einem ESP32-Mikrocontroller angesteuert. Dieser Mikrocontroller
arbeitet vor allem wie ein Zustandsautomat. Er verarbeitet 4
Hauptzustände:
Start, Setup, LED Routine und
Deep
Sleep.
LED Routine Zustand ist der
Aktivzustand, der die 8x8 LED Beleuchtung direkt ansteuert.
Dieser Zustand besteht aus 4 Subzustände, die in einer
Endloseschleife ablaufen:
Light Off, Text Generator, Tap To
Light und Lightshow.
Abbildung: Vereinfachte Zustanddiagramm der 8x8LEDs im ESP32
Microcontroller
Mit Hilfe der von der
Web-Applikation empfangenen Informationen mit den MQTT-Topics
"Command" können diese Zustände verändert oder miteinander
abgewechselt werden.
Darüber hinaus sendet die
Webanwendung auch die Parameter für den aktiven Zustand (Text
Generator, Tap To Light und Light Show) mit den entsprechenden
MQTT Topics, so dass die 8x8LEDs in mehreren Varianten leuchten
können.
Auswählen von spezifischem ESP Microcontroller
Da die Webanwendung und die 16 ESP32 nicht direkt
miteinander kommunizieren, kann man nicht direkt eine
Nachricht von der Web-Applikation senden, um einen
bestimmten Mikrocontroller zu steuern. Wie bereits erklärt,
abonnieren die 16 ESP32 die gleichen Topics, die von der
Web-Applikation veröffentlicht werden. D.h. alle Nachrichten
der Webanwendung werden an alle ESP32 weitergeleitet.
Abbildung: Beispiel der Anordnung von 16 ESP32 mit
8x8-LEDsUm trotzdem in der Lage zu sein,
bestimmte ESP32 über die Webanwendung zu steuern, wird das
Topics "ESP Select" verwendet.
In diesen Topics sendet
die Webanwendung ein Array mit 16 booleschen Werten.
Abbildung: Beispiel der Array mit boolschen Werten im
Topic "ESP Select"
Jeder ESP32 vergleicht dann
seine Position und den Wert in diesem Array. Wenn der ESP in
dieser Position den Wert "true" hat, sollte die Information
von der Web-Applikation ausgeführt werden. Andererseits,
wenn der ESP in dieser Position den Wert "false" hat, wird
die gesendete Nachricht ignoriert.