Der Spagat: M5Stack TFCard mit Krypto-Modul und OLED

In einen vorhergehenden Artikel hatte ich ja den M5Stack Atom Lite selbst vorgestellt. Dort habe ich erklärt, dass er auf dem ESP32-PICO-D4 basiert und das Pinout beschrieben. Außerdem bin ich auf den Knopf, den I2C-Port, den SPI-Port, und die interne RGB-LED eingegangen.

Ich hatte erklärt, wie man den Atom Lite einrichtet und in der Arduino IDE programmiert und habe ein kleines Beispielprogramm zum austesten geschrieben.



Die eine Möglichkeit, den M5Stack Atom Lite mit Peripherie zu erweitern, nämlich über den unteren 9-Pin-Female-Header durch Draufstecken des Atom Lite auf ein Kit, hatte ich im Artikel Vorstellung des M5Stack Atomic TF-Card Moduls: SD-Kartenleser inkl. Atom Lite bereits erläutert.

Hier wird das SPI Interface und ein paar weitere IO-Pins weitergeleitet. Das, was der SD-Card-Reader benötigt. SPI ist schneller als I2C und der SD-Kartenleser soll möglichst schnell sein.

Dieser Bus ist aber nicht weiter durchgeschleift. Das heißt, man kann das M5Stack Atom Modul genau auf ein Kit stecken - bzw. wird es gleich so geliefert.


Die andere Möglichkeit ist es, über den 4-poligen I2C-Port Module zu verbinden. Das geschieht über ein 4-poliges, Grove-kompatibles Kabel, auf dessen beiden Ende ein weiblicher Stecker sitzt. So ein Kabel (in sehr kurz) wird mit der Unit mitgeliefert.

Nun habe ich dort zum Beispiel das ATECC608B-Kryptomodul angeschlossen. Damit ist auch dieses 4-polige I2C-Interface belegt. Denn auch hier ist der Port nicht durchgeschleift.

Dabei ist doch gerade ein Vorteil des I2C-Buses, das man daran bis zu 127 Geräte anschließen kann. Und nur wegen der beschränkten Interface-Architektur des M5Stack Atoms soll ich damit begnügen, nur ein Gerät am SPI-Bus und ein Gerät am I2C-Bus anzuschließen?

Was ist, wenn ich zusätzlich etwas anzeigen lassen will? Wenn ich zum Beispiel ein kleines OLED Display zusätzlich über I2C anschließen möchte? Das scheitert bei dieser Architektur leider daran, dass man nur ein I2C-Gerät anschließen kann.

Dabei gibt es doch auch von M5Stack selbst ein OLED an, allerdings mit derzeit 13,25€ (Stand November 2022) nicht gerade ein Schnäppchen verglichen mit einem nackten, aus Fernost importierten OLED. Das soll wieder über ein Grove-Kabel angeschlossen werden. Dumm halt nur, wenn der I2C-Port schon durch ein anderes Modul belegt ist.

Aber natürlich lasse ich mich nicht durch solche aufgezwungenen, eher mechanischen Beschneidungen einschränken.

Zerlegen und Zusammenfügen


Was wir tun wollen, ist den I2C-Bus vom Krypto-Modul weiterzuführen zu einem nackten OLED (also nicht von M5Stack). Und danach soll das OLED irgendwie am Gehäuse befestigt werden. Das Ganze soll wieder rückgängig gemacht werden können und möglichst kompakt bleiben. Die Kompaktheit ist ja für mich der große Vorteil vom M5Stack Atom-Design.

Zu allererst schrauben wir das Krypto-Modul auf und entdecken eine kleine Platine mit dem 8-poligen ATECC608B-Chip, einem magentafarbenen I2C-Stecker, einem - ich würde sagen - kleinen Spannungswandler oben links und etwas weiterem "Hühnerfutter".

Den Stecker will ich unangetastet lassen, der soll weiterhin die Verbindung zum Atom bewerkstelligen. Aber die Unit-ID wird vom Gehäuse befreit, so dass es in den Zwischenraum zwischen TFCard-Grundmodul und Atom Lite passt.

Das kurze Grove-Kabel kann so bleiben, wie es ist.

Auf die andere Seite der Unit-ID kommt ein bisschen Isolierband, damit es nirgends zu einem Kurzschluss kommt. Das sieht dann so aus:




Das Grove-Kabel geht - das Kit von vorne gesehen jetzt direkt unter dem Zusammensteckpunkt zwischen Atom Lite und TFCard-Untersatz nach hinten durch und ist durch in die Unit-Id eingesteckt.

So bleibt der Atom unangetastet und das Kabel kann nötigenfalls wieder entfernt werden, sollte der Atom mal einen anderen Einsatzzweck bekommen.

Da es etwas eng in dem Zwischenraum zugeht, gehen zwei Kabel links der Schraube und zwei Kabel rechts der Schraube entlang. Mit dem geteilten Kabel reicht der Platz gerade so.



Auf der Rückseite des nackten ID-Moduls sind die Lötpunkte des I2C-Steckers. Hier löten wir jetzt ein Flachbandkabel mit 4 Adern an, dass wir dann auf der anderen Seite nach hinten herausführen - dort, wo die Micro-SD-Karte eingesteckt wird.

Die Platine kommt dann von unten mit Klebeknete an die Oberseite des TF-Card-Gehäuse, in etwa dort wo die Abbildung mit dem blauen Pfeil ist, nur eben darunter.

Nun können wir das Flachbandkabel auf die richtige Länge kürzen und an dem OLED-I2C-Bus anlöten. Dann wird ein entsprechendes Gehäuse für das OLED designed und mit dem 3D-Drucker ausgedruckt, damit die Sache auch einigermaßen aussieht und vor Allem stabil und kompakt wird.

Das Ergebnis

Von der Seite sieht das Ergebnis dann so aus:




Der USB-Port und der Knopf sind noch frei erreichbar und bedienbar und rechts im schwarzen Gehäuse ist auf das TF-Card-Kit-Gehäuse das OLED geklebt - wieder trennbar mit Klebeknete.

Da das OLED empfindlich ist, ist es im Gehäuse ein wenig vertieft eingebaut und die Ränder sind geschützt. Natürlich muss man trotzdem noch etwas aufpassen, dass man das Display nicht verkratzt.



Das OLED lässt sich dann wie gewohnt programmieren. Natürlich beherrscht das OLED auch die Darstellung von Grafik.

Je nachdem, ob man den Atom-Lite-Knopf links oder rechts von Display bedienen will, kann man im Programm die Display-Darstellung um 180° drehen, also auf den Kopf stellen.

Nun habe ich eine kompakte Einheit, die über Display, SD-Kartenleser und Kryptomodul verfügt. Damit werde ich mir wohl als nächstes eine Anwendung programmieren, die ich über den Atom-Knopf und ein auf dem OLED angezeigten Menü steuere. Die Menü-Einträge kann man dann mit Kurzdruck auf den Taster durchschalten und mit Langdruck auswählen.


Damit kann ich dann zum Beispiel eine ausgewählte Größe an Zufallszahlen mit dem Kryptochip generieren und dann auf der SD-Karte zur Weiterverwendung auf dem PC benutzen. Selbst ein Server im internen Netzwerk, mit dem man Zufallszahlen über HTTPS abrufen kann, lässt sich mit dem ESP32 realisieren. Damit hätte ich dann meinen eigenen Zufallszahlen-Generator und -Server. Die echten Zufallszahlen vom Kryptochip sind sichertechnisch schon ein Plus gegenüber berechneter Pseudozufallszahlen mit dem PC. Weiterer Vorteil ist, dass sich auf dem Zufallszahlen generierenden Gerät nicht so leicht Malware oder Spyware einnisten kann wie auf einem PC, auf dem alle mögliche Software läuft. Dazu bräuchte man schon physischen Zugriff auf den Atom und müsste die Firmware umflashen.