Milliways hat für den 34C3 einen Wettbewerb für einen Hackerspace-Eisenbahnwagen ausgeschrieben.
Die ursprüngliche Idee war, einen sinobit auf einen umgebauten Märklin-Güterwagen zu setzen und vom Gleis die Versorgungsspannung und das Kontrollsignal von Märklin Digital abzunehmen.
Am besten für einen Umbau eignen sich 4-achsige Flachwagen 4514 aus den 1950er Jahren.
Einen geeigneten Schleifer zu finden, um die Spannung vom Mittelleiter abzunehmen ist aber eher schwierig. Am einfachsten ist es, einen Märklin 7076 Schleifer zu verwenden, aber der passt nur für 2-achsige Wagen der Märklin 4500er Serie, also z.B. dem 2-achsigen Flachwagen 4503.
Wegen der Kapitalmarktfähigkeit der zur DHL zerschlagenen Deutschen Bundespost mit unterbezahlten prekär bei Subunternehmern Angestellten anstatt Postbeamten als Zusteller wurden die sinobits von Derendingen „wegen Unzustellbarkeit“ statt ans FabLab Neckar-Alb ohne Einspruchsmöglichkeit nach Shenzen zurückgeschickt.
Deshalb kommen statt sinobits Konferenzbadges (Chaos Communication Camp 2015 r0ket, SHA2017 badge) zum Einsatz.
Von je 3 auf ebay ersteigerten 2-achsigen und 4-achsigen Flachwagen wurde von 2 Vierachsern und einem Zweiachser vorsichtig der Plastikaufbau entfernt und die Chassis aus Metall vermessen und in OpenSCAD eingegeben.
Über den am 2-achsigen Wagen montierten Schleifer kann ein 5V-Schaltnetzteil mit Vierweggleichrichter versorgt werden.
Mit einem Spannungsteiler parallel zum Brückengleichrichter aus 6.8 kΩ-Widerständen gegen die Wechselspannungen und 2 grünen Leuchtdioden in Serie gegen die negative gleichgerichtete Spannung VSS wird die jeweils positive Phase der Wechselspannung auf maximal 4.4 V begrenzt.
Wenn der analoge Trafo auf Null gestellt wird, geht die gleichgerichtete Spannung allerdings nicht ganz auf Null zurück.
(Der dicke Kondensator dient nur als Anschlusspunkt für die VSS und Ozsilloskop-Masse Krokodilklemmen.
Weil ein analoger Märklin-Trafo sekundärseitig galvanisch von der Schutzerde isoliert ist, führt das nicht zu einem Kurzschluss.)
Um ein saubereres digitales Signal zu bekommen und um die Badges gegen Verpeilung und Verpolung zu schützen, werden die Spannungsteiler noch um je einen 100 kΩ-Widerstand gegen VSS parallel zu den grünen LEDs vervollständigt und deren Ausgangssignal mit 74AHC14-Schmitt-Triggern gesäubert.
Ein Spannungsregler mit Brückengleichrichter und Digitalisierungsschaltungen für beide Wechselstromphasen wird mit doppelseitigem Klebeband auf dem 2-achsigen Wagen mit Schleifer befestigt. Das Chassis ist mit blauem Malerklebeband gegen die Platinen isoliert.
Mit OpenSCAD werden ein proof-of-concept Aufbau, eine Halterung für die SHA2017-Badge und eine Halterung für die r0ket entworfen und mit dem Lasercutter aus mitteldichter Faserplatte (MDF) ausgeschnitten.
In diesem Zeitlupenvideo sind die Badge-Wagen und der Spannungsversorgungswagen aneinandergehängt. Die SHA-Badge wird schon über den Versorgungswagen gespeist.
Die Spannungsversorgung für die r0ket und die Modulationssignaleinspeisung für beide Badges fehlen noch.
In der Zeitlupe erkennt man, dass die LEDs gegenphasig (mit der Differenzfrequenz zwischen der Bildaufnahmerate der Kamera und 50 Hz Netzfrequenz) flackern.
Mit so viel Overengineering und relativ wenigen Mitbewerbern haben wir den Hackerspacewagen-Wettbewerb gewonnen.
Vor dem 34C3 stand nur eine analoge Märklin-Eisenbahn zur Verfügung, und auf dem 34C3 war es viel zu hektisch, um viel mehr hinzubekommen als einen 74AHC14 Schmitt-Trigger (buchstäblich) abzurauchen und (diesmal mit Sockel) wieder zu ersetzen.
Nach dem Kongress haben wir [Paul]
angeschafft und Pauls S3/6 mit einem mLD3 Lok-Decoder 60982 digitalisiert.
Das digitale Signal wird mit einem RIGOL 1052E-Oszilloskop zunächst direkt vom Gleis,
danach an den komplementären Schmitt-Trigger Ausgängen des Spannungsversorgungswagens
gemessen, gespeichert, und mit einem USB-Stick als .wfm
-Dateien exportiert.
Die Daten im binären .wfm
-Format von RIGOL werden mit wfmutil in CSV konvertiert und in Mathematica importiert.
Der Fortschritt der Analysen findet sich in entsetzlich langen PDF-Ausdrucken von kaum weniger langen Wolfram Mathematica-Notebooks.
Das gemessene digitale Kontrollsignal wiederholt sich alle 50ms und besteht aus 3 durch Pausen getrennten Blöcken.
In Mathematica werden die Datenpakete Run-Length-codiert, um verschiedene Modulationsarten identifizieren und decodieren zu können.
Die zyklisch wiederholte Sequenz beinhaltet
im MMX-Format
Ein vorläufiger Parser in Mathematica decodiert dieses Paket zunächst in Bits als:
{1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0}
in trits:
{open, open, open, open, 0, open, open, open, open}
Das ist sowohl im ursprünglichen Motorola-Format als auch im MM2-Format ein illegales Paket, dessen Inhalt ignoriert wird, aber wahrscheinlich Märklin-Motorola-Decoder von unkontrolliertem Losfahren abhält.
im mfx-Format, das aus 2 mal unmittelbar hintereinander gesendeten mfx-Format-Frames besteht
im mfx-Format
Ein vorläufiger Parser in Mathematica decodiert dieses Paket zunächst in Bits als:
{SYNC, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, SYNC, SYNC}
und in einer 2. Stufe in Befehlssequenzen:
Das lange mfx-Paket wird interpretiert als aus 2 Frames bestehende Bit-Sequenz:
{SYNC, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, SYNC, SYNC, SYNC, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, SYNC, SYNC}
Der zweite Frame des langen mfx-Paketes ist mit den folgenden 2 kürzeren mfx-Paketen identisch.
Der erste Frame des langen mfx-Paketes wird als
decodiert.
Diese Decodierung, vor allem des MM2-Formats, muss noch vervollständigt und dann auf r0ket und SHA-Badge übertragen werden.
Die Betriebssysteme von r0ket, SHA2017 badge (und sino:bit und calliope-mini) müssen so weit verstanden werden, dass keine Interrupts ununterbrochene Datenaufnahme in Echtzeit und drahtlose Übertragung stören können.
Zunächst sollte ein Datenlogging in Echtzeit mit drahtloser Übertragung des unverarbeiteten Digitalsignals programmiert werden, damit die durch Unterbrechungen der Stromzufuhr vom Gleis bei fahrendem Zug entstehenden Signalstörungen verständlich werden.
Von den Signalstörungen hängt ab, wie ein robuster Parser auszusehen hat. Run length encoding ist bei einem gestörten Signal möglicherweise keine gute Lösung.
tatzelbrumm & Paul Rosset (FabLab Neckar-Alb).
Danke an Goswin für die Schmitt-Trigger, von denen mehrere anstatt von Spannungsreglern oder kaum mehr zu ersetzender Konferenzbadges abgeraucht sind.