Kinder bringen dem Ingenieur neue Ideen, vor allem, wenn man in seinem eigentlichen Job die Digitalisierung in der Industrie via Industrie 4.0 und IoT voran treibt.
Inspiriert hat mich ein gebraucht gekauftes Märklin Kindereisenbahn Starter Set 29210 das 2012 auf den Markt kam und auf einem normalen Märklin C-Gleis fährt. Die Fahrzeuge sind jedoch speziell robust für kleine Kinder entwickelt worden, besitzen Kunstoffräder, Magnetkupplungen und Infrarot Fernbedienung.
Beruflich begegnen mir Protokolle wie MQTT, OPC UA und Rest API, meistens laufend auf ARM Cortex A Embedded Systemen, die per Web-App oder Smart iOS/Android App bedient werden. Ich bin beratend tätig, programmiere aber auch Software für diverse Firmen von Embedded bis hin zu iOS Apps in Swift. 10 Jahre habe ich in meinen vorherigen Jobs als Applikations Ingenieur für diverse Mikrocontroller Hersteller und Distributoren gearbeitet und hatte sonst meinen Schwerpunkt auf Embedded Mikrocontroller Hardware und Software gelegt. Über die Feiertage war mir mal wieder danach, tiefer Embedded zu programmieren und etwas von meinem jetzigen Job hinzu zu fügen.
Was passiert, wenn man ohne zu löten oder zu schrauben ein M5Stack Atom Lite für 10€ mit einem ESP32 und einem M5Stack Atom TailBat Akku für 10€ zusammen mit einem Märklin Kindereisenbahn Starter Set 29210 , das per IR gesteuert wird, verbindet?
Eine Modelleisenbahn, die per WLAN über Web-Browser und iOS App gesteuert werden kann! Auf den folgenden Bildern sieht man Atom Lite und Atom TailBat auf dem Wagon montiert. Atom Lite hat eine integrierte IR LED und kann zumindest auf kurze Distanz so auch die Lokomotive steuern.
Um die Reichweite des IR transmitters zu verbessern, empfiehlt sich diese Anpassung: Improving IR transmitter at ATOM Lite
Im Web-Browser / iOS sieht die Ansicht wie folgt aus (links Web-Sever, rechts native iOS App)
Zugegeben damit der Web-Server, der auf einem ESP32 läuft, nicht zu sehr ausgelastet ist, habe ich auf typische Web-App Frameworks wie VueJs verzichtet und habe eine einzige Website ganz “old Style” generiert.
Die Lokomotive wird dann über Dummy-GET-Aufrufe von Website Pfaden gesteuert, welche über Buttons ausgelöst werden.
http://<IP>/cmd/speed/<n>: n=-3…0…3, Geschwindigkeit in 3 Stufen vorwärts und rückwärts, 0= stop
http://<IP>/cmd/light: Licht ein-/ausschalten
http://<IP>/cmd/sound/horn: Horn-Sound abspielen
http://<IP>/cmd/sound/motor: Motor-Sound abspielen
http://<IP>/cmd/sound/coupler: Kupplung-Sound abspielen
Zusätzlich kann man auch einen Kanal definieren:
http://<IP>/cmd/<CHANNEL>/<CMD> CHANNEL=A,B,C or D, CMD wie oben beschrieben.
Beispiel:
http://maerklin292xx_gateway.local/cmd/A/light
Demo Video
IR-Protokoll
Das IR Protokoll ist unterschiedlich für jeweils einem Adresspaar. So haben A-B, C-D, G-H jeweils unterschiedliche Protokolle.
C-D Protokoll
C-D Timing
Das Protokoll besteht aus einem 5,4ms Start-Bit sowie 8-Bits, die jeweils 2,5ms lang sind. Nach jedem Commando müssen 10ms Lücke gelassen werden.
C-D Bits
Da das Protokoll von mir reverse-engineered wurde, weiss ich nicht genau, was ursprünglich eine 0 oder 1 sein sollte, sowie ob das Protokoll MSB oder LSB nutzt.
Ich habe mich für folgende Definition entschieden:
Hierbei ist ein 0-Bit, wenn Low 800us von High mit 1700us gefolgt wird. Ein 1-Bit wenn Low 1700us von 800us gefolgt wird.
Bit 7 wird bei jedem Tastendruck getoggled.
Bit 6…4 symbolisieren das Kommando
Bit 3…0 die Adresse, wobei es Adresse C 0101 und Adresse D 1010 gibt.
Unterstützte Lokomotiven / Sets
Derzeit werden Lokomotiven mit den Adresse A,B,C,D,G,H unterstützt. Jedoch ohne Garantie oder Gewährleistung, da ich bei mir nur 29200, 29210, 29100 und 29308 testen konnte. Hier eine Übersicht, welche Sets welche Adressen haben müssten (ohne Garantie oder Gewährleistung):
Software
Die Software wurde mit Arduino programmiert und besteht aus mehreren Bibliotheken.
- IRremoteESP8266 um IR Signale zu kodieren / dekodieren
Folgende Boardverwalter werden benötigt:
Source Code
Arduino Source Code verfügbar unter https://github.com/schreinerman/maerklin292xx_gateway
iOS App
Ich habe auch eine iOS App angefangen, die sich als “IR Train” im Apple AppStore befindet. Mit dieser App, verbindet sich das iPhone automatisch mit dem WLAN Hotspot Maerklin292xxGateway (Passwort: Maerklin292xxGateway). Beim Betätigen der Touch-Buttons werden automatisch Web Requests an 192.168.4.1 abgeschickt. Es können alle 4 Kanäle per App bedient werden.