Gerade wenn man eine Wasserkühlung hat, will man ja auch einige Werte im Auge behalten können. Zwar gibt es diverse Programme, mit denen man das auf dem Monitor anzeigen kann, ich wollte aber was, das ich ins Gehäuse einbauen kann, das man immer im Blick hat.
Erst mal habe ich geschaut, was es schon gibt. Da gibt es die Möglichkeit, per HDMI ein Display anzuschliessen, dass dann als zusätzlicher Monitor fungiert. Dann gibt es noch das hier: https://www.goverlay.com/content/lcdsysinfo2/. Es gibt 3,5"- und 2,8"-Displays sowie eine Software dazu. Man ist aber auf die Software des Herstellers angewiesen. Ein Aquaero würde auch gehen, ist aber vom Format her nicht immer gut unterzubringen, beim Display ist man scheinbar auf die vorgefertigten Bildschirme beschränkt und es kostet auch ganz schön. Zumal ich schon ein Aquaero 5 LT habe.
Also habe ich mir eine eigene Lösung ausgedacht. So sieht es aktuell aus:
Der Mikrocontroller ist ein ESP32, es gibt verschiedenen Möglichkeiten zur Programmierung: klassisch mit C/C++, Micropython oder UIFlow von m5Stack. Mit letzterem kann man es "zusammenklicken", ob es für dieses Projekt reichen würde, habe ich nicht probiert. Ich verwende das nur mal, um schnell was auszuprobieren, für dieses Projekt habe ich C/C++ verwendet. Als Entwicklungsumgebeung verwende ich PlatformIO, das ist um Welten besser als die ArduinoIDE.
Wie kommt man an die Daten? Das Schöne am ESP32 ist, dass er WLAN hat. Man kann damit recht einfach übers Netzwerk auf Daten zugreifen. Bereitgestellt werden die Daten über die Aquasuite über den Webexport. Dazu habe ich mir einen Webexport erstellt, der die gewünschten Sensoren enthält:
In der Aquasuite bekommt man dann die URLs für den Zugriff angezeigt. Es gibt verschiedene Varianten, die aber alle die gleichen Daten bereitstellen:
Interessant ist das unter "API Direktzugriff". Ich habe Circonus genommen, das stellt die Daten am einfachsten bereit, bei mir sieht das so aus:
Die Namen (=Keys im JSON) kann man in der Aquasuite (Webexport) anpassen. Man kann es auch einfach im Browser ausprobieren: Den Link im Browser aufrufen, es müsste ein JSON zurückkommen. Ein Nachteil ist, dass es eine Verzögerung von wenigen Sekunden gibt, bis die Werte aktualisiert werden.
Wie parst man nun JSON mit einem Mikrocontroller? ArduinoJSON geht sehr gut, super ist auch der Assistent, der einem bei der Erstellung des Codes hilft.
Die GUI ist mit lvgl erstellt, man könnte natürlich auch die Bibliothek von m5Stack (M5GFX) oder TFT_eSPI verwenden. lvgl ist einfach am Mächtigsten, man kann damit komplexe GUIs erstellen. Natürlich ist es etwas komplizierter, wer aber grundsätzlich schon mal eine GUI programmiert hat, dürfte da ganz gut zurechtkommen.
Man kann auch mehrere Bildschirme erstellen, muss sich dann nur überlegen, wie man das umschaltet. Man könnte die Aquasuite-Profile nutzen, d.h. das aktuelle Profil mit in den Webexport aufnehmen und dann entsprechend umschalten.
Zusatzdisplays
Als Erweiterung habe ich noch Zusatzdisplays vorgesehen. Es gibt von m5Stack fertige Module, einmal ein LCD und ein OLED. Die sind recht klein (48x24 bzw. 56x24) und haben ebenfalls Magneten. Gedacht ist dann, z.B. für CPU und Grafikkarte jeweils ein eigenes Display, das man dann auch in der Nähe der jeweiligen Komponente unterbringen kann. Man kann 3 Sensoren sinnvoll darstellen, ich habe bisher nur mal kurz getestet:
Das OLED ist einfarbig und man müsste ggf. aufpassen, dass es nicht einbrennt. Also am einfachsten invertieren oder die Position immer mal verändern. Wie empfindlich das Display ist, kann ich auch nicht sagen. Invertiert sieht jedenfalls nicht so toll aus:
Vielleicht einfach riskieren, so teuer ist es nicht..
Welche Geräte (m5Stack) gibt es und wo kann man sie kaufen? So viele Shops gibt es nicht. Ich habe bisher bei Distrelec, Berrybase und Tinytronics bestellt. Die Preise sind leicht unterschiedlich, das muss man dann vergleichen und den Versand mit einbeziehen.
Vom m5Stack Core gibt es verschiedene Varianten:
Das Display ist bei allen gleich: 2" mit 320x240. Hell genug ist es auch. Der wichtigste Unterschied sind die 3 Hardwaretasten der einfacheren Modelle, die haben auch keinen Touchscreen. Beim Core2 gibt es die 3 Tasten auch noch, die sind aber in den Touchscreen integriert und optisch unauffällig.
Es gibt noch ein Unterteil, dass Löcher für Lego Technic und 2 LED-Streifen (2 x 5 ARGB) enthält: M5Go Bottom bzw. M5Go Bottom2 für den Core2. Beim Fire und AWS ist so ein Teil auch schon dabei.
Zusatzdisplays
Es gibt einmal ein schwarz/weißes OLED mit 1,3" und 128x64. Das wird über I2C angesprochen, d.h. man benötigt noch einen Multiplexer, wenn man mehrere Displays betreiben will: PaHub bzw. PaHub2. Ich habe die erste Version da und mit einem Display hat es funktioniert. Das OLED wäre auch am preiswertesten, so ab ~12 EUR.
Dann gibt es noch ein LCD mit 1,14" und 240x135. Das LCD ist - neben dem farbigen Display - auch deshalb interessant, da es nicht einfach direkt über einen Controller angesteuert wird, sondern es ist ebenfalls ein ESP32 (Pico D4) verbaut hat, der I2C auf SPI für den Displaycontroller umsetzt. Das hat auch den Vorteil, dass man die I2C-Adresse ändern kann und keinen Multiplexer braucht. Und man könnte eine eigene Firmware mit komplett anderer Funktionalität aufspielen. Man benötigt dazu noch einen Adapter (ESP32 Downloader, nach "m5stack A105" suchen). Ob das Teil Standalone geht, müsste man probieren. Es wird aber vmtl. keine WLAN-Antenne eingebaut sein. Ich bestelle mir auf alle Fälle mal so ein Teil und schaue es mir an. Das habe ich nämlich noch nicht in der Hand gehabt, die Fotos sind mit einem M5StickC Plus entstanden, der aber das gleiche Display hat. Der wäre auch eine Möglichkeit, die Farbe ist aber nicht wirklich schön.
Das LCD kostet ab ~20 EUR, den M5StickC Plus bekommt man ab ~25 EUR.
Alternativen
Man muss natürlich nicht m5Stack verwenden, mit dem gleichen Code läuft das auch auf einem beliebigen ESP32 und - mit kleinen Anpassungen - einem passenden (von lvgl unterstütztem) Display. Vor allem das Display könnte ja durchaus größer sein. Mal zum Vergleich:
Als fertige Lösungen bieten sich an:
Oder:
https://www.lilygo.cc/products/t-display-s3 (1,9", wenn man wenig Platz hat)
https://www.makerfabs.com/esp32-s3-parallel-tft-with-touch-ili9488.html (schneller durch parallele Anbindung des Displays, für dieses Projekt aber nicht so relevant)
https://www.ebay.de/str/buydisplay/TFT-Display/_i.html?store_cat=30764039012 (große Auswahl an Displays)
https://esp32touchdown.com (etwas teurer, Versand aus Europa)
Erst mal habe ich geschaut, was es schon gibt. Da gibt es die Möglichkeit, per HDMI ein Display anzuschliessen, dass dann als zusätzlicher Monitor fungiert. Dann gibt es noch das hier: https://www.goverlay.com/content/lcdsysinfo2/. Es gibt 3,5"- und 2,8"-Displays sowie eine Software dazu. Man ist aber auf die Software des Herstellers angewiesen. Ein Aquaero würde auch gehen, ist aber vom Format her nicht immer gut unterzubringen, beim Display ist man scheinbar auf die vorgefertigten Bildschirme beschränkt und es kostet auch ganz schön. Zumal ich schon ein Aquaero 5 LT habe.
Also habe ich mir eine eigene Lösung ausgedacht. So sieht es aktuell aus:
Umsetzung (Übersicht)
Als Anzeige verwende ich den M5Stack Core2, den hatte ich eh da und schon damit gearbeitet. Und er hat schon ein Gehäuse und kann so einfach und optisch ansprechend im Gehäuse untergebracht werden. Ich habe den Winkel, der bei der D5 Next dabei war, genommen. Der Core2 hat Magnete, so kann man ihn einfach auf jede magnetische Fläche drauf setzen.Der Mikrocontroller ist ein ESP32, es gibt verschiedenen Möglichkeiten zur Programmierung: klassisch mit C/C++, Micropython oder UIFlow von m5Stack. Mit letzterem kann man es "zusammenklicken", ob es für dieses Projekt reichen würde, habe ich nicht probiert. Ich verwende das nur mal, um schnell was auszuprobieren, für dieses Projekt habe ich C/C++ verwendet. Als Entwicklungsumgebeung verwende ich PlatformIO, das ist um Welten besser als die ArduinoIDE.
Wie kommt man an die Daten? Das Schöne am ESP32 ist, dass er WLAN hat. Man kann damit recht einfach übers Netzwerk auf Daten zugreifen. Bereitgestellt werden die Daten über die Aquasuite über den Webexport. Dazu habe ich mir einen Webexport erstellt, der die gewünschten Sensoren enthält:
In der Aquasuite bekommt man dann die URLs für den Zugriff angezeigt. Es gibt verschiedene Varianten, die aber alle die gleichen Daten bereitstellen:
Interessant ist das unter "API Direktzugriff". Ich habe Circonus genommen, das stellt die Daten am einfachsten bereit, bei mir sieht das so aus:
JSON:
{
"CPU Temp": "37.9",
"Flow": "80.4",
"GPU Temp": "25.0",
"Power PSU": "130",
"Pump RPM": "2861",
"Water Temp": "19.2"
}
Die Namen (=Keys im JSON) kann man in der Aquasuite (Webexport) anpassen. Man kann es auch einfach im Browser ausprobieren: Den Link im Browser aufrufen, es müsste ein JSON zurückkommen. Ein Nachteil ist, dass es eine Verzögerung von wenigen Sekunden gibt, bis die Werte aktualisiert werden.
Wie parst man nun JSON mit einem Mikrocontroller? ArduinoJSON geht sehr gut, super ist auch der Assistent, der einem bei der Erstellung des Codes hilft.
Die GUI ist mit lvgl erstellt, man könnte natürlich auch die Bibliothek von m5Stack (M5GFX) oder TFT_eSPI verwenden. lvgl ist einfach am Mächtigsten, man kann damit komplexe GUIs erstellen. Natürlich ist es etwas komplizierter, wer aber grundsätzlich schon mal eine GUI programmiert hat, dürfte da ganz gut zurechtkommen.
Man kann auch mehrere Bildschirme erstellen, muss sich dann nur überlegen, wie man das umschaltet. Man könnte die Aquasuite-Profile nutzen, d.h. das aktuelle Profil mit in den Webexport aufnehmen und dann entsprechend umschalten.
Zusatzdisplays
Als Erweiterung habe ich noch Zusatzdisplays vorgesehen. Es gibt von m5Stack fertige Module, einmal ein LCD und ein OLED. Die sind recht klein (48x24 bzw. 56x24) und haben ebenfalls Magneten. Gedacht ist dann, z.B. für CPU und Grafikkarte jeweils ein eigenes Display, das man dann auch in der Nähe der jeweiligen Komponente unterbringen kann. Man kann 3 Sensoren sinnvoll darstellen, ich habe bisher nur mal kurz getestet:
Das OLED ist einfarbig und man müsste ggf. aufpassen, dass es nicht einbrennt. Also am einfachsten invertieren oder die Position immer mal verändern. Wie empfindlich das Display ist, kann ich auch nicht sagen. Invertiert sieht jedenfalls nicht so toll aus:
Vielleicht einfach riskieren, so teuer ist es nicht..
Hardware/Bezugsquellen
Warum überhaupt die m5Stack-Geräte? Ich benutze die schon länger, hatte also eh was da. Schön ist, dass man ein fertiges Gerät bekommt und nicht nur eine Platine, die man dann wieder irgendwie einbauen muss und das dann auch noch schön. Der Core ist auch recht klein (54 x 54 x 16 mm) und damit leicht unterzubringen.Welche Geräte (m5Stack) gibt es und wo kann man sie kaufen? So viele Shops gibt es nicht. Ich habe bisher bei Distrelec, Berrybase und Tinytronics bestellt. Die Preise sind leicht unterschiedlich, das muss man dann vergleichen und den Versand mit einbeziehen.
Vom m5Stack Core gibt es verschiedene Varianten:
- Core2
- Weißes Gehäuse
- Touschscreen
- 16 MB Flash/8MB PSRAM
- Core2 for AWS
- Prinzipiell wie Core2 aber andere Farbe
- Core Basic V2.6
- Schwarzes Gehäuse
- 16 MB Flash
- Core Fire
- Rotes Gehäuse
- 16 MB Flash/4 bzw. 8 MB PSRAM
- Core Gray
- Graues Gehäuse
- 4 bzw. 16 MB Flash
Code:
RAM: [ ] 2.6% (used 118048 bytes from 4521984 bytes)
Flash: [== ] 22.3% (used 1459885 bytes from 6553600 bytes)
Das Display ist bei allen gleich: 2" mit 320x240. Hell genug ist es auch. Der wichtigste Unterschied sind die 3 Hardwaretasten der einfacheren Modelle, die haben auch keinen Touchscreen. Beim Core2 gibt es die 3 Tasten auch noch, die sind aber in den Touchscreen integriert und optisch unauffällig.
Es gibt noch ein Unterteil, dass Löcher für Lego Technic und 2 LED-Streifen (2 x 5 ARGB) enthält: M5Go Bottom bzw. M5Go Bottom2 für den Core2. Beim Fire und AWS ist so ein Teil auch schon dabei.
Zusatzdisplays
Es gibt einmal ein schwarz/weißes OLED mit 1,3" und 128x64. Das wird über I2C angesprochen, d.h. man benötigt noch einen Multiplexer, wenn man mehrere Displays betreiben will: PaHub bzw. PaHub2. Ich habe die erste Version da und mit einem Display hat es funktioniert. Das OLED wäre auch am preiswertesten, so ab ~12 EUR.
Dann gibt es noch ein LCD mit 1,14" und 240x135. Das LCD ist - neben dem farbigen Display - auch deshalb interessant, da es nicht einfach direkt über einen Controller angesteuert wird, sondern es ist ebenfalls ein ESP32 (Pico D4) verbaut hat, der I2C auf SPI für den Displaycontroller umsetzt. Das hat auch den Vorteil, dass man die I2C-Adresse ändern kann und keinen Multiplexer braucht. Und man könnte eine eigene Firmware mit komplett anderer Funktionalität aufspielen. Man benötigt dazu noch einen Adapter (ESP32 Downloader, nach "m5stack A105" suchen). Ob das Teil Standalone geht, müsste man probieren. Es wird aber vmtl. keine WLAN-Antenne eingebaut sein. Ich bestelle mir auf alle Fälle mal so ein Teil und schaue es mir an. Das habe ich nämlich noch nicht in der Hand gehabt, die Fotos sind mit einem M5StickC Plus entstanden, der aber das gleiche Display hat. Der wäre auch eine Möglichkeit, die Farbe ist aber nicht wirklich schön.
Das LCD kostet ab ~20 EUR, den M5StickC Plus bekommt man ab ~25 EUR.
Alternativen
Man muss natürlich nicht m5Stack verwenden, mit dem gleichen Code läuft das auch auf einem beliebigen ESP32 und - mit kleinen Anpassungen - einem passenden (von lvgl unterstütztem) Display. Vor allem das Display könnte ja durchaus größer sein. Mal zum Vergleich:
- 2" 320x240
- 4.06cm × 3.05cm = 12.39cm² at 200 PPI
- 3,5" 480x320
- 7.4cm × 4.93cm = 36.48cm² at 164.83 PPI
Als fertige Lösungen bieten sich an:
- WT32-SC01 (Plus) - 32 €
- ESP32 und 3,5"-Display in einem, deshalb natürlich größer: 92 x 60 x 11 mm
- Zwei Versionen, ohne und mit Plus.
- Die neue Plus-Version hat ein Gehäuse und der USB-Anschluss ist versteckt, aber man muss über einen extra Anschluss das Programm aufspielen, USB ist nur zur Stromversorgung. Man braucht also noch einen USB-Seriell-Wandler mit 3,3V Logikpegel. Deshalb vielleicht doch eher die alte Version.
- Wio Terminal - ~41 €
- Kein ESP32, sondern ein SAMD51 als Mikrocontroller. WLAN ist aber auch dabei und das Display ist etwas größer (2,4"). Man kann aber vmtl. einen Großteil des Codes übernehmen. lvgl geht auf alle Fälle, fürs WLAN muss man den Code sicher etwas anpassen.
- LilyGO LILY Pi ESP32 - ~38 €
- Auch ein großes Display (3,5"), aber ein insgesamt recht großes Gehäuse (100 x 63 x 31 mm).
- Das Gehäuse sieht auf den Bildern/Videos auch eher preiswert aus, das fällt aber im Gehäuse dann vmtl. nicht mehr so auf.
Oder:
https://www.lilygo.cc/products/t-display-s3 (1,9", wenn man wenig Platz hat)
https://www.makerfabs.com/esp32-s3-parallel-tft-with-touch-ili9488.html (schneller durch parallele Anbindung des Displays, für dieses Projekt aber nicht so relevant)
https://www.ebay.de/str/buydisplay/TFT-Display/_i.html?store_cat=30764039012 (große Auswahl an Displays)
https://esp32touchdown.com (etwas teurer, Versand aus Europa)
Ausblick
Je nachdem, wie groß überhaupt das Interesse ist, wollte ich die Programmierung noch ausführlicher beschreiben. Wenn man nur andere Sensoren haben will, wäre am Code nicht viel zu ändern, das bekommt man auch als Nicht- bzw. Wenigprogrammierer hin Ich könnte auch mal probieren, ob man mit der portablen Installation von VS Code alle Extensions einbinden kann, dann könnte ich das fix und fertig bereitstellen und man kann direkt loslegen ohne groß was installieren oder konfigurieren zu müssen.Programmierung:
Entwicklungsumgebung einrichten: https://www.hardwareluxx.de/communi...use-selbst-programmiert.1332282/post-29747509
Zuletzt bearbeitet: