in Kooperation mit fantux ist ein Interface entstanden, das die Märklin Keyboard Signale auf CAN umsetzt. Damit kann man mit der Gleisbox (SRSEII, BPi, RPi) als auch mit CS2/CS3 das Keyboard (oder mehrere !) nutzen. Das ganze ist nicht neu - gibt es von Märklin und nennt sich 6021 Connect (60128) kostet aber entsprechend. CdB hatte das mit dem Retro 6040 auch mal, aber der Umbau ist aufwendig. Habe auch nie verstanden warum man das Keyboard quasi entkernt hat anstatt einfach mit dem eingebauten I2C Bus zu sprechen ...
Die Schaltung ist relativ einfach aufgebaut und kann in der Grundausstattung auch ohne SMD Lötkenntnisse zusammen gebaut werden:
Herzstück ist ein preiswertes STM32 Modul bekannt als BluePill. Die oben abgebildete Variante ist die Luxusvariante mit galv. Trennung die hier nicht notwendig wäre. Alternativ kann man eine noch etwas einfachere Variante aufbauen. Die Schaltung versorgt das Keyboard, oder wer will auch mehrere, mit Spannung. Der CAN-Bus wird über RJ45 heraus geführt und ist damit über preiswerte und robuste Kabel anschließbar. Hier der Schaltplan.
Die DCDC Spannungswandler müssen auf 8V (U2) bzw 5V (U1) angepasst werden. Der EN Pin bitte nicht verbinden. Der Einbauplatz ist etwas knapp daher vorher anschauen und die Stiftleiste entsprechend anlöten. In einer neuen Platinen Revison wird der Einbauplatz vergrößert.
Lieder ist mir bei der Version 2020/08 ein Missgeschick passiert und die Bauteilbezeichnungen wurden nicht mit aufgedruckt. Hier zur Orientierung der Vergleich zur alten Version:
Wer Interesse an einer Platine hat kann sich bei mir melden - eine begrenzte Anzahl an Platinen und BluePills ist vorhanden.
Hattet Ihr einen besonderen Grund, die Anschaltung auf die linke Seite der Keyboards zu legen? Technisch ist es ja egal, da die Kontakte über die Leiterplatte im 6040 verbunden sind.
du kannst eine gerade Buchse auf der Rückseite montieren (Anschluss links wie im Bild) oder einen gewinkelten Stecker auf der Vorderseite, dann ist der Anschluss rechts.
Hallo Gerd, das außerordentlich gut. Wärst Du mal ein paar Jahre früher damit gekommen. ich habe damals leider Geld für das "Märklin 6021 Connect (60128)" ausgegeben und betreibe es auch noch. Ich schalte alle meine Weichen mit Lenz Decodern mit dem DCC Protokoll und habe das Problem das ich zwar mit den alten Keyboards den Umschaltbefehl zur CS2 senden kann und der Bildschirm diese Änderung auch anzeigt aber der Lenzdecoder keinen Befehl erhält. Drücke ich direkt auf der CS2 auf den Bilschirm funktioniert es. Es gibt ja auch nicht wirklich ein Update für Das Connect 6021 Teil und somit sind die Keyboards nicht einsetzbar für mich. Die Einheiten mit dem Regler (Loks) funktionieren auf allen Protokollen. Wie sieht das bei Deiner Entwiklung aus Kann man damit auch DCC Weichenbefehle über die CS2 versenden?
Gruß Huby.
Bekennender Weichenauffahrer mit eckiger Spannung an den Gleisen.
Wenn man das "MM2" durch ein "DCC" austauscht, werden auf CAN-Seite Stellbefehle für DCC-Zubehörartikel statt für MM2-Zubehörartikel generiert. Du kannst dir den Code auf die Platte holen, lokal anpassen und dann auf das Bluepill flashen. Lass' uns bitte wissen, wie das funktioniert. Ich habe im Moment kein Testsetup (Breadboard abgerissen, bertr2d2's Platine noch nicht fertig gelötet) und DCC-Decoder habe ich auch keine. Falls der bisher nur theoretisch richtige Code auch in der Praxis funktioniert, überlege ich mir, wie so eine Konfiguration im Produktivbetrieb aussehen kann.
Das Projekt ist mit PlatformIO aufgesetzt. Wer am Code spielen möchte, installiert sich am besten die PlatformIO IDE. Das geht am einfachsten, wenn man Visual Studio Code installierst und dort die PlatformIO-Extension installierst. Der Knopf auf der PlatformIO-Webseite macht nichts anderes. Ist die PlatformIO-IDE installiert, könnt ihr den Code von GitHub herunterladen. Wer mit Git nichts am Hut hat, kann den Code auch als ZIP-File herunterladen. Dazu auf der GitHub-Seite auf den grünen Knopf "Clone" drücken, im aufpoppenden Menü "Download ZIP" wählen. Entpackt das ZIP lokal auf der Platte. Im entpackten Ordner gibt es einen Unterordner, der die Datei "platformio.ini" enthält. Einfach diesen Ordner in Visual Studio Code öffnen, dann springt die PlatfomIO-Extension darauf an und ihr könnt loslegen.
Hallo fantux, das liest sich ja interessant doch für mich ist das eine Nummer zu hoch. Ich betreibe ja das original Teil von Märklin. Da werde ich wohl keinerlei Code anpassen können Ich werde das hier weiter verfolgen und dann evtl. meine Hardware gegen Deine tauschen.
Gruß Huby.
Bekennender Weichenauffahrer mit eckiger Spannung an den Gleisen.
dank Regenwetter ist nun auch meine c6021light endlich fertig. Hier zu sehen mit Rechtsanschluss ans Keyboard:
Naja, fast fertig. Ich habe nur noch die falschen 6p6c-buchsen für LocoNet auf Vorrat und der LM393 ist auch noch nicht aufgesteckt. XpressNet habe ich nicht bestückt, da ich keine Geräte dafür habe. Bei den Spannungsreglermodulen musste ich etwas tricksen. Einer liefert 8V, das muss man ohnehin per Poti einstellen. Der andere soll 5V liefern, hatte aber irgend ein Problem, so dass die Festeinstellung immer 3,8V lieferte. Ich habe dann halt auch die 5V per Poti eingestellt. Die Versorgung erfolgt hier mit einem 9V-Steckernetzteil.
Schön wäre, wenn man die Verbindung c6021light <-> Keyboard irgendwie mechanisch entlasten könnte. Dazu müsste ein Gehäuse her...
beim Erstellen der Platine sind mir ein paar Fehler unterlaufen (ganz normal beim ersten Wurf). Ein Fehler ist aber gravierend wenn man CdB Komponenten anschliesst. Durch den Fehler gibt es einen Kurzschluss.
Das Problem ist, das Masse mit Vcc verbunden wird (Pin5 der RJ45 Buchse wurde auf GND gelegt). Lässt sich natürlich auch beheben in dem man Pin 5 beidseitig isoliert. Zur Veranschaulichung hier eine Platinenseite (untere, rechte Hälfte):
Dieser Fehler wird in der neuen Platinenrevision behoben sein.
nachdem der Wunsch aufkam, nicht nur MM- sondern auch DCC-Weichendecoder steuern zu können hab es ja die erste Variante vom Code, bei der man das Protokoll mit einer Änderung im Source Code austauschen konnte. So richtig zufrieden war ich mit dieser Lösung noch nicht. Daher habe ich mich in den letzten Wochen damit beschäftigt, wie man die connect6021 light Konfigurierbar gestalten kann. Das Ergebnis: Im aktuellen Entwicklungsstand gibt es jetzt eine rudimentäre serielle Konsole, über die man das aktuell eingestellte Protokoll auslesen (get-protocol), ändern (set-protocol MM2/DCC/SX) und für den nächsten Reboot speichern (save) kann. Die serielle Konsole hat sogar etwas Komfort, z.B. gibt es eine Historie und mit "help" eine Übersicht der Befehle.
Leider ist durch die erweiterung der Code so groß geworden, dass er nicht mehr in einen Atmega328 (== Arduino Uno) passt. Das war nicht ganz unerwartet, daher habe ich im aktuellen Entwicklungsstand den Support für Arduino entfernt.
Ein neues Release gibt es noch nicht. Zum einen hat die Bibliothek, die ich zur Datenspeicherung verwende, hat nicht ganz die erhofften Eigenschaften. Dadurch belastet das "save" Kommando unnötig stark den Flash. Für den Modellbahneralltag ist das eigentlich egal - wer wechselt täglich das Protokoll seiner Weichendecoder? - aber den Softwareentwickler juckt es bei sowas dann doch in den Fingern . Zum anderen ist die serielle Konsole sehr zickig, was die Zeilenenden angeht. Insbesondere der Anwendungsfall Windows+PuTTY funktioniert noch nicht zuverlässig. Wenn alles läuft, sieht es in etwa so aus:
Falls aber jemand die neue Version testen möchte, dem kann ich auch mal einen zwischenstand der Firmware bauen. Der übliche Weg, den Code auf die Platte zu holen und mit der PlatformIO IDE auf das Bluepill zu laden ist natürlich immer möglich.
ihr könnt jetzt auf GitHub die neueste Firmware v1.1 für die C6021light herunterladen. Die neuen Features sind genauer im vorigen Post angekündigt. Nochmal zur Übersicht:
Weichenstellbefehle jetzt Wahlweise für MM, DCC, Selectrix.
Konfiguration des Weichenformats über die serielle Schnittestelle.
Tolle Umsetzung. Gefällt mir. Dazu eine Frage, die vielleicht auch noch andere Forenteilnehmer interessieren könnte.
Funktioniert das Modul auch mit einem Märklin Memory 6043 ?
mfg
Ralf
Der Computer soll die Arbeit des Menschen erleichtern und nicht umgekehrt! Neue Kupplungen für Faller OHU Selbstentladewagen: viewtopic.php?f=27&t=82863 Kein Support per PN !
wird eine Fahrstraße geschaltet, schickt das Memory einfach nur Schaltbefehle, d.h. tut so, als würde man ein bisschen auf einem Keyboard herumdrücken. Dieser Teil sollte also funktionieren.
Noch ungetestet ist der Automatikbetrieb. Soweit ich weiß kann da Memory auf S88-Inputs reagieren. Wird der S88-Bus dazu an der Zentrale oder am Memory angeschlossen? Falls an der Zentrale, ist Automatikbetrieb derzeit nicht möglich. Die connect6021light hat keinen Code um mit Botschaften für und von Belegtmeldern umzugehen. Interessanterweise finde ich auch keine Information, wie S88-Botschaften auf dem I2C-Bus aussehen würden.
Falls der S88-Bus am Memory angeschlossen wird, sollte Softwareseitig alles funktionieren. Es kann aber sein, dass man irgendwo eine Isolation einziehen muss, falls S88-Masse und Gleismasse nicht verbunden sein dürfen o.ä.. Dazu kann bertr2d2 wahrscheinlich mehr sagen.
Zitat Wird der S88-Bus dazu an der Zentrale oder am Memory angeschlossen?
Ja!
ZitatDie connect6021light hat keinen Code um mit Botschaften für und von Belegtmeldern umzugehen.
Die 6021 selbst kann damit auch nichts anfangen, aber möglicherweise ein 6050/6051 oder ein weiteres Memory? Die Idee ist ja die Memory-Logik zu nutzen aber das Schalten - z.B. von Geräten mit DCC-Decodern über das Interface zu senden und von Gleisbox oder CS erledigen zu lassen...
ZitatFalls der S88-Bus am Memory angeschlossen wird, sollte Softwareseitig alles funktionieren.
Das hört sich doch gut an, damit müßte sich die Fahrstrassenverriegelung des Memory eigentlich nutzen lassen. Aber die Zentrale (CS, Gleisbox) erfährt nichts über die Zustände der je Memory angeschlossenen maximal 48 Kontakte?
MfG
vik
im Übrigen - Märklin am liebsten ohne Pukos, z.B. als Trix
Zitat Wird der S88-Bus dazu an der Zentrale oder am Memory angeschlossen?
Ja!
Ja, äh, wie jetzt? Wird der S88 im alten Märklin-System an die Central Unit angeschlossen oder an das Memory?
Zitat
ZitatDie connect6021light hat keinen Code um mit Botschaften für und von Belegtmeldern umzugehen.
Die 6021 selbst kann damit auch nichts anfangen, aber möglicherweise ein 6050/6051 oder ein weiteres Memory?[...] Aber die Zentrale (CS, Gleisbox) erfährt nichts über die Zustände der je Memory angeschlossenen maximal 48 Kontakte?
Da die connect6021 nichts mit Belegtmeldern anfangen kann, erfährt die CS/Gleisbox in der Tat nichts über die Belegtmelder, die an einem Memory angeschlossen sind. Ebenso erfährt das Memory nichts darüber, was an der CS2/CAN angeschlossene Belegtmelder so zu berichten haben. Sofern die Belegtmeldungen auf dem I2C gesendet werden, ist es wahrscheinlich sehr einfach, eine Hin- und Rückübersetzung zwischen I2C und CAN zu implementieren. Ich habe aber keine Informationen über das Datenformat auf dem I2C. Wenn jemand seinen I2C nach S88-Botschaften abschnorcheln möchte, immer her mit den Daten .
Edit: Ich habe im Netz ein Handbuch für das Memory gefunden. Dort ist auf Seite 9 ein Setup gezeigt, bei dem jedes Memory mit einem eigenen S88-Bus verbunden wird. Ich nehme also nicht an, dass man S88-Botschaften auf dem I2C finden wird.
Zitat Falls der S88-Bus am Memory angeschlossen wird, sollte Softwareseitig alles funktionieren. Es kann aber sein, dass man irgendwo eine Isolation einziehen muss, falls S88-Masse und Gleismasse nicht verbunden sein dürfen o.ä.. Dazu kann bertr2d2 wahrscheinlich mehr sagen.
der c6021light kann auch in der galv getrennten Version (5V DCDC + ISO1050) aufgebaut werden. Dann ist eine Verbindung der Masse mit "Bahnmasse" auf dem S88 Bus kein Problem. Nur mit der seriellen Debug Verbindung (UART bzw USB) muss man aufpassen. Die sollte man dann nicht verwenden bzw. müsste man galv. trennen.
Zitat Wird der S88 im alten Märklin-System an die Central Unit angeschlossen oder an das Memory?
Nie an der 6021, sondern entweder an der Rückmeldezentrale Memory (die der 6021 über I2C Befehle senden kann) oder an der Rückmeldezentrale 6050/6051 mit einen Rechner (C64, Atari, Mac, PC usw. der die 6021 und zurück über 6050/6051 erreichen kann.)
ZitatDie connect6021light hat keinen Code um mit Botschaften für und von Belegtmeldern umzugehen. ... Da die connect6021 nichts mit Belegtmeldern anfangen kann, erfährt die CS/Gleisbox in der Tat nichts über die Belegtmelder, die an einem Memory angeschlossen sind. Ebenso erfährt das Memory nichts darüber, was an der CS2/CAN angeschlossene Belegtmelder so zu berichten haben. Sofern die Belegtmeldungen auf dem I2C gesendet werden, ist es wahrscheinlich sehr einfach, eine Hin- und Rückübersetzung zwischen I2C und CAN zu implementieren.
OK, Danke, habe ich dann jetzt verstanden.
ZitatIch habe im Netz ein Handbuch für das Memory gefunden. Dort ist auf Seite 9 ein Setup gezeigt, bei dem jedes Memory mit einem eigenen S88-Bus verbunden wird. Ich nehme also nicht an, dass man S88-Botschaften auf dem I2C finden wird.
OK, d.h. jedes Memory ist dann wohl immer eine Insel für sich? Ich hatte selbst immer nur ein Memory.
MfG
vik
im Übrigen - Märklin am liebsten ohne Pukos, z.B. als Trix
ZitatIch habe im Netz ein Handbuch für das Memory gefunden. Dort ist auf Seite 9 ein Setup gezeigt, bei dem jedes Memory mit einem eigenen S88-Bus verbunden wird. Ich nehme also nicht an, dass man S88-Botschaften auf dem I2C finden wird.
OK, d.h. jedes Memory ist dann wohl immer eine Insel für sich? Ich hatte selbst immer nur ein Memory.
hier ist eine abgefahrene Idee: Man kann natürlich mit einem Mikroprozessor auf dem CAN lauschen, was dort so an Belegtmeldungen vorbeikommt. Vom gleichen Prozessor schließt man ein paar GPIO-Pins an den S88-Bus eines Memory an. Wenn das Memory dann den Bus taktet, kann man die Belegt-Bits entsprechend ausgeben und dem Memory einen S88-Bus vorgaukeln.
Das müsste bei geschickter Programmierung setzen der Filter im CAN-Controller z.B. mit einem Arduino mit CANdiy-Shield gehen. EInen S88-Melder habe ich schonmal erfolgreich simuliert. Als geeigneter Ausgagspunkt könnte sich das erste Release der connect6021 light eignen, die noch auf einen Uno passte. Mit geeigneter Software kann man sogar mappen, welche Melderadresse auf dem CAN mit welcher Meldeadresse auf welchem Memory ankommt.
Das Projekt darf sich aber jemand anderes an Land ziehen. Ich versuche jetzt schon seit ein paar Wochen mich dazu zu motivieren, die LocoNet-Bibliothek von Arduino aufden STM32 zu portieren, um mit der connect6021 light weiter zu kommen.
Zitat hier ist eine abgefahrene Idee: Man kann natürlich mit einem Mikroprozessor auf dem CAN lauschen, was dort so an Belegtmeldungen vorbeikommt. Vom gleichen Prozessor schließt man ein paar GPIO-Pins an den S88-Bus eines Memory an. Wenn das Memory dann den Bus taktet, kann man die Belegt-Bits entsprechend ausgeben und dem Memory einen S88-Bus vorgaukeln.
das geht meines Erachtens am eigentlichen Wunsch der Märklin-6043-Fans vorbei. Dort war es möglich im 6043 gebildete Fahrstrassen zu verriegeln, so dass z.B. Flankenschutz bestand.
Märklin hat es in den letzten 13 Jahren - oder wenigstens seit 2012 - nicht geschafft diesen häufiger geäußerten Wunsch Implementierung einer Fahrstrassenverriegelung (softwaremäßig) in der Memory-Ablaufsteuerng der CS2, zu entsprechen. 6043-Fans hofften dann, wenigstens die bestehende 6043-Abläufe mit Fahrstrassenverriegelung hinter dem Connect-6021 weiter nutzen zu können, wenn sie sich eine CS2 oder jetzt eine CS3 zulegen.
Märklin hat aber wohl kategorisch erklärt, dass an einer 6021 hinter einem 6021-connect an einer CS3 mit gemeinsamer Masseverbindung zwischen CS3 und 6021 (d.h. gemeinsame Masse auch mit 6043 und S88-Meldern) keine Verbraucher (also auch keine Schaltdecoder und Weichenspulen) vom 6021 betrieben werden dürfen, die müssen alle an der CS3 oder einem CS3-Booster hängen. Ob das technisch immer zwingend ist, oder nur aus haftungsrechtlichen Gründen so strikt verlautbart wird, bleibt unklar. viewtopic.php?f=5&t=184974
Es ginge also darum - wenn ich das richtig verstehe - die Schaltbefehle des 6043 an die 6021 - galvanisch isoliert - in den CAN-Bus einzuschleifen bzw. auf dort angelegte Magnetartikel zu mappen und da Gerd ja eine entsprechende - galvanisch isolierende - Variante designed hat, wäre das mit Eurer Lösung vielleicht denkbar. Wieviele 6043-Nutzer das wirklich machen würden - keine Idee.
Tatsächlich ist das erstmal ein interessant scheinender Workarround um einen Mangel zu entschärfen, der eigentlich an der nicht zuende implementierten CS2-Memory-Emulation liegt. Mit der Ablaufsteuerung der CS3 ist es prinzipell möglich Fahrstrassen zu verriegeln, aber die Technik und das Bedienkonzept sind komplett anders als bei dem 6043 und dem CS2-Memory und noch nicht wirklich anwenderfreundlich. Märklin hat wohl schon vor Erscheinen der CS3 die Weiterentwicklung des CS2-Memory Ende 2014 eingestellt und arbeitet seitdem an der Ablaufsteuerung und seit 2018 an der erweiterten Ablaufsteuerung der CS3. Seit 2019 gibt es eine überarbeitete Version 2.x der CS3 Firmware mit einer nochmals gründlich überarbeiteten Ablaufsteuerung. Wieder ist vieles anders geworden und einiges was funktioniert hat, funktioniert nicht mehr und die Anwender warten auf ein nächstes Update...
MfG
vik
im Übrigen - Märklin am liebsten ohne Pukos, z.B. als Trix