Some history: Trains in MattzoBricks Train Automation System 1.0

The following video is a bit outdated, and describes how to operate LEGO trains in the first version of our MattzoBricks Train Automation System.

The video contains information about:

  • Our LEGO trains, their controller and power supply,
  • how our automation software controls the trains,
  • the tracks on which the trains are operating.
LEGO Train Automation in MTAS 1.0

In the video, we show how to control the trains with our nControl enhancements. Please note that we recently went away from nControl for different reasons, and control our trains now with “Rocrail”. Thus, the information in the video is more of historical value.

Trains in MattzoBricks Train Automation System 2.0

Overview

Our present automation platform, which we call MattzoBricks Train Automation System 2.0, supports the following types of train controllers:

  1. MattzoTrainController for Power Functions (MTC4PF)
  2. MattzoTrainController for Powered Up (MTC4PU)
  3. MattzoTrainController for Bluetooth (MTC4BT)

Have a look at the following diagram, which shows the differences between the different types of controllers:

MattzoBricks Train Automation System: Trains
MattzoBricks Train Automation System: Trains

MattzoTrainController for Power Functions (MTC4PF)

The MTC4PF operates LEGO trains with Power Functions motors. The core of the MTC4PF is a micro controller of type ESP-8266.

The controller receives messages from RocRail via MQTT, parses the commands and powers the motors. Motors are usually directly connected to the MTC4PF with standard Power Function cables, and the MTC4PF travels on board of the loco with the train.

There are different ways of building the MTC4PF. Here are some examples:

MTC4PF with battery
MTC4PF without battery
MTC4PF mini

One or two powered function motors can be connected to the controller. If two motors are attached, they can be configured to run in concurrent or reverse direction. Additionally, the controller has two ports for LEDs or other consumers, which can be used to switch train headlights or other accessories on and off.

Another really cool way of using the MTC4PF is to relay the Rocrail commands via Infrared to LEGO Infrared Receivers 8884. The MTC4Pf can stay on land or travel with the loco for better infrared reception in tunnels, behind tall buildings or landscapes, or if the layout extends over multiple rooms. If left on land, it can handle multiple trains at the same time.

LEGO Infrared Receiver 8884

It is also possible to use the MTC4PF to make 4DBrix WiFi Train Receivers compatible with our automation system. A single MTC4PF can control any number of 4DBrix controllers. For more information see below.

Watch this video to learn about the MattzoTrainController for Power Functions:

MattzoTrainController for Power Functions

Here is a video about the infrared support for the MattzoTrainController for Power Functions:

MTC4PF: Infrared Support!

Building instructions can be found here.

MattzoTrainController for Powered Up (MTC4PU)

The “MattzoTrainController for Powered Up” (MTC4PU) consists of a simple ESP-32 micro controller – nothing else! If you connect it to a simple power source like an USB power bank, then that’s all hardware you need.

This controller receives messages from RocRail via MQTT and WiFi. It acts as a bridge between the MQTT broker and one or more Powered Up Hubs, which it connects to via Bluetooth. A direct galvanic connection between the controller and Powered Up Hubs is not required, which makes deployment of the controller very flexible. One controller can control one or more powered up hubs. A single controller can even control multiple independent trains.

The following pictures shows six trains in a test setup, all being controlled by a single MTC4PU.

MTC4PU: Test setup in the MattzoBricks lab
MTC4PU: Test setup in the MattzoBricks lab

The controller can be placed somewhere in a central location of the train layout, or in a waggon of the train that it controls. Carrying the controller in the train has the advantage that the Bluetooth range problems, which regularly spoil the fun on larger layouts, are now a problem of the past.

No wiring or welding is required to build and use this controller. You just need to upload the firmware and configure it, and you’re good to control all of your Powered Up based trains.

Special thanks to Markus, who contributed the idea for this controller and also developed a prototype of the firmware.

Building instructions can be found here.

MattzoTrainController for Bluetooth (MTC4BT)

The MTC4BT is a new implementation of the MTC4PU based on Visual Studio Code and platform.io instead of Arduino IDE. Like the MTC4PU, it is also based on the ESP32 microcontroller.

The reason for the term “bluetooth” in the name of the MTC4BT is, that In addition to LEGO Powered Up hubs, it also controls SBricks.

Building instructions can be found here.

Support for 4DBrix WiFi Train Controller

4DBrix WiFi Train Controller

In the MattzoBricks Train Automation System 2.0, we have supported WiFi Train Controllers from 4DBrix over a longer period of time. As 4DBrix has left the market some time ago, these controllers are no longer available on the market, and the market for used 4DBrix parts is at our knowledge narrow. It can be assumed that the relevance of these controllers will continue to decrease over time. Anyway, if you own some of these controllers, you may use them with our automation platform if you install an older version of the MTC4PF firmware.

The MTC4PF firmware prior to version 1.0 was able to translate the Rocrail communication protocol into the genuine 4DBrix protocol. As both systems work on MQTT, the MTC4PF is just hooked up to the WiFi network and does its translation work directly on the message queues of the MQTT broker. It can be deployed anywhere on your premises and just needs access to your WiFi network – that’s all. No soldering or other electronic components are required to build the controller.

A single MTC4PF can control any number of 4DBrix WiFi Train Controllers.

Some general things

There is a couple of things that work indepedently of the specific MattzoTrainController that you use for a particular train. One important thing speed handling, which is a pretty complex topic. Other topics include the setup of locomotives in Rocrail, and letting trains run automatically from block to block.

I will cover some of the these topics in the near future on this page.

Thanks for your patience.

Outlook and next steps

We are constantly improving the MattzoTrainControllers. We are going to publish progress and the final products on this website.

Make sure to subscribe to our newsletter and social media channels to stay up to date!

27 thoughts on “Trains

  1. Hallo Mattzobricks, läuft die Parametrisierung der Lok komplett im Rocrail Standard ab oder hast du du da am Quellcode noch etwas programmiert? Ich verstehe noch nicht den Übergang vom WIFI Sender von Lego über den MQTT zu Rocrail.
    Ich bin begeistert von eurer Arbeit und bin über den weiteren Fortschritt sehr gespannt.

    Viele Grüße

    OnSnow

    1. Hallo OnSnow,
      wie ich sehe kennst Du Dich aus und stellst auch die richtigen Fragen. 🙂

      Der weiße Fleck auf der Landkarte ist tatsächlich die Verbindung zwischen den Train Controllern und RocRail. Dazu habe ich mir eine kleine Zusatz-Software (Arbeitstitel: Roc2Bricks) gebaut, die als Übersetzer zwischen Rocrail und den Train Controllern fungiert. Ich unterstütze momentan die Wifi-Empfänger von 4DBrix, aber es werden auch noch LEGO PoweredUp und meine eigenen MattzoTrainController hinzukommen. Neben der Übersetzungsleistung macht Roc2Bricks auch noch ein paar andere sinnvolle Sachen. Z.B. kontrolliert die Software, ob sich die Weichen- und Sensor-Controller regelmäßig zurückmelden. Falls nein, werden alle Züge gestoppt.

      Roc2Bricks ist mitten in der Entwicklung, daher kann ich es noch nicht veröffentlichen.

      Ich arbeite dran und danke für Deine Geduld!

      Gruß,
      Mattze

      1. Hallo Mattze,

        auskennen ist vielleicht nicht so korrekt. Ich würde gerne meine Züge automatisieren, da ich nicht bereit bin für jeden Zug die teuren Lego Preise für powerd up Module zu bezahlen. Ein weiterer Nachteil ist, dass man die Batterienboxen nicht mit Akkus betreiben kann. Da hat das alte Power Functions System viel mehr Möglichkeiten durch die Steckverbindungen.
        Ich verstehe das Prinzip deiner Automatisierung allerdings kann ich leider null programmieren und habe etwas Respekt davor die Controller nachzubauen, da das Programmieren mein weißer Fleck auf der Landkarte ist^^. Daher würde ich mich über ein kleines Tutorial der nötigen Programmierungstätigkeiten sehr freuen.

        Viele Grüße

        OnSnow

        1. Stimmt, PU hat tatsächlich ein paar Nachteile. Ich habe grundsätzlich schon Probleme mit der Basis-Technologie, nämlich Bluetooth. Bei großen Anlagen reißt da die Verbindung schnell ab, sobald sich der Zug zu weit vom Controller entfernt hat. Das ist in vielen Fällen schon ein grundsätzliches Ausschlusskriterium für PU.

          1. Update: wir glauben, das Reichweitenprobleme bei Powered Up gelöst zu haben: die Verbindung zu Powered Up wird ein eigener Controller namens “MattzoTrainController for Powered Up” übernehmen. Die Controller kann einfach in die Lok oder sogar einen Waggon eingebaut werden und kommuniziert drahtlos mit Powered Up. So ist der Controller immer in Reichweite zum PU Hub, und die Reichweitenprobleme sind gelöst. Der “MattzoTrainController for Powered Up” selbst kommuniziert wie gewohnt über WiFi und MQTT mit Rocrail.

  2. Hallo Matze,
    wird es auch möglich sein, die Lego PU Hubs über die Laptop Bluetooth Schnittstelle mit Rocrail zu verbinden?
    Viele Grüße
    Hans

    1. Ja, das ist auf jeden Fall geplant. Ich habe selbst eine Reihe von Loks, die Powered Up Hubs drin haben. Wir werden PU, 4DBrix Wifi Train Receiver und unsere eigenen MattzoTrainController unterstützen. MattzoTrainController kann sich jeder selbst bauen, die Firmware stellen wir dann als open source Software bereit.

  3. Hallo Mattzobricks,
    vielen Dank für die super Ausarbeitung und die vielen Ideen.
    Auf eurer Basis konnte ich mir einen eigenen Traincontroller mit einem NodeMCU und dem NodeMCU Motorshield erstellen.
    Im eigentlichen Program brauchte ich bis auf die Motoransteuerung nicht viel anpassen.
    Im setup_mqtt habe ich zusätzlich einen subscribe (client.subscribe(“rocrail/service/command”);) eingesetzt um die ganzen Overheadmeldungen (Info) gleich auszuschliesen.
    Auch habe ich zuerst die id abgefragt. Sofern die Nachricht nicht für den Controller ist, brauch diese nicht weiter ausgewertet zu werden.
    Für die Signale und Weichen werde ich einen oder mehrere PCA9685 verwenden. Da diese skalierbar sind kann man alle Weichen oder Signale mit einem Controller steuern.

    Viele Grüße
    Tom

    1. Danke, Tom – es freut mich, dass es auch bei Dir geklappt hat. Ich bekomme täglich Nachrichten von Leuten, die die Sache erfolgreich zum Laufen gekriegt haben und begeistert ihre Eisenbahnen mit MattzoControllern und Rocrail steuern.

      Wir sind bei den MattzoTrainControllern übrigens auf der Zielgeraden und habe eine erste stabile Version. Wenn ich etwas Zeit habe, drehe ich das nächste Video und stelle es mit der Dokumentation für den MattzoTrainController for Power Functions online.

      Wir haben hier mittlerweile ein kleines, aber stetig wachsendes Team von LEGO-Eisenbahn Fans mit ganz unterschiedlichen Kompetenzen, die gern etwas beitragen wollen. Falls Du auch mitmachen willst, kannst Du mir gern mal eine E-Mail oder eine Facebook-Nachricht schicken.

      1. Hi Mattze,
        FB- nachricht ist unterwegs.
        Auch wenn meine Kernkompotenzen eher auf Copy&Paste bestehen (Guttenberg wäre stolz auf mich)., Aber ich gehe berufsbedingt gerne abseits von ausgetretenen Pfaden.
        Ich freue mich auf den Gedankenaustausch
        Tom

  4. Hallo Herr Runte/Mattze/Mattzo (wie soll man eigentlich sagen? ^^),
    ich finde das Projekt sehr spannend und würde gern sowohl die Zug- als auch Weichensteuerung gern mal ausprobieren.
    Was ich aber entweder übersehen oder noch nicht verstanden habe: wie kommt man eigentlich an die Controller? Ich kann gern auch Code Testen oÄ, je nach Software, worauf das aufsetzt.
    Ich freue mich auf jeden Fall über Nachrichten, Updates oder gern auch persönlichen Austausch!
    Viele Grüße aus Köln,
    Matthias

    1. Hallo Matthias,
      ich bin der Typ aus den Videos und werde meist Mattze genannt. Die Controller muss man sich selbst bauen, d.h. Einzelteile kaufen, bauen, Software aufspielen. Ich schließe für die Zukunft grundsätzlich erst mal nichts aus, und es gibt bei Mattzobricks im Hintergrund mittlerweile ziemlich viele helfende Hände, die ganz unterschiedliche Dinge beisteuern. Ich bin genauso gespannt, was die Zukunft bringt – vielleicht kann man die ganzen Dinge irgendwann sogar kaufen? Mal schauen.

      Gruß,
      Mattze

  5. Guten Tag Mattze,
    Erstmal grosses Lob für deine bisherige Arbeit.
    Es gibt ja auf YT gute Tutorials für Rocrail von den Modellbauern jedoch nichts von Lego. Von diesen kann man gut das erstellen eines Gleisplans, setzen von Blöcken und Rückmelder abschauen. Wass ich jetzt bereits erstellt habe.
    Habe nun bereits einige Controller gebaut aber noch nicht programmier
    Wird es in Zukunft auch Videoanleitungen geben wie du die Mattzocontroller programmierst und diese in Rocrail einbindest?
    Das Handwerkliche ist bei mir kein Problem jedoch habe keine Ahnung von programmiern.

    grüsse aus Luzern

    1. Hallo Jonas,
      ich würde Dir empfehlen, die Arduino IDE herunterzuladen. Damit kannst Du die Firmware am leichtesten auf die Controller spielen.

      Deine Wünsche nehme ich mal auf die Liste auf versuche, dazu bei Gelegenheit mal ein Video zu machen.

      Gruß,
      Mattze

  6. Hallo Mattze,

    erstmal großes Lob für die ganze Arbeit und die Ideen, welche du innerhalb der Community und auf Youtube teilst. Ich bin auch sehr interessiert am Thema Automatisierung und werde mich erstmal im Kleinen ausprobieren. Ich besitze auch zwei BuWizz Einheiten (Bluetooth) welche über die höhere Spannung dann vor allem schnelle Loks wie den TGV oder besonders schwere Züge wie die Ludmilla antreiben sollen. Meinst du der ESP-32 kann auch die BuWizz oder für andere vielleicht interesant SBricks ansteuern?

    Weiterin viel Erfolg und beste Grüße
    Stephan

    1. Hi Stephan,
      danke. Ich halte es nicht für ausgeschlossen, auch Buwizz und/oder Sbricks mit in das Mattzobricks Train Automation System integrieren zu können. Das würde vermutlich ähnlich zum MattzoTrainController for Powered Up funktionieren, den ich demnächst veröffentlichen werde.

      Gruß,
      Mattze

  7. Hallo Mattze!
    Super Sache!!!
    Finde es auch sehr freundlich, offen und ehrlich dokumentiert!
    Eine Frage: Deine SW würde doch dann auch prinzipiell auf einem “M5Stack Atom laufen” oder?
    Der bringt z.B. als Powered Up “Mitfahrer” auch gleich ein Gehäuse mit.
    Gruß
    Benjamin

    1. Hi Benjamin,
      danke für das Lob.

      Ich habe tatsächlich schon zwei von den Dingern bestellt und werde mal schauen, ob ich die einsetzen kann. Das Format ist genial (müsste auf eine Fläche von 3×3 Noppen passen), und halbwegs vernünftige Buchsen für ein paar LEDs scheint das Ding auch zu haben.

      Ich werde berichten – wäre eine topp Lösung!

      Gruß,
      Mattze

  8. Hallo Mattze,

    ich bin begeistert von eurem Fortschritt in den letzten Monaten.

    Ich habe mal noch ein Paar Fragen:

    1. Wird noch die Brückensoftware Rock2Bricks benötigt oder hat sich das mit den Traincontrollern erledigt?

    2. Kann ich eine Anlage auch step bei step bauen? 1. Sensoren + Traincontroller und dann nach und nach mit Signalen und weichen ergänzen?

    3. Unterstützt der PF Controller auch den Motor von Bluebrixx? Lego liefert ja leider nicht mehr

    Vielen Dank

    Grüße

    OnSnow

    1. Hallo OnSnow,
      freue mich, dass unsere Errungenschaften Dir gefallen. Geht uns auch so! 🙂

      Zu Deinen Fragen:
      1. Alle MattzoTrainController kommen ohne Roc2Bricks aus. Wir haben Roc2Bricks erst einmal auf Eis gelegt, da es derzeit nicht benötigt wird. Vielleicht kramen wir das Projekt zu einem späteren Zeitpunkt noch einmal hervor, z.B. zu einfacheren Konfiguration von Controller usw. Mal schauen.
      2. Auf jeden Fall. Ich würde empfehlen, mit den Weichen zu beginnen. Dann kannst Du die Weichen schon mal remote umschalten und hast sofort einen echten Nutzen für Deine Anlage. Dann kommen die MattzoTrainController dran. Sensoren machen nur für den Automatikbetrieb wirklich Sinn, daher würden die als letztes dazu kommen. Signale haben in Rocrail nur dekorativen Charakter, die können nach Lust und Laune irgendwann dazu kommen.
      3. Weiß ich nicht. Getestet haben wir mit LEGO Powered Up Zugmotoren und irgendwelchen chinesischen Nachbauten von Ali Express für kleines Geld. Diese laufen allesamt einwandfrei. Daher würde ich tippen, dass der Bluebrixx Motor auch gut läuft.

      Viel Erfolg beim Basteln!

      1. Die Bluebrixx Akku Box hat 7.4 V am Ausgang, soweit ich weiß.

        Wenn man direkt mit dem Controller die Box ansteuern will, wird das nicht klappen, da die Box auf 2.4GHz funkt und nicht per Infrarot. Man kann also die Signale auch nicht “caputren” und dann anschauen. Sehr schade 🙁

  9. Ich bin durch Youtube auf dieses Projekt gestoßen und bin darüber mehr als begeistert.
    Danke schon mal dafür.
    Mich würde interessieren ob man die Akku Box von Bluebrixx statt der alten Power Functions Box benutzen kann, um die Züge mit dem MattzoBricks Controller zu automatisieren.

    Gruß
    Dirk

  10. Hallo,

    Cooles Projekt! Würde ich gern nutzen um meinen “Buben” 10J der “zugbegeistert” ist ein wenig für das Thema Computer / Programmierung zu interessieren. Und für mich selber wäre es auch Spaß. Vorab – ich hab zwar von Computern ein wenig Ahnung, aber von so hardwarenaher Programmierung wie hier leider nicht.

    Problemstellung – uns sind die Zugmotoren ausgegangen und ich will neue nachbestellen. Bloß welche? Folgende Frage hierzu:

    Mir ist der Lego Powered Up Hub 88009 mit 50 Euronen zu teuer, iBes wo man das mit dem MTC4PF (ohne IR; direkte Verbindung zum Zugmotor) ja auch hinbekommt 🙂 und dabei auch gleich was lernt. Welche Möglichkeiten hab ich jetzt?
    +) Versuchen einen alten PF Zugmotor 88002 irgendwo zu bekommen und den an den MTC4PF drankabeln
    +) oder kann man den neueren Lego PU Zugmotor 88011 auch an den L9110 motorshield d MTC4PF Steuerung drankabeln?
    +) oder hat es seit E02 jemand geschafft den Bluebrixx Zugmotor anzusteuern (entweder über RC an die Bluebrixx Akkubox oder direkt Bluebrixx-Motor MTCPx ?

    MfG,
    Christoph H.

    1. Hallo Christoph,
      am besten Du stellst die Frage mal im Forum. Ich empfehle ganz normale Power Functions Motoren, idealerweise (aber nicht zwingend) von LEGO.

      Gruß,
      Mattze

  11. Cooles Projekt! Ich werde das eine oder andere dankend nachbauen.

    Gleich noch ein Vorschlag: Es wäre total der Hammer, wenn ein MTC4xx (BT?) den Eisenbahnempfänger Gen.2 von Bluebrixx unterstützen würde: https://www.bluebrixx.com/de/trains/401289/Eisenbahn-Empfaenger-mit-Akku-Box-Generation-2-BlueBrixx-Special .
    Der hat mehr Fahrstufen als das Lego Vorbild und kostet nicht viel. Bei der gleicher Größe wie ein Lego PF Empfänger, nur mit mehr Funktionen…
    Dann würde ich alle meine Züge auf MTC umrüsten.

Leave a Reply to Mattze Cancel reply

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