Gehäuse für STM32-Arduino I2C-Scanner und Tester designen und drucken
Mein selbst entworfener und programmierter I2C Scanner und Tester funktioniert zwar einwandfrei, aber irgendwie ist das eine Menge Kabelsalat, der sich da auftut:Ganz rechts die STM32 Bluepill, der Mikrocontroller, der alles steuert. Daneben das 1602A Display, das die Scan und Testergebnisse anzeigt, allerdings von der Rückseite her. Und links das Mini-Breadboard, um die zu testenden I2C-Komponenten für den Test einzustecken; und ein Reset-Taster.
"Fröhlich bunt strecken sich die Kabel in alle Richtungen, als ob sie die ersten Strahlen der aufgehenden Sonne einfangen und den neuen Tag begrüßen wollten." - Ja, so könnte man das auch ausdrücken. Dem pragmatischem Entwickler ist solch Kabelsalat aber ein Dorn im Auge und gehört gezähmt, weggesperrt, in ein Gehäuse gezwängt, damit alles aufgeräumt aussieht und man nicht aus Versehen an irgendeinem Kabel hängenbleibt und es rausrupft - und sich dann auf eine lange Fehlersuche machen muss. Wenn es fertig ist, getestet und funktionierend, dann gehört dieser Zustand möglichst gut fixiert.
Obwohl der Aufbau hier noch relativ einfach und übersichtlich ist. Man schaue sich nur mein 8-Bit-Breadboard-Computer mit 6502 CPU an. Wenn da ein Kabel entfernt würde - ich würde wirklich eine lange Zeit suchen müssen.
Das Gehäuse soll natürlich möglichst kompakt sein, aber es muss groß genug sein, damit ich oben drauf das Mini-Breadboard kleben kann. um dort die I2C-Komponenten einzustecken. Überflüßig lang umherhängendes Kabel soll im Gehäuse verschwinden.
Auf der einen Seite des Gehäuses brauchen wir natürlich ein Loch, durch das das 1602 Display durchschauen muss. Die größten Ausmaße nimmt die Platine des Displays ein. Dies bestimmt die Außenmaße.
Ich nehme mir also mein Lieblings 3D-Design-Tool, OpenSCAD zur Hand. Ich hatte ja mal eine Reihe 3D-Design-Programme getestet und mir als Hardcore-Programmierer kommt OpenSCAD am meisten entgegen. Hier erreiche ich die schnellsten und genauesten Ergebnisse.
Ich designe mir also erst einmal einen Quader, den ich unten aushöhle und dann ein Fenster auf der Unterseite schneide.
Hier muss ich beim Ausmessen mit dem Messschieber darauf achten, dass das Display ja quasi auf dem Kopf ist, links und rechts also vertauscht sind. Ratet mal, warum ich das erwähne... Genau, ist mir selbst passiert!
Zurück zur Elektronik: Um Platz zu sparen und die ersten Kabel zu bändigen klebe ich die Bluepill hinten auf das 1602A-Display. Und zwar mit Montagekleber, was sich spätes als Fehler herausstellt, das es nicht fest genug wird.
Dem kann ich aber später noch durch Heißkleber abhelfen, zur Zeit reicht das erst einmal. Die Platine klebe ich so zusammen, dass der USB-Port, den ich ja noch brauche - hier kommt die Stromversorgung rein - bündig ans Gehäuse stößt. Dadurch wird die Höhe des USB-Ports zur Nullebene Z festgelegt.
Da muss jetzt natürlich ein Loch ins Gehäuse. Was schnell dadurch bewerkstelligt ist, indem ich einen Quader in entsprechender Größe vom Ganzen subtrahiere.
Diesmal denke ich auch daran, dass die USB-Stecker doch ein wenig größer sind als der USB-Port auf der Platine und designe das Loch gleich mal ein bisschen größer.
Um den Deckel, der oben drauf kommt, mache ich mir später Gedanken. Ich messe, wie hoch die Kabel insgesamt etwa hochstehen und wie hoch deswegen das Gehäuse sein muss und beschneide entsprechend die Höhe.
Außerdem muss die Höhe groß genug sein, damit das Mini-Breadboard darauf Platz findet.
Jetzt kann ich mein Gehäuse schon einmal ausdrucken. Als Farbe wähle ich schwarz, weil das gut zu der Rahmenfarbe des LCD passt, die ja auch schwarz ist. Schwarz ist sowieso meine bevorzugte Farbe für Gehäuse.
Fertig auf meinem Anycubic i3 Mega gedruckt lasse ich meinen Scanner samt Kabelage langsam ins Gehäuse. Die Außenränder passen ganz gut, nur unten ist es ein wenig zu eng für das Display-Fenster, oder das verkantet sich irgendwie.
Nach ein bisschen hin und her ist das Display fast drin, fehlt nur noch ein bisschen. Also drücke ich von oben. Nur wo? Die Bluepill-Platine ist empfindlich. Als robusteste Stelle denke ich mir den Mikro-USB-Port. Ich drücke und das Display findet seinen Platz. Ganz leicht schief, aber es ist noch okay.
Dafür ist - oh Schreck - der USB-Port jetzt verbogen. Da war ich wohl zu brutal und hab in zusammengequetscht. Jetzt alles austauschen und neu machen? Nee, der USB-Port wird mit einer Zange halbwegs zurechtgeboben und das Ganze getestet. USB-Kabel hält so leidlich, Stromzufuhr funktioniert. Ideal ist das nicht, aber alles nochmal von vorne? Nein danke. Das nächste mal bin ich schlauer und wähle höhere Toleranzen.
Erst komme ich auf die Idee, das USB-Kabel in dem lädierten USB-Port mit Heißkleber festzukleben, bin davon aber wieder schnell abgerückt, weil ich das Kabel vielleicht ja auch mal austauschen möchte. Aktuell habe ich nämlich nur kurze USB-Kabel ohne Daten-Kabel, da sind nur die stromführenden Kabel bestückt. Und meine Datenkabel sind alle länger, was ja auch sinnvoll ist. Allerdings möchte standardmäßig ich nur ein kurzes Kabel für den Strom dran haben, ich habe genug Kabelsalat auf meinen Werktischen. Nur wenn ich das Gerät neu programmiere, brauche ich ein längeres Datenkabel. Also muss ich es umstecken müssen. Bleibt mir wohl nichts anderes übrig, als mit dem Port behutsam umzugehen, nicht, dass er noch das Zeitliche segnet.
Denn dann müsste ich die ganze Bluepill austauschen und dazu müsste ich das Gehäuse zerstören, um überhaupt dran zu kommen. Und mit dem ganzen Heißkleber jetzt... das müsste ich auch von den Kabeln abfummeln. Wenn da dann nicht noch was außer der Bluepill kaputt geht... Also lass ich das erstmals so, wie es ist, bis dann halt doch mal (hoffentlich nicht) der GAU eintritt. Wobei sich mal wieder bewahrheitet: Heißkleber geht schnell, aber ist permanent. Schrauben sind da viel besser - da kann man das Gerät dann auch wieder auseinandernehmen. Doch das Design von Schraubstegen, die ja auch wieder genauestens positioniert sein müssten, wollte ich mir sparen.
Für mich persönlich und für den Prototypen reicht das. Sollte ich irgendwann man auf die Idee kommen, das Gerät in Kleinserie verkaufen zu wollen, würde ich natürlich eine Menge ändern - aber mir und zur Zeit soll das langen.
Zumindest passt die Größe und Höhe des USB-Ports. Allerdings war der Montagekleber keine tolle Idee. Obwohl schon über 24 Stunden "gehärtet" hält das Zeug nicht gescheit. Ich hätte den Hinweis "Mindestens ein Untergrund muss saugfähig sein" auf der Tube vielleicht doch ernster nehmen sollen. Egal, Versuch macht klug und eine Portion Heißkleber fixiert die Platine. Allerdings nicht, ohne die Gehäuse-Außenwand ein ganz klein wenig zu wellen - PLA ist halt hitzeempfindlich und Heißkleber heißt. Das nächste mal nehme ich eine größere Wandstärke. Wie heißt es so schön? "Aus Fehlern lernt man" bzw. "Versuch macht kluch!"
Jetzt fehlt nur noch der Deckel, der den Außenwänden zusätzliche Stabilität verleit und die Kabelage in Inneren bändigen soll.
Den designe ich unten ein bisschen kleiner so, dass man ihn in das Gehäuse stecken kann; oben aber so breit wie das Gehäuse, so dass dieser Teil aufliegt und das Gehäuse schließt.
An der Hinterseite lasse ich einen 3mm breiten Schlitz, um die Kabel herauszuführen.
Die Sache ist schnell designt und dann via Octoprint (Octoprint Installationsanleitung) übers WLAN an meinen 3D-Drucker geschickt.
Diesmal habe ich es mit den Toleranzen allerdings zu gut gemeint. Der Deckel passt zwar ins Gehäuse, aber es ist kein "Press Fit" und der Deckel fällt wieder heraus, stellt man die Sache auf den Kopf. Also neu drucken? Ach wo, mit ein bisschen Klebeknete werde ich der Sache schon abhelfen können.
Vorher muss ich aber noch die Kabel bezwingen. Da es die billigen und steifen Jumper-Kabel sind, ist das gar nicht so einfach. Ich muss sie doch ein bisschen an der Rückseite fixieren und Tesafilm allein klebt nicht genügend gut.
Also greife ich auf mein bewährtes China-Silikon-Klebeband zurück, das pappt extraheftig. Eine Seite des doppelseitigen, fast 1 mm dicken Klebebandes wird an die Rückseite geklebt und auf die andere Seite werden dann die Kabel in Reihenfolge und Länge sortiert.
Als mir alles gefällt, klebe ich einen weitere Streifen Silikon-Klebeband drüber, lassen aber die Abziehfolie auf der einen Seite drauf. Das klebt extrastark und fixiert so die Kabel.
Jetzt muss nur noch der Deckel drauf, was mit ein bisschen Klebeknete an den Rändern auch wunderbar hält.
Fertig ist das Gehäuse für meinen I2C-Scanner und Tester:
Kann sich doch sehen lassen. Auf dem Mini-Breadboard kann man übrigend folgendermaßen stecken:
- links ist die 3.3V Schiene mit der Kabelreihenfolge GND (schwarz), VCC (rot), SCL (grün), SDA (gelb). Wunderbar zum Testen von SSD1306-OLEDs
- rechts ist die 5V Schiene mit selber Reihenfolge, halt nur mit 5 statt 3.3 Volt
- es gehen vier female Jumper-Kabel (3.3V) nach oben, die man beliebig an ein I2C-Modul anstecken kann
- es geht ein Grove-Kabel nach oben, dass man in der 3.3V oder auch 5V-Schiene einstecken kann, um damit Grove-Module zu benutzen. Die Kodierung der Grove-Stecker ist natürlich Grove-kompatibel.
- ich habe noch einen 4-Pin-Header unter dem Reset-Taster eingesteckt. Den kann ich nach links versetzen, um I2C-Komponenten zu testen, ohne erst Header einzulöten. Dazu muss ich sie einfach nur etwas schräg in den Lötösen halten, damit Kontakt hergestellt ist.
- den Reset-Taster habe ich weiter nach oben verschoben, so dass darunter Platz für eine eigene Reihenfolge ist, die man mit Jumperkabeln herstellen kann.
Video
Weitere Aussichten
So kann der I2C-Scanner und Tester erst einmal bleiben und bekommt seinen Platz neben Multimeter, Multitester und LED-Tester auf meinem Arbeitstisch. Immer griffbereit, um man schnell, eine I2C-Komponente zu testen. Wenn ich dann weitere, neue Komponenten dazu bekommen, erweitere ich zeitnah den Source-Code und den testbaren Gerätepark.Wenn ich mich dann sowie mit der neuen I2C-Komponente beschäftigen und die Datenblätter studieren, kann ich auch gleich eine neue Testroutine für den Scanner schreiben. Ein nie fertig werdendes und sich stets verbesserndes Projekt sozusagen.