Modernisiert: Märklin Kinderspielzeug

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):

Name Adresse Akku URL
Märklin 29100 Nahverkehrszug LINT G-H USB/LiIon https://www.maerklin.de/de/produkte/details/article/29100
Märklin 29200 ICE A-B 4x AA https://www.maerklin.de/de/produkte/details/article/29200
Märklin 29201 TGV A-B 4x AA https://www.maerklin.de/de/produkte/details/article/29201
Märklin 29202 Belgischer Hochgeschwindigkeitszug A-B 4x AA https://www.maerklin.de/de/produkte/details/article/29202
Märklin 29203 ICN C-D 4x AA https://www.maerklin.de/de/produkte/details/article/29203
Märklin 29204 Amerikanischer Hochgeschwindigkeitszug C-D 4x AA https://www.maerklin.de/de/produkte/details/article/29204
Märklin 29206 Mauszug C-D 4x AA https://www.maerklin.de/de/produkte/details/article/29206
Märklin 29207 Ferien-Express A-B 4x AA https://www.maerklin.de/de/produkte/details/article/29207
Märklin 29208 Eurostar A-B 4x AA https://www.maerklin.de/de/produkte/details/article/29208
Märklin 29209 Regional Express C-D 4x AA https://www.maerklin.de/de/produkte/details/article/29209
Märklin 29210 Güterzug C-D 4x AA https://www.maerklin.de/de/produkte/details/article/29200
Märklin 29212 TGV Duplex C-D 4x AA https://www.maerklin.de/de/produkte/details/article/29212
Märklin 29300 ICE A-B 4x AA https://www.maerklin.de/de/produkte/details/article/29300
Märklin 29302 Intercity C-D 4x AA https://www.maerklin.de/de/produkte/details/article/29302
Märklin 29303 ICN C-D 4x AA https://www.maerklin.de/de/produkte/details/article/29303
Märklin 29304 TGV Lyria A-B 4x AA https://www.maerklin.de/de/produkte/details/article/29304
Märklin 29306 TGV I-J 4x AA https://www.maerklin.de/de/produkte/details/article/29306
Märklin 29307 Airport Express – Hochbahn G-H USB/LiIon https://www.maerklin.de/de/produkte/details/article/29307
Märklin 29308 Landwirtschaft I-J 4x AA https://www.maerklin.de/de/produkte/details/article/29308
Märklin 29309 Güterzug G-H USB/LiIon https://www.maerklin.de/de/produkte/details/article/29309
Märklin 29330 ICE 3 I-J 4x AA https://www.maerklin.de/de/produkte/details/article/29330
Märklin 29334 Italienischer Schnellzug M-N 4x AA https://www.maerklin.de/de/produkte/details/article/29334
Märklin 29335 Schweizer Schnellzug M-N 4x AA https://www.maerklin.de/de/produkte/details/article/29335
Märklin 36100 Nahverkehrszug LINT G-H USB/LiIon https://www.maerklin.de/de/produkte/details/article/36100
Märklin 36101 Diesellokomotive BR 212 G-H USB/LiIon https://www.maerklin.de/de/produkte/details/article/36100

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.

Download on the App Store

 

 

 

 

 

 

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.