Gehäuse-Design und 3D-Druck mit OpenSCAD: Gehäuse für das Cheap Yellow Display (CYD)

Das Entwickler Board ESP32-2432S028, das ich in diesem Artikel vorstelle hat schon einen sperrigen Namen. Deshalb nennt es alle Welt "Cheap Yellow Display", oder kurz CYD. "Cheap" deshalb, weil man hier ein ESP32-Board samt Touchscreen-TFT-Display mit 320x240 Pixeln, SD-Kartenslot, RGB-LED, Speaker-Anschluss und weiteren Anschlüssen im Angebot aus China für unter 10 Euro bekommen kann. Und damit ein ziemliches Komplett-Paket für seine Projekte hat.

Aber das könnt ihr alles in meinen Artikeln in der ESP32-Sparte des Cool-Web nachlesen. Und auch eine Anleitung, wie man das Teil programmiert, gibt es da.

Darum soll es hier aber nicht gehen, denn hier sind wir in der 3D-Sektion. Heute soll es darum gehen, das CYD "einzukleiden", also ein Gehäuse aus dem 3D-Drucker zu lassen, damit das Board nicht ganz so nackt und ungeschützt ist und damit es besser in der Hand liegt.

Aber warum das Rad neu erfinden? Das Cheap Yellow Display erfreut sich großer Beliebtheit (kein Wunder bei dem Preis) und da hat doch sicher schon jemand was designt? Bei meiner Suche auf Thingiverse bin ich dann auch fündig geworden.


DE_Markus hat dort bereits ein Design veröffentlicht, das mir recht gut gefällt. Markus nennt es "Simple housing for Cheap Yellow Display (CYD) with USB-C". Das Design ist ein Remix des Designs 2.8inch ESP32 2432S028R von Leoruiz197, allerdings ist alles viel runder und sieht professioneller aus. Markus hat mit Fusion 360 designt und da sind Abrundungen ein leichtes.

Allerdings sind da Kleinigkeiten, die mir noch nicht hunderprozentig zusagen, so dass ich Markus Design selbst noch einmal anpasse, ein Remix vom Remix sozusagen.


Markus hat nur ein kleines ovales Loch in die (auf seiner Grafik) linke Seite des Gehäuses geschnitten, die gerade einmal so für den USB-C-Port ausreicht.

Wenn man sich aber jetzt das Board genauer anschaut, dann sieht man, dass es da darunter auch noch einen Micro-USB-Port gibt. Und den Anschluss darüber, die serielle Schnittstelle, will ich eigentlich auch zugänglich halten, um dort eventuell etwas anzuschließen.

Zu dem USB-Port muss man wissen, dass die alte Version des CYD noch kein USB-C Port hat, sondern nur einen Micro-USB-Port. Da ist beide Versionen habe und programmiere, benutze ich Micro-USB zum Programmieren. Deswegen möchte ich den Port natürlich auch auf dem neuen CYD 2USB zugänglich haben.

Dieses Loch ist also zu klein und muss erweitert werden.

Außerdem ist mir (natürlich nach dem Druck) aufgefallen, dass bei der alten Version (v1) des CYD der SD-Karten-Slot weiter nach rechts ragt und es super knapp ist und sehr hakelig, dort bei Gebrauch des Gehäuses von Markus eine SD-Karte auszuwerfen oder einzustecken. Den Schlitz will ich auch verbreitern.

Bearbeiten von STL-Vorlagen mit OpenSCAD

Mit
translate ( [0, 0, 0] ) { import("d:/3D-Druck/Markus_CYD_Simple_Case/markus_cyd_box_bottom.stl", convexity=3); }
können wir eine STL-Datei aus einem Verzeichnis laden. Dabei scheint es immer in der Mitte platziert zu werden, was aber nicht weiter schlimm ist.



Links das Original von Markus, rechts die bereits von mir geänderte Version.

Das geladene STL-Objekt können wir jetzt in OpenSCAD verändern. Zuerst füge ich etwas hinzu:
union() { translate ( [0, 0, 0] ) { import("d:/3D-Druck/Markus_CYD_Simple_Case/markus_cyd_box_bottom.stl", convexity=3); } // Loch flicken, weil USB-C Port zu tief translate ( [-46.2, -5, 3] ) { cube ( [2.6, 15, 10] ); } // schraublöcher nur dm 3.2 mm translate ( [-39.2, 21.2, 0] ) { cylinder (h=9, d=5.6, center=false); } translate ( [-39.2, -21.2, 0] ) { cylinder (h=9, d=5.6, center=false); } translate ( [39.2, 21.2, 0] ) { cylinder (h=9, d=5.6, center=false); } translate ( [39.2, -21.2, 0] ) { cylinder (h=9, d=5.6, center=false); } }
Denn ich will, dass die Löcher in den 4 Halterungen enger werden, so das M3-Schrauben darin etwas Halt finden. Das war ursprünglich "durchfallend" konzipiert. Hier hilft nur ausprobieren, wo genau die entsprechenden Zylinder platziert werden müssen, damit sie genau mittig zu denen im STL-Modell sind. Zum Glück ist die Berechnung mit F5 in OpenSCAD recht fix.

Außerdem muss der Auschnitt für die Port höher, damit mein Micro-USB-Stecker rein passt, der ist nämlich breiter als ein USB-C-Stecker. Dadurch entsteht ein Loch, dass wir mit einem Quader vorher flicken.

Nachdem das erledigt ist, kommt um diesen Union-Block ein Difference-Block, das heißt, wir schneiden aus dem nun vorhandenen Modell Teile aus. Zuerst das Oval links für die Ports:
// USB-Loch erweitern auf Micro-USB und RX/TX-Interface // runde ecken hull() { translate ( [-50, -15, 8] ) { rotate ( [0, 90, 0] ) { cylinder (h=7, d=8, center=false); } } translate ( [-50, 15, 8] ) { rotate ( [0, 90, 0] ) { cylinder (h=7, d=8, center=false); } } }
Die runden Ecken will ich beibehalten. Also werden links und rechts zwei gedrehte Zylinder ausgeschnitten und diese via "hull" miteinander verbunden. Fertig ist der Slot.

Wie gesagt, wer der SD-Karten-Slot ein wenig zu eng. Schneiden wir auch hier an der richtigen Stelle etwas aus. Am längsten dauert es jeweils durch Probieren herauszufinden, an welchen Koordinaten genau ausgeschnitten werden muss:
// sd slot muss noch 2mm erweitert werden nach rechts, ist schon sehr knapp bei v1 translate ( [-14, 25, 6.8] ) { cube ( [3, 3.4, 2.5] ); }
Die durch das Union gefüllten Schraubzylinder brauchen wieder Löcher, jetzt allerdings enger, so dass man reinschrauben kann:
// schraublöcher nur dm 3.2 mm translate ( [-39.2, 21.2, 2] ) { cylinder (h=9, d=3.2, center=false); } translate ( [-39.2, -21.2, 2] ) { cylinder (h=9, d=3.2, center=false); } translate ( [39.2, 21.2, 2] ) { cylinder (h=9, d=3.2, center=false); } translate ( [39.2, -21.2, 2] ) { cylinder (h=9, d=3.2, center=false); }
So weit, so gut. Eigentlich sollte man in die größeren Löcher in den Halterungen Messing-Inserts (Schraubeinsätzen) mit dem Lötkolben versenken, so dass man hier komfortable einschrauben kann. Aber ich glaube, Markus hat M2.5 Inserts und Schrauben vorgesehen. Meine M3-Inserts waren auf jeden Fall zu breit und auch mit 10 mm viel zu hoch, so tief ist das Loch gar nicht.

Normale 2.4 mm hohe Muttern statt Inserts mit dem Lötkolben einzusetzen war dann nicht ganz einfach, denn die flache Muttern ohne Führung exakt waagerecht einzusetzen, ist nicht ganz einfach.

Also bin ich auf die Idee gekommen, die Sechsecke für die Muttern auszuschneiden und darunter etwas über 3 mm große Löcher zu machen, in der die Schrauben Halt finden können, also eingeschraubt werden können.

Zu Anfang dachte ich mir: "Hach, ganz einfach, da nimmst du einfach einen Zylinder und begrent die Seitenanzahl mit $fn auf 6.", aber dann wurde ich eines besseren belehrt: Denn es gilt auch nur bei 6 Seiten: Ein Zylinder ist ein Zylinder und es gilt der Radius des Zylinders. Man braucht als Durchmesser als den Wert eines Kreises, in den die Mutter genau hineinpasst.

Die Unterlegscheibe, die auf den ersten Blick passte, war mit 7 mm dann aber doch zu groß. Was nicht so schlimm war, denn mit ein wenig Epoxy lassen sich die Muttern auch fixieren. Trotzdem wollte ich ein "press fit", also die exakt richtige Größe, damit man die Muttern ohne großen Werkzeugeinsatz eindrücken kann und sie dann nicht mehr herausfallen.

Die Sache mit dem Messen des imaginären Durchmessers, die Drucktoleranz vom Drucker, dem Umstand, dass natürlich vom Drucker auch keine perfekten Kreise, sondern Polygone gedruckt werden, die dann wieder enger sind und die Fließeigenschaften des Filaments bei eingestellter Temperatur machten eine kaum berechenbare Formel aus. Also gings ans Ausprobieren: Nur den entsprechenden Teil drucken und dann nachschauen, ob es passt, wieder drucken und et voila: passt.
// Einschübe für 3 mm Muttern Sechseck 5.43 x 2.38 // 5.6 noch zu klein, nehmen wir 7 (die Unterlegscheibe ist 6.92 und die hat den Radius der Mutter (auch diagonal messen)) // und das ist wieder .2 bis .4 mm zu groß translate ( [-39.2, 21.2, 6.6] ) { cylinder (h=2.6, d=6.8, center=false, $fn=6); } translate ( [-39.2, -21.2, 6.6] ) { cylinder (h=2.6, d=6.8, center=false, $fn=6); } translate ( [39.2, 21.2, 6.6] ) { cylinder (h=2.6, d=6.8, center=false, $fn=6); } translate ( [39.2, -21.2, 6.6] ) { cylinder (h=2.6, d=6.8, center=false, $fn=6); }


Eine Sache muss ich noch dazu sagen: Die Löcher in der CYD-Platine selbst sind klein und unverrückbar. Da geht gerade so vom Durchmesser eine 3 mm Schraube durch. Auch mit Verkanten ist da nicht viel, das PCB ist steif und fest.

Die Löcher im Gehäuse müssen also an der exakt richtigen Stelle untern den Löchern in der Platine liegen. Bei mir waren sie vielleicht 0.1 bis 0.2 mm verschoben. Das geht gerade noch, dass man gut einschrauben kann. Ja, das hat vielleicht sogar den Vorteil, dass die Muttern durch die ganz leicht schrägen Schrauben an die Seiten der Fassungen gedrückt werden und das Ganz dann besser hält.

Mit einem anderen Filament oder einem anders eingestellten Drucker kann das aber anders aussehen und es kann kleine Abweichungen geben. Dann bitte nicht mit Gewalt probieren, sondern die Parameter anpassen. Sonst macht es klack und der Haltezapfen ist ab - oder schlimmer, das CYD ist beschädigt.

Bei mir haben die Abmessung, die Markus gewählt hat, aber sehr gut gepasst.

In diesem Sinne: frohes Drucken!

Videos

Ich habe zwei Videos gemacht: Eines von der Version 1, mit der ich noch mit Lötkolben herumgemacht habe und die noch nicht so perfekt war:

Und eines, wie ich zur finalen Version gekommen sind, bei der es zum Schluss keine großen Problemen mehr gibt:

Download STL-File

Und hier ist die STL-Datei zum Download.

Sie steht unter CC:BY-NC-SA-Lizenz. Wenn ihr sie also für nichtkommerzielle Zwecke anpassen wollt: dürft ihr gerne tun. Wenn ihr den Remix dann erneut veröffentlichen wollt, vergesst nicht, die bisheriger Autoren zu nennen, am besten erweitert ihr die licence-Dateien im zip.

Update 2024-05-24: Version 3 mit Ausschnitt für Lautsprecher-Buchse


Ich habe die Datei cyd-basis_speaker.stl zusätzlich ins Download-Zip gepackt. Das ist dann die Version mit einem Ausschnitt oben rechts (wenn die Ports rechts sind) für eine zweipolige 2.54 mm- JST-Buchse, an die man Lautsprecher mit entsprechenden Kabeln anschließen kann.

Intern wird die JST-Buchse über einen 100 Ohm-Widerstand oder ein Poti an den SPEAK-Anschluss des CYD eingesteckt oder angelötet. Die JST-Buchse wird direkt neben die Schraubenhalterung geklebt. Bei mir haben sich mehrere Lagen UV-Harz bewährt.

Die JST-Stecker stecken normalerweise recht fest in den JST-Buchsen, darum muss das halten. Aber darauf achten, dass der Kleber nicht höher wird als die Schraubenhalterung: hier kommt die Platine zum Aufliegen.

Vielleicht hilft euch das folgende Video beim Einbau, obwohl es vor dem 3D-Design entstanden ist und ich den Ausschnitt noch manuell in ein V2-Gehäuse geschnitten habe: