Transreflexives OBS-Display

…oder im Zweifel ein gutes altes diff erzeugen? Das kann jeder einfach einspielen.

1 „Gefällt mir“

Das wäre dieses Repo und dieser PR. Liefert bei mir aber beides, wenn ich nicht eingeloggt bin, ein 404.

Ich habe heute noch die Display-Invertierung gefixt und mit allen drei Displays getestet. Ich denke, dass nun alles geht.
Dennoch ist es wahrscheinlich (noch) nicht sinnvoll, meinen Branch so zu mergen, da der OBS Pro ja aller Voraussicht nach doch eine separat gebaute FW-Variante bekommt (siehe hier), und damit die automatische Displayerkennung ja gar nicht mehr notwendig oder sinnvoll wäre.
Es sei denn, dass wir doch noch das transreflexive I2C-Display (JHD12864-G98BTW) mit unterstützen wollen…

Ansonsten könnten wir aber überlegen, ob wir schon den Wechsel auf U8g2 machen wollen. Ich habe dafür gerade mal schnell einen neuen Branch erstellt, auf dem nur die fünf Commits für den Wechsel auf U8g2 drauf sind, aber noch nicht die Unterstützung für die beiden anderen Displays.

Welche der beiden genannten Möglichkeiten zum Übertragen der Änderungen auf Github wir nehmen, ist mir egal. Mir ist im Prinzip auch egal wer am Ende als Autor da dran steht.

1 „Gefällt mir“

Wieder in Absprache mit @fabian habe ich ein PCB für das SPI-Display (JHD12864-G156BT) entworfen, welche mit der aktuellen OBSPro-Version (2.0) verwendet werden könnte. Das Ergebnis findet sich wieder auf Codeberg.

Die Orientierung ist in KiCAD quasi um 180° um die X-Achse gedreht. Die Anschlüsse und der Schiebeschalter für die Hintergrundbeleuchtung sind also unten, sodass das Gehäuse nur da eine Öffnung bräuchte und ansonsten die Elektronik halbwegs vor Wasser schützen kann.

Ich habe mich entschieden, den Push-Button nicht auf dem PCB vorzusehen. Es hätte sonst ein recht flacher werden müssen, in wasserdicht habe ich da nichts passendes gefunden. Stattdessen hat das PCB nun eine Buchse, über die dann mit Kabeln ein Button angeschlossen werden kann. Damit dieser ggf. direkt neben dem Display sitzen kann habe ich auf beiden Seiten der Platine Einkerbung vorgesehen.

Bis auf die Platzierung von den 0603-Bauteilen und dem Routing ist die Platine aus meiner Sicht fertig. Bin aber auch noch für Änderungen offen, auch noch, nachdem ich vrstl. morgen das Routing gemacht habe.

EDIT: Das Routing ist nun auch fertig. Ich habe dabei nochmal die Position vom Schiebeschalter und Button-Stecker getauscht, da sich das fürs Routing als günstiger herausstellte.

Das sieht doch schon mal gut aus.
Was mir jetzt noch nicht so ganz klar ist: Wir hatten ja darüber gesprochen das Kabel abnehmbar zu machen und deshalb schaut die 8-pol Buchse über die Platine hinaus. Aber warum sitzt die Buchse für den Button an der gleichen Stelle? Dann kommt das Kabel doch auch aus dem Gehäuse raus, oder?

Was die Wasserdichtigkeit angeht habe ich jetzt auch keine gute Idee. Aber nen schicken SMD-Taster findet man schon - immer noch besser als tausend von den Dingern krimpen zu müssen. Bei Reichelt wäre z.B. „KAPPE 1ZCS SW“ in Kombination mit „MEC5E SMD“ ne schöne Lösung, finde ich.

Meine Überlegung war zum einen, dass die Displayeinheit halbwegs wassergeschützt sein sollte, also zumindest kein Regenwasser durch oder am Button vorbei zum PCB laufen können sollte. Daher hatte ich auf LCSC nach Button geschaut, die einen entsprechen IP-Schutz haben. Da gibt es zwar auch ein paar wasserfeste SMD-Taster, aber die gegen das Gehäuse abzudichten schien mir dann schwieg.
Daher schien mir dann ein größerer Button, der separat ist (also etwa neben dem PCB im Gehäuse), die bessere Lösung zu sein. Ein dafür infrage kommender Button wäre dieser.

Wenn man diese JST-Stecker schon fertig mit mit Kabeln kauft müsste man wahrscheinlich doch „nur“ die Buttons mit dem Kabel verbinden?

Wir könnten natürlich auch auf Wasserschutz fürs erste ganz verzichten und zugunsten einfacherer Herstellung so einen SMD-Taster mit Kappe verwenden. Wäre dein Vorschlag, die über Reichelt zu beziehen, oder war das nur ein Beispiel?

Ich hatte auch noch die Idee, eine Möglichkeit vorzusehen, den Button separat am Fahrrad montieren zu können. Dann könnte der z.B. in Griffnähe sein, das Display aber mittig am Lenker. Zusammen mit der Überlegung zum Wasserschutz folgte daher für mich die Position der JST-Buchse unten neben 8-Pol-Anschluss zur Hauptplatine.

Hmm, ok. Wenn man den fest verbaut im gleichen Gehäuse, könnte man natürlich auf die Buchse auf der Platine verzichten und einfach direkt einlöten. Sind halt ne Menge mehr Arbeitsschritte als nur den Dome drauf zu drücken. Vom externen Button würde ich erst mal weit Abstand nehmen wollen :wink:

Wenn wir es wasserdicht hinbekommen wollen, müssen wir aber das Display auch dicht bekommen. Entweder mit Klebestreifen zwischen Display und Gehäuse - keine Ahnung ob man das so wasserdicht bekommt - oder nen Glas ins Gehäuse einkleben. Letzteres wäre vermutlich sogar möglich, ich bekomme Montag meine CNC-Fräse mit der man nen Polycarbonat-Fenster zurechtfräsen könnte. Ein schneller Check mit der Uhu-Klebeberatung sagt aber, dass das nicht so einfach ist (keine Ergebnisse).

Dazu kommt: Wenn das Display wasserdicht ist, macht es keinen Sinn den Stecker am Display zu haben. Das Kabel soll ja am ehesten am Rad bleiben.

Noch was: Wenn man den Stecker von LCSC dafür nimmt, könnte man es trotzdem so machen, dass der durch die Platine durch geht und diese gleichzeitig fest hält. Also von oben nach unten: Stecker, Gehäuse-Deckel, Platine, Mutter.

Ich würde eigentlich die Variante mit einer Kunstoffglasplatte bevorzugen. Neben Polycarbonat kämen vieleicht auch noch Acrylglas, Plexiglas oder andere infrage – da kenne ich mich aber leider nicht aus.
Es gibt auch diverse Anbieter, die einem solche Platten zuschneiden – bei den ersten, die ich online gefunden habe (expresszuschnitt.de, kunststoffplattenonline.de, plattenzuschnitt24.de) ist die Mindestgröße aber 50x50 mm. Wir brauchen wohl ca. 38x33.5 mm, und max. 1 mm dick. Ich würde nochmal nach anderen Anbietern suchen.
Ich denke, dass sich da auch ein geeigneter Kleber für findet.

Stimmt, man müsste dann eigentlich keinen Stecker mehr rausführen, sondern könnte eher einen Kabeldurchgang unten im Gehäuse machen. An der Platine selbst würde ich aber schon noch einen (einfacheren) Stecker vorsehen und das Kabel nicht direkt anlöten, sodass es z.B. einfach möglich ist etwas zu tauschen.

Vermutlich meinst du statt Stecker den (oben verlinkten) Button? Welchen Vorteil hätte es, den auch durch die Platine hindurchzuführen?

Ja, da wird man auch jemanden finden der kleine machen kann. Einfach schneiden reicht aber nicht. Das muss schräg geschnitten werden oder besser mit ner Kante drin, damit das Glas wirklich drin sitzt und der Kleber es nur in Position hält. Also ist da nichts mit einfach ausschneiden/lasern.

Ja, meinte ich. Vor allem etwas Platz-Ersparniss weil man kein Abstand von Platine zu Mutter braucht. Und evtl. könnte es den Zusammenbau erleichtern, wenn man zwei Schrauben weniger rein drehen muss.

@fabian und ich haben uns nochmal außerhalb dieses Threads ausgetauscht.
Plan ist nun, die Displayeinheit mit dem Button unter dem Display zu entwerfen. Als Button soll der oben verlinkte, wasserfeste von LCSC, eingesetzt werden.
Das 8-polige Kabel geht dann unten heraus und wird evtl. ebenfalls noch abgedichtet. Auf einen Schalter für die Display-Hintergrundbeleuchtung wollen wir verzichten, um den nicht auch Abdichten zu müssen, da die max. 5 mA Strombedarf auch nicht wirklich ins Gewicht fallen.

Ich werde im laufe der Woche den PCB-Entwurf entsprechend anpassen und dann wieder hier schreiben.

3 „Gefällt mir“

Ich konnte doch erst heute wieder richtig daran weiter machen und habe nun die Schalter für die Hintergrundbeleuchtung aus dem Schaltplan gestrichen. Ein Test mit dem Display ergab, dass 2 mA für die Hintergrundbeleuchtung völlig ausreichend sind, sodass ich entsprechend einen 1.5 kΩ -Widerstand vorgesehen habe.
Wie besprochen sitzt nun der bekannte Push-Button unter dem Display und geht durch das PCB hindurch, entsprechend ist eine größere Aussparung dafür im PCB.
Für die Verbindung zur OBSPro-Hauptplatine habe ich nun einen Pinheader im 2.54mm-Raster vorgesehen.
Den JST-Stecker für den Button habe ich fürs erste drauf gelassen – Platz ist da, und muss ja nicht bestückt werden. Alternativ zu dem Stecker gibt es noch die Pads J4 und J5.

Der aktuelle Stand wieder auf Codeberg.

Sehr schick!
Gibt’s nen Grund, dass die Bohrungen für die Befestigung nur 2,2mm sind? Hätte da jetzt wie bislang auch überall auf M3 gesetzt.

Hatte nur den Grund, das ich nicht wusste das sonst M3 eingesetzt wird. Habe es gerade schnell zu M3 geändert.
Das Routing würde ich vrstl. morgen angehen.

2 „Gefällt mir“

Alle Schrauben bis auf eine im OBS Classic sind M3X8 Zylinderkopfschrauben. Das macht die Beschaffung deutlich einfacher - Früher hatten wir verschiedene Längen. Einzige verbleibende Ausnahme ist die Sattelhalterungssicherungsschraube.

Nachdem ich das Routing schon abgeschlossen und gepusht habe, fällt mir gerade noch auf, dass die Pins am FPC-Verbinder zum Display falsch herum sind… So also bitte noch nicht bestellen.
Werde ich im Laufe des Wochenendes noch beheben.

Ist nun behoben, sodass das PCB aus meiner Sicht nun fertig wäre. Es darf aber gerne nochmal jemand erfahrenes drauf schauen.

1 „Gefällt mir“

Moin,
ich habe noch mal einen Pull-Request mit ein paar Kleinigkeiten beim Routing erstellt. Und was mir gerade auch noch aufgefallen ist: Die unplated Löcher für das Display sind doch sehr schmatzig. Also ich messe die mit 1,5mm und die sind nun 1,5mm im Design (eigentlich 1,524, aber das runden die sicher ab). Das könnte etwas sehr eng werden, würde da mindestens 1-2 Zehntel mehr machen.

Edit: Ach ja, Platinen sind bestellt. Da muss ich dann notfalls noch mal die Löcher aufbohren.

2 „Gefällt mir“

Vielen Dank fürs Überarbeiten und Bestellen des PCBs!
Ich habe den Pull-Request gemerged (leider erst fast-forward und dann mit nachträglichem merge-commit, sodass er jetzt in der Codeberg-Oberfläche geschlossen statt merged ist…).

2 „Gefällt mir“

@andreas, ich habe gerade mal meinen oben verlinkten u8g2-Branch auf den aktuellen main-Branch (v0.19.877) rebased, nochmal auf die neuste U8g2-Version geupdatet und es getestet. Könntest du dir meine Änderungen da nochmal ansehen?

Aus meiner Sicht wäre es eigentlich bereit, um in den main-Branch zu kommen.
Den U8g2-Fork mit den Fixes für die JHD-Displays wird in diesem Branch nicht verwendet, da auf dem Branch nur Unterstützung für das SSD1306-Display enthalten ist. Allerdings ist es durch U8g2 dann nur eine Zeile Code, die geändert werden muss, um zum für den OBSPro geplanten JHD-Display zu wechseln. Mein U8g2-Fork ist evtl. sogar mit einer weiteren Zeile Code dann auch nicht mehr notwendig.

Speicherbedafsmäßig hat sich durch den Wechsel zu U8g2 nicht viel geändert:

Aktueller main-Branch (v0.19.877):

RAM:   [==        ]  21.4% (used 70080 bytes from 327680 bytes)
Flash: [======    ]  64.3% (used 2360045 bytes from 3670016 bytes)

Mit U8g2, so wie es gerade auf dem u8g2-Branch ist (82dc772):

RAM:   [==        ]  21.7% (used 71104 bytes from 327680 bytes)
Flash: [======    ]  64.2% (used 2356761 bytes from 3670016 bytes)
2 „Gefällt mir“