image

Gustav Wostrack studierte im Rahmen seiner Tätigkeit als Zeitsoldat Elektrotechnik (Schwerpunkt Nachrichtentechnik), danach folgte sein Studium der Informatik mit Schwerpunkt Linguistik mit anschließender Tätigkeit als Projektleiter für große IT-Projekte bei der Bundeswehr. Seit 2016 ist er pensioniert. Nebenberuflich befasst er sich intensiv mit Mikroprozessoren und deren Anwendung, insbesondere bei seinem zweiten Interessengebiet, der Modelleisenbahn.

image

Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern – können Sie auch das entsprechende E-Book im PDF-Format herunterladen. Werden Sie dazu einfach Mitglied bei dpunkt.plus+:

www.dpunkt.plus

Gustav Wostrack

Digitale Modellbahn
selbstgebaut

CANguru-Steuerung
mit ESP32 in Arduino-Umgebung

image

Gustav Wostrack

Lektorat: Gabriel Neumann

Bibliografische Information der Deutschen Nationalbibliothek

1. Auflage 2020

Hinweis:

Schreiben Sie uns:

Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.

5 4 3 2 1 0

Inhalt

Einführung

1Das Buch für den motivierten Modelleisenbahner

Wie ist das Buch aufgebaut?

Ziele der Entwicklung

Big Picture

Die Modellbahnanlage

Die funktionale Leistungsbeschreibung

2Jetzt bauen wir endlich

Der ESP32

ESP32-Module

ESP-WROOM-32

Der Olimex ESP32-EVB

M5Stack ESP32-CAM

Das Laden der Programme

Tag 1: … und es werde grün

Was ist das Ziel?

Was wird benötigt?

Der Aufbau der Grundplatte

Installation von Win-DigiPet

Tag 2: Jetzt kommt Bewegung ins Spiel

Was ist das Ziel?

Was wird benötigt?

Der Gleisaufbau

Die CANguru-Bridge

Inbetriebnahme der Anlage

Zusammenfassung

Tag 3: Wo sind meine Züge?

Was ist das Ziel?

Was wird benötigt?

Aufbau der Hardware

Das Basismodul

Der Gleisbesetztmelder

Die Melder

Win-DigiPet

Aufbau der Gleisanlage

Zusammenfassung

Tag 4: Jetzt kann man schalten und walten

Ziel des 4. Tages

Was wird heute benötigt?

Um- und Einbau der Weiche

Steuern mit Mini-Servo

Einbau der Weiche

Umbau mit Linear-Servo

Der Decoder

Die Landschaft wird modelliert

Zusammenfassung

Tag 5: Signale regeln den Betrieb

Was wollen wir am Tag 5 erreichen?

Was wird für die Signale und die Landschaft benötigt?

Die Formsignale

Was brauchen wir für die Formsignale?

Umbau der Signale

Die LED-Signale

Der ESP32 auf dem Breadboard

Die Welt ist bunt und unsere Anlage auch

Zusammenfassung

Tag 6: … und es wurde Licht

Ziel dieses Tages

Was wird für den Lichtdecoder benötigt?

Der Lichtdecoder

Anschluss der LEDs am Beispiel eines Wohnhauses

Zusammenfassung

Tag 7: Eine ganz neue Sichtweise

Materialliste

Installation und Inbetriebnahme des Kamerawagens

Zusammenfassung

3So funktionieren die CANgurus

Die Software-Entwicklungsumgebung

Installation der IDE

Unser erstes Programm

Programmieren in einer Arduino-Umgebung

setup()

Konzept EEPROM

Konzept TIMER/Ticker

loop()

Vom Programm zum Board

Der CAN-Bus

Der Blick aufs Ganze

Der Basisdecoder

ESP-NOW als Alternative zum WLAN

Der Decoder startet eine Wifi-Session im AP-Mode mit der eigenen MAC-Adresse und dem Präfix »CNgrSLV«

Der Decoder initialisiert sein ESP-NOW-System

Den Master hinzufügen

Nach Erhalt einer Quittung sind die Decoder empfangsbereit

PING

SWITCH_ACC

BlinkAlive

Die Decoder senden ihre PING-Antwort

Die Decoder senden Konfigurationsdaten

CONFIG_STATUS

SYS_CMD/SYS_STAT

Zusammenfassung

Der Weichendecoder

Festlegen der Weichenadressen

Die Empfangsroutine

Das Stellen der Servos

Die Ausladung

Zusammenfassung

Der Formsignaldecoder

Der LED-Signaldecoder

Der Lichtdecoder

Der Gleisbesetztmelder

Die CANguru-Bridge

Die CANguru-Bridge registriert Wifi-Sender mit dem Präfix »CNgrSLV« als eigene Clients

Eine Quittung an die Clients geben

Vom CANguru-Server den Frame 0x88 empfangen und mit 0x89 antworten

Die Kommunikation der CANguru-Bridge

Die CANguru-Bridge meldet sich über Telnet im Ausgabefenster des CANguru-Servers

Die CANguru-Bridge empfängt die Datei »lokomotive.cs2« vom CANguru-Server

Die CANguru-Bridge startet die Gleisbox

Die CANguru-Bridge sendet einen PING an die Decoder

Der CANguru-Server verfolgt die Übertragung der Konfigurationsdaten

Wenn alle Decoder sich gemeldet haben, kommt die Meldung »Start WDP«

Zusammenfassung

Der CANguru-Server

Der CANguru-Server sendet einen CAN-Frame mit Cmd 0x88

Der CANguru-Server trägt die IP-Adresse der CANguru-Bridge in das Feld oben links ein

Der CANguru-Server empfängt die PING-Antworten der Decoder

Der CANguru-Server baut eine Liste der Decoder auf

Der CANguru-Server ruft nacheinander alle Decoder aus der Liste auf und fordert ihre Konfigurationsdaten an

Die Konfigurationsdaten ändern

mfx-Lokomotiven erkennen

4Wenn die Bahn fertig aufgebaut ist

PC-Komponenten

Steuersoftware

Der CANguru-Server

Start der CANguru-Bridge

Start von Win-DigiPet

Konfiguration der Decoder

Verwaltung des Lokbestands

Modellbahnkomponenten

Die CANguru-Bridge

Gleisbox

Der Weichendecoder

Der Signaldecoder

Die Formsignale

Die LED-Signale

Der Gleisbesetztmelder

Der Lichtdecoder

Der Kamerawagen

Inbetriebnahme der Anlage

Der Weg zum Automatikbetrieb

Fahrstraßen

Zugfahrten

Die Automatik

Stichwortverzeichnis

E

image

Einführung

Warum denn, bitteschön, »CANgurus«?

Kängurus sind bekannt. Sie leben vornehmlich in Australien und werden – dort, wo sie ihren Lebensraum haben – häufig als Plage empfunden. Das mag subjektiv auch so sein, wenn sie mehr schaden als nutzen.

Ganz anders ist es mit den CANgurus.

Hinter diesen CANgurus verbergen sich elektronische Module für Modelleisenbahnen, also Decoder, wie Weichendecoder oder Gleisbesetztmelder, die über den CAN-Bus gesteuert werden bzw. dessen Format benutzen.

CANgurus leiten ihren Namen von der Nutzung des CAN-Busses ab.

Diese Module sind so einfach aufgebaut, dass es jedem, der bereits einmal einen Lötkolben in der Hand hatte, nicht schwerfallen dürfte, sie nachzubauen. Diese einfachen Module entpuppen sich schnell als die kleinen Helferlein auf der Modelleisenbahn. Sie sind nur von den Ausmaßen her klein. Ihre Funktionalität ist genau das Gegenteil. Vor allem ist ihr Innenleben vollkommen offengelegt.

Bei einem Hobby ist häufig auch der Weg gleichbedeutend mit dem Ziel. Insofern wird hier die Klientel angesprochen, die primär Freude am elektronischen Basteln hat, am Ende aber auch nicht traurig ist, wenn das fertige Werk funktioniert und noch weitere Freude bereitet. Wenn also ein wenig elektronisches und computertechnisches Verständnis vorhanden ist, ist dieses Buch das richtige für Sie. Es ist nicht nur eine Beschreibung, die man bestaunen kann, sondern auch eine, die wahrscheinlich Lust aufs Nachbauen macht und diese dann auch befriedigen kann.

In diesem Buch erfahren Sie alles, was notwendig ist, um diese kleinen Komponenten aufzubauen und nutzbringend auf Ihrer Modellbahn einzusetzen. Mit dem Wissen haben Sie zudem das Rüstzeug, eigene Funktionen zu entwickeln und sie auf Ihre eigenen Bedürfnisse anzupassen.

Das Buch ist auch für denjenigen interessant, der noch keine Modellbahn besitzt. Ziel dieses Buchs ist es nämlich außerdem, den Leser beim Aufbau einer digitalen Modelleisenbahn zu führen. Dabei liegt allerdings der klare Schwerpunkt auf dem digitalen Anteil, also allem, was zur Steuerung des rollenden Materials notwendig ist. Natürlich müssen Lokomotiven wunschgemäß fahren, aber ebenso werden Weichen oder Signale geschaltet. Damit das Ganze noch etwas mehr Freude bereitet, gibt es weitere Spaßmacher, beispielsweise der Kamerawagen, der uns ganz neue Einblicke in die Anlage verschafft. Der Aufbau der Anlage und deren »Begrünung« laufen parallel zu dem der Elektronikwelt ab. Dabei muss der Aufbau der Modellbahn warten, wenn Digitalkomponenten gebaut werden, die zum Weiterbau notwendig sind. Dieses Buch erklärt Details für den Aufbau nur so weit, wie das zum Gesamtverständnis notwendig ist.

Im Laufe der einzelnen Kapitel wird der Leser nahezu alle Komponenten, die zur Steuerung einer Bahn notwendig sind, kennenlernen und aufbauen. Das bedeutet: Die Hardware wird gelötet und die Software wird aufgespielt. Wer für das Erstellen der Programme keine Zeit oder keine Lust hat, kann die vorhandenen Programme so nehmen, wie sie angeboten werden. Dieser Weg schränkt natürlich die Möglichkeit ein, die Komponenten eigenen Vorstellungen anzupassen oder zu neuen Funktionalitäten weiterzuentwickeln. Auch das Löten ist nicht zwingend erforderlich, denn einige Komponenten können mit wenig Aufwand ohne Lötkolben auf kleinen Breadboards in wenigen Minuten aufgebaut werden. Doch davon später mehr.

Zwei Komponenten werden fertig gekauft: die Märklin-Gleisbox und ein Steuerungsprogramm für den Windows-PC. Ich habe mich bereits vor langer Zeit für Win-DigiPet entschieden, wovon die zwar kostengünstige, aber dennoch komfortable »small-Version« ausreichend für unsere Zwecke ist.

Alle Quellen sowie einige weitere Dokumente können bei https://github.com/CANguru-System heruntergeladen werden.

1

image

Das Buch für den motivierten Modelleisenbahner

Wie ist das Buch aufgebaut?

Das Ziel dieses Buchs ist eine funktionierende digitale Modellbahn. Nicht als Blackbox, von der man nicht so genau weiß, warum sie eigentlich funktioniert. Folgen Sie den Anleitungen dieses Buchs, kennen Sie am Ende – wenn Ihnen das wichtig ist – jedes Detail. Dabei sind die Wege dorthin vielfältig. Dies drückt sich bereits in der Kapitelstruktur aus. Ein Kapitel – nämlich dieses – sollte von allen gelesen werden. Andere sind nur für diejenigen interessant, die sich bei der Beschreibung des Adressatenkreises in der Kapitelüberschrift angesprochen fühlen. So ist das zweite Kapitel dem Bastler gewidmet und beschreibt recht ausführlich, wie die Decoder und parallel dazu die Anlage aufgebaut werden. Man könnte auch sagen, dieses Kapitel ist der Schwerpunkt des Buchs. Das darauffolgende Kapitel erklärt, wie das alles funktioniert. Dafür werden nur wenige Grundlagen benötigt. Dieser Teil ist für denjenigen, der auch mal selbst ein Stück Software erstellen will, von herausragender Bedeutung. Wer einfach nur basteln will, muss es nicht zwingend lesen. Denn man kann das Ziel erreichen, auch ohne das letzte Detail der angewandten Technik auch wirklich durchdrungen zu haben. Dann folgt der Teil, der für den Nutzer – meinetwegen auch den Spieler – wichtig ist. Hier steht nämlich, wie die Anlage zu bedienen ist. Schließlich will man nach dem vielen Schweiß, den das Aufbauen gekostet hat, durch intensives Spielen mit der Anlage auch etwas Freude genießen.

Doch genug der Vorrede. Los geht’s.

Ziele der Entwicklung

Bevor ich mit der eigentlichen Entwicklung der Decoder begonnen habe, gab es bereits eine längere Phase, in der ich Überlegungen anstellte, was meine Decoder leisten können sollten und welche Randbedingungen dabei Berücksichtigung finden sollten. Das führte zu den folgenden Entwurfskriterien.

Indem wir diese Entwicklungsziele verfolgen, stellen wir sicher, dass für den Bau und den Einsatz der CANguru-Komponenten keine vertieften Kenntnisse notwendig sind. Wenn ein Abschnitt einmal zu kompliziert scheint, um ihn ganz zu verstehen, gehen wir einfach über solche Stellen hinweg und kommen dennoch weiter zurecht.

Die aufgeführten Ziele lassen sich nur erreichen, wenn ein höchst leistungsfähiger Mikroprozessor kostengünstig zur Verfügung steht. Es ist der ESP32 von der Firma Espressif.

image

Abb. 1–1Der ESP32 ist auf diesem Modul verbaut.

Allerdings verbauen wir nicht diesen Chip direkt, sondern wir kaufen ihn auf einer kleinen Platine, die alle zum Betrieb notwendigen Bauelemente bereits mitbringt. Dies erleichtert den Aufbau der Module immens.

Big Picture

Bislang wurde schon viel über die Komponenten geredet. Um welche Komponenten handelt es sich eigentlich bzw. wie hängen sie zusammen?

Beide Fragen werden anhand der folgenden Grafik beantwortet.

image

Abb. 1–2Das CANguru-System im Überblick

Der Dreh- und Angelpunkt des Systems ist die CANguru-Bridge.

Sie verbindet die Steuerungssoftware Win-DigiPet auf dem PC mit den Modellbahnkomponenten.

Demnach werden alle Befehle, die der Nutzer über die Steuerungssoftware an die Loks, Weichen oder Signale gibt, über das Ethernet an diese Komponente geleitet, dort ggf. angepasst und an das zuständige Modul kommuniziert. Dies sind u. a. Änderungen an einer Weichen- oder Signalstellung oder der Geschwindigkeit der Loks. Somit werden auch alle Befehle, die den direkten Fahrbetrieb betreffen, von hier an die Märklin-Gleisbox geführt. Dafür werden die zugehörigen Befehle im CAN-Format von dem Steuerungsprogramm auf dem PC über das Ethernet dann mithilfe dieser Komponente auf einen physikalischen CAN-Bus gelegt und an die Gleisbox geleitet. Dort wird dann das entsprechende Signal erzeugt und über das Gleis an die Lokomotiven geführt.

image

Abb. 1–3Dieses Gasthaus spielt später in der Modellbahnanlage eine herausragende Rolle.

Für die Stromversorgung der Decoder gibt es lediglich eine zentrale Stelle, die eine Spannung von 5 Volt zur Verfügung stellt. Dies ist dann auch die einzige eingehende Leitung an die Decoder. Das reduziert die zu verlegenden Leitungen wiederum. Dadurch führen beispielsweise zum Servodecoder (zur Steuerung der Weichen oder Signale) lediglich zusätzlich die Kabel für die einzelnen Servos. Alle notwendigen Infos kommen über die Luftschnittstelle zum Decoder. Dies ist noch ein Beitrag zur Übersichtlichkeit und damit werden mögliche Fehler durch falsche Beschaltung reduziert.

Die Bridge nimmt aber auch Informationen aus dem Modellbahnsystem auf und leitet sie an das Steuerungsprogramm weiter. Dies sind insbesondere Rückmeldungen, also die Information, dass ein Zug eine bestimmte Stelle im Gleisbild erreicht bzw. passiert hat. Diese Information wird durch Gleisbesetztmelder erzeugt.

Beim Anmeldeprozess einer mfx-Lokomotive werden Daten erzeugt, die nicht direkt an das Steuerungsprogramm, sondern dieses Mal an den CANguru-Server weitergeleitet werden. Warum an diese PC-Komponente? Die Antwort lautet, dass diese Informationen zunächst noch weiterbearbeitet werden müssen. Dafür ist ein Mensch-Maschine-Interface notwendig. Und um es kurz zu machen: Alle Aktivitäten, die eine Nutzereingabe zur Verwaltung des Systems benötigen, werden über dieses Modul, den CANguru-Server, vorgenommen.

Im oben abgebildeten Schaubild sind als Decoder lediglich diejenigen für die Weichensteuerung sowie die Gleisbesetztmelder eingezeichnet. Darüber hinaus gibt es weitere Decoder, die die Modellbahn interessant machen: einer, der die Formsignale steuert, einer, der das LED-Signal bedient, und, um nur noch einen zu nennen, natürlich ein Lichtdecoder mit vielen Funktionen.

Das folgende Bild zeigt die Minimalausstattung, die man zum Betrieb einer einfachen Anlage benötigt.

image

Abb. 1–4Die Minimalversion quasi als CANguru-Kernsystem

Neben der Gleisanlage und dem rollenden Material sind es die vier Komponenten am unteren Rand. Rechts erkennt man die oben schon angeführte Märklin-Gleisbox mit Netzteil. Daneben liegt die CANguru-Bridge. Sie hat drei Anschlüsse, den USB-Anschluss, der die Platine mit Strom versorgt, sowie ein Ethernet-Kabel. Dieses Kabel stellt die Verbindung zwischen Gleisanlage und PC her. Der dritte Anschluss führt zur Märklin-Gleisbox. Über dieses Kabel laufen alle für die Loks relevanten Informationen im CAN-Format. An die Gleisbox ist weiterhin die Gleisanlage angeschlossen. Damit schließt sich der Kreis vom PC über das ESP32-Modul, dann die Gleisbox und schließlich die Gleise mit den Loks.

Für die Programmierung der Software für die Decoder nutze ich die weit verbreitete Programmiersprache C++ und die kostenlos erhältliche Programmierumgebung Visual Studio Code mit dem Aufsatz PlatformIO. Und um das Rad nicht jedes Mal neu erfinden zu müssen, setze ich wo immer möglich Makros und Bibliotheken aus der Arduino-Welt ein.

Die Modellbahnanlage

Wie beschrieben ist es das Ziel des Buchs, den Leser beim Aufbau einer digitalen Modellbahn zu begleiten. Zwar liegt der Schwerpunkt nach wie vor auf den digitalen Aspekten, doch es soll auch eine Modellanlage aufgebaut werden, in die zu gegebener Zeit die entwickelten und zusammengelöteten Komponenten integriert werden. Alle Einzelheiten werden später noch dargeboten, deshalb hier nur ein Blick auf den Gleisplan.

image

Abb. 1–5Der Gleisplan unserer Modellbahn

Zugegeben, der Plan ist übersichtlich. Er erlaubt aber dennoch vielfältige Spielmöglichkeiten. Das ist wichtig, da wir nicht nur eine fertige Anlage abliefern wollen, sondern unter Zuhilfenahme des Steuerungsprogramms Win-DigiPet auch einen vollautomatisierten Spielablauf.

Doch damit wir bei allen Details nicht den Überblick verlieren, schreiben wir im nächsten Abschnitt auf, was diese Anlage leisten soll und wie die Randbedingungen dafür aussehen.

Die funktionale Leistungsbeschreibung

Wenn man ein Haus baut, dann hat es sich bewährt, dass man vorab einen Plan erstellt, eine detaillierte Zeichnung.

image

Abb. 1–6Dieses Modellhaus spiegelt den Charakter unserer Modellanlage gut wieder.

Den Grundriss, den man für das Haus wählt, wägt man sorgsam ab. Dabei spielen diverse Aspekte eine Rolle. Wichtig ist natürlich die Anzahl der Personen, die in dem Haus wohnen sollen, ebenso wie die zur Verfügung stehende Grundfläche. Analog dazu wollen wir auch bei der Planung und Realisierung unserer Modellbahn vorgehen.

Zunächst erstellen wir eine Beschreibung, was die Modellbahn alles leisten soll. Wir werden uns natürlich nicht auf die Bemaßung beschränken, sondern auch auflisten, welche Handlungsabläufe mit der Bahn möglich sein sollen. Wichtig ist in diesem ersten Schritt, dass wir noch nicht zu technisch sind, sondern uns auf die Funktionen beschränken. Beispielsweise soll erkannt werden, dass ein Zug eine bestimmte Stelle auf der Anlage passiert hat, damit daraufhin ein Signal umgestellt werden kann.

Weil in dieser Beschreibung die Leistung der Bahn anhand ihrer Funktionen gezeigt wird, nennen wir das Ganze »funktionale Leistungsbeschreibung«. Anschließend werden wir dieser Beschreibung die Anforderungen an die einzelnen Komponenten entnehmen und dann in den späteren Kapiteln verfeinern. Zum Schluss nehmen wir uns wieder die funktionale Leistungsbeschreibung vor und schauen, ob wir alle gewünschten Funktionen auch tatsächlich realisiert haben. So sollte eigentlich nichts verloren gehen und die Bahn alles leisten, was wir am Anfang aufgeschrieben haben.

Also los geht’s!

Die Bahn soll mit Märklin C-Gleisen aufgebaut werden. Auf der Bahn sollen sowohl normale digitale Wechselstromlokomotiven als auch mfx-Loks fahren können.

Der Platzbedarf sollte das Maß von 1,20 m x 1,80 m nicht überschreiten. Die Bahn soll weiterhin enthalten: mindestens eine Brücke, Modellierung in einem hügeligen Gelände mit einem echt wirkenden Hintergrund, einen Tunnel, einen tatsächlichen Bahnhof sowie möglichst mittig Platz für eine kleine Stadt, deren Häuser beleuchtet sein sollen, mehrere (vielleicht vier bis sechs) Weichen, längere gerade Strecken, mehrere Signale (am liebsten Formsignale, vielleicht auch ein oder zwei Lichtsignale).

.