Hallo Freunde und Modelleisenbahner,
ich möchte hier winston vorstellen. winston befindet sich schon seit gut eineinhalb Jahren in Entwicklung und ist gedacht als "sinnvolle" Ergänzung zu einer bestehenden DCC-Zentrale. Statt wie viele andere Projekte das DCC-Signal am Gleis selbst zu erzeugen, sitzt winston wie z.B. rocrail eine Ebene höher und arbeitet mit einer DCC-Zentrale zusammen (aktuell eine z21start).
Zu den einzelnen Fortschritten geht es hier:
- Dieser Beitrag: die Anfänge
- Signale
- Web-UI Update
- Das große Fahrstraßen-Update
In der Endausbaustufe soll winston sich um die Fahrstraßen, Signale und automatische Zugfahrten kümmern, damit man nicht allein fahren muss. Aber so weit bin ich noch nicht. Zielarchitektur ist ein Arduino-kompatibler Mikrocontroller wie ein Teensy 4.1, der unter der Anlage hängt und unabhängig von einem PC die Steuerung übernimmt.
Das Herzstück von winston ist das Stellwerk, das in einer engen Schleife alle Aufgaben in möglichst kleinen Häppchen abarbeitet, ohne lange zu warten oder andere Events zu lange zu blockieren.
Aktueller Stand
Stattdessen bietet die aktuelle Version als Haupt-Feature schon das Stellen aller Signale nach Weichenstellung im Fahrweg hinter dem Signal. Statt also an jede Weiche ein Signal anzuklemmen (so war das auf der Anlage in meiner Kinderzeit), kann winston aus der Weichenstellung sehen, ob der Fahrweg (bis zum nächsten Signal oder Prellbock) befahrbar ist (Signal steht auf Fahrt) oder eine Weiche falsch gestellt ist (das Signal steht auf Halt). Genauso sind auch schon Vorsignale möglich, die den Stand des nächsten Hauptsignals anzeigen. Oder direkt praktisch in einem Kombinationssignal zusammengefasst. Das hilft meiner kleinen Anlage auch schon mal, um zu sehen, ob ich den Zug nicht lieber anhalten sollte...
Es läuft noch nicht alles so stabil, dass ich dem ganzen vollautomatisch die Züge anvertrauen würde, aber es ist ja auch noch Zeit.
Um den Gleisplan zu kennen, wird dieser direkt im Code definiert - ich hätte am liebsten alles mögliche schon zur Compilezeit berechnet, um zur Laufzeit schneller zu sein. Aber da der Teensy nur mit C++14 kompiliert werden kann, kann ich nicht alle neuen Sprachfeatures nutzen.
Den aktuellen Stand findet ihr in github: https://github.com/danie1kr/winston
Hardware
Aktuell läuft winston auf Windows und Arduino (Teensy 4.1), entwickelt mit Visual Studio in C++.
Zur Ansteuerung der z21 hat der Teensy direkt ein Ethernet-Interface dabei.
Signale werden mit einem TLC5947 gesteuert, der hat 24 PWM-Ausgäne, mit dem auch Fading auf den LEDs der Signale möglich ist.
Vorteil der Windows-Entwicklung ist, dass man in aller Ruhe debuggen kann und die Logikfehler findet, ohne auf nicht ganz so komfortables Debuggen auf dem Teensy angewiesen zu sein. Die kleinen Hardware-Unterschiede reichen da schon. Wenn man sich sicher sein kann, dass zumindst die Graphen-Traversierung korrekt ist, hilft das ungemein.
Signale
Die Signale selbst sind aktuell einfache PCBs mit schwarzem Lötstoplack. Zurechtgefräst in Signalform ergibt das ein ganz nettes Bild. Damit man es noch selbst handhaben kann, sind 1206er LEDs vorgesehen, die zusammen mit dem TLC5947 selbst bei 1/4 der Helligkeit noch sehr stark leuchten. Am unteren Ende des Signal-PCBs sind Lötkontakte für 2x2 2mm Pfostenstecker. Diese stecken in entsprechenden Female-Headern unter der Anlage auf einer kleinen Platine, an die die Kabel angeschlossen werden. Ein 6mm-Loch ist genau die richtige Größe, um die Header festzuklemmen. Das PCB ist von JLCPCB und hat leider ein paar Macken, aber es reicht für die erste Iteration völlig aus und macht optisch was her!
Bei Interesse kann ich die PCB-Files gerne freigeben.
Der erste laufende Prototyp:
Mit richtigen Signalen:
Auf der Anlage:
Mit Zügen:
Alternativen
Es gibt andere Projekte und Programme, die das können aber wo bleibt denn dann der Spaß. Für ein rocrail müsste ich einen Rechner unter der Anlage booten. So ist der Teensy nach 8 Sekunden einsatzbereit (wobei die längste Zeit dafür verwendet wird, auf die z21 zu warten, um den Zustand aller Weichen einzusammeln). Oder man macht alles in Hardware mit vorgefertigten Modulen namhafter Hersteller. Aber... nein
Aktuell bietet winston folgende Features
1) Weboberfläche
1b) mit Gleisplan inklusive Anzeige und Layout-Editor (zum Zurechtzuppeln)
1c) Anzeige der Weichen und Signale
1d) Stellen der Weichen
1e) Liste der Verkabelung, um die Signale anzuschließen
1f) Loks sieht man schon, kann sie aber noch nicht steuern
2) Verbindung zur z21
3) Stellen der Signale nach Fahrweg hinter dem Signal
Geplante Features
- Steuerung der Loks: per z21 eigentlich einfach machbar
- Belegtmeldung: Hier laufen erste Experimente mit NFC sehr erfolgreich. Damit erhält winston eine Positionsmeldung und kann aus einem vorhandenen Geschwindigkeitsprofil mitrechnen, wo sich ein Zug befindet. Vermutlich wird die NFC-Lösung teurer als z.B. ein 16xRailcom-Rückmelder der bekannten Firmen. Aber dafür entfällt auch das Gefummel mit Lötstellen am Gleis.
- Stellen der Signale nach Belegtmeldung und Fahrstraßen: Ergibt sich aus den Belegtmeldungen und dem Webinterface, auf dem man Fahrstraßen einstellen kann. Ggf. auch per DCC-Adresse direkt über die Multimaus.
- automatische Fahrten im Kreis und auf Abstellgleise
Da die Anlage jetzt erst mal wieder abgebaut wird, habe ich viel Zeit, die Software weiter zu entwickeln und mit dem Aufbau im Winter wieder zu testen. Ihr hört von mir.
Viele Grüße
Daniel