71 VIEWS

DIY BusyLight mit ESP32-PICO und JavaFx

18.06.2021

Im Rahmen meiner Ausbildung habe ich als Projekt eine kleine Bastelei umgesetzt. Es handelt sich dabei um ein DIY Busylight, also um eine Statusanzeige für die Verfügbarkeit wie in MS Teams, nur als Hardware am Arbeitsplatz. Dieses Projekt wollte ich hier mal kurz vorstellen.

Komponenten

Das Projekt splittet sich in zwei Teile auf:

  1. Die physikalische Statusanzeige (Mikrocontroller + Kabel)
  2. Die Software (Firmware des Mikrocontrollers und Konfigurationssoftware)

Hier noch eine kleine Grafik, wie die Technologien zusammenhängen:

 

Grafik Technologien

Physikalische Statusanzeige

Zur Umsetzung des Projekts habe ich ein Entwicklungsboard mit einem Mikrocontroller verwendet. Um genau zu sein, habe ich das Board namens „ATOM Matrix“ von M5Stack verwendet (Link zur Herstellerseite).

Das Herzstück des Boards ist ein ESP32-PICO. Zusätzlich ist eine 5x5 Pixel große RGB-LED-Matrix unter dem Acryldisplay verbaut, auf welcher der Status angezeigt werden soll. Die WS2812 LEDs (NeoPixel) lassen sich einzeln adressieren. Außerdem lässt sich das Acryldisplay drücken, da sich darunter ein Druckschalter versteckt.

Programmiert wird das Board über ein USB Type-C Kabel.

M5Stack ATOM Matrix

Software

Die Firmware des Mikrocontrollers habe ich in C++ mit der Arduino Bibliothek geschrieben. Als kleine Hilfe für den Start bietet der Hersteller M5Stack sogar eine kleine Bibliothek für sein Board an, mit der man alle eingebauten Sensoren usw. bequem ansteuern kann. Zur Entwicklung habe ich Visual Studio Code mit dem Plug-in PlatformIO verwendet.

Der Desktop Client wurde in Java mit JavaFx als GUI Framework geschrieben. Dieser kommuniziert mittels eines eigens entwickelten Protokolls mit dem Controller. Dafür habe ich ein eigenes Protokoll entworfen. Um die User Experience zu verbessern, ist der Client mit MS Teams verbunden. Hierfür verwendet der Client die Graph-API von Microsoft. Natürlich muss man sich bei der Graph-API erst einmal authentifizieren. Da nicht jeder ein Microsoftkonto besitzt und vielleicht auch von dem MS-Teams-Verfügbarkeitsstatus abweichen möchte, besteht natürlich trotzdem die Möglichkeit der manuellen Konfiguration der angezeigten Farbe.


Protokoll

Um eine Kommunikation mit dem Mikrocontroller zu gewährleisten, habe ich ein kleines Protokoll entworfen. Nichts kompliziertes, nur eben eine Definition davon, welche binäre Zahl bei der Übertragung, was zu bedeuten hat. Zum Beispiel bedeutet eine 0x00, dass ich ein Lebenssignal vom Controller erhalten will, welches eine 0x01 ist.

Schwierigkeiten

Wie in jedem Projekt gibt es Hürden, die während der Umsetzung auftauchen.

Programmieren des Controllers

M5Stack gibt an, man bräuchte für den „ATOM Matrix“ keine zusätzlichen Treiber. Leider musste ich auf meinem System doch noch die CP210x Treiber installieren, um den Controller flashen zu können. Bei einem Kollegen war das nicht von Nöten, dieser ist sich aber auch nicht mehr sicher, ob er diesen vielleicht schon installiert hatte.

Teamsanbindung

Microsoft hat zwar eine sehr gute Dokumentation und einen tollen Quickstart Guide, jedoch waren die Rechte, die in der Beispielanwendung benötigt waren, in unserer Azure AD deaktiviert. So war es schwer, die Anwendung zum Laufen zu bekommen.

Ausblick

Den meisten Entwicklern werden wahrscheinlich doch einige Anwendungszwecke für so eine Statusanzeige einfallen. Ich wollte nur noch mal drei Ideen aufzeigen, wo sich das noch hin entwickeln kann.

Das (meiner Meinung nach) offensichtlichste zuerst: Da im Board ein ESP32-PICO verbaut ist, könnte man statt über die serielle Schnittstelle übers Kabel auch über das Internet mit W-LAN oder auch über Bluetooth die Daten übertragen.

Was mir noch eingefallen ist: Man könnte statt den Verfügbarkeitsstatus auch den Buildstatus einer CI/CD Pipeline auf Jenkins oder Gitlab CI/CD anzeigen.

Auch könnte man einen anderen Formfaktor anstreben. Hier zwei Beispiele:

Kleinerer Formfaktor zu
Kleinerer Formfaktor offen
Größerer Formfaktor zu
Größerer Formfaktor offen
Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*Pflichtfelder

*