Verwendung auf dem Raspberry Pi mit SCP23S17 Rückmeldern - StephanRichter/model-rail-control GitHub Wiki

In diesem Artikel wird beschrieben, wie man eine automatische Modellbahnsteuerung mit günstigen Alternativen zu kommerziellen Produkten einrichten kann.

Die Aufgabenstellung

Eine im Bau befindliche Modellbahn soll digital gesteuert werden. Dabei die für die Automatisierung nötige Technik soll möglichst günstig umgesetzt werden. Konkret wird an folgenden Punkten auf "selbstgemachte" Alternativen zurückgegriffen:

  • An Stelle einer teuren Digitalzentrale wird ein preiswerter Kleinstcomputer eingesetzt
  • Statt relativ teurer S88-Rückmelde-Encoder werden billige Schieberegister verwendet
  • Anstelle von herkömmlichen Weichenantrieben werden KACO-Relais benutzt
  • Der Nutzer steuert auf einem Desktop-PC die Modellbahn mittels RocView

Voraussetzungen:

  • Lötkenntnisse
  • ein Raspberry Pi
  • ein SRCP-Client, wie jman auf dem Rechner oder SRCPC auf dem Smartphone

Digitale Modellbahn und die Computersteuerung

Wenn man heutzutage eine Modellbahn aufbaut, kommt man ziemlich früh zu der Frage: Analog oder digital? Es gibt für beides gute Argumente. Das Argument schlechthin für die digitale Modellbahn ist die Möglichkeit, auf ein und dem selben Gleis mehrere Züge volkommen unabhängig voneinander steuern zu können. Dazu muss ein kleines Stück Elektronik in jedem Triebfahrzeug sein: Der Digitaldecoder. Dieses fingernagel- bis münzgroße elektronische Wunderwerk eröffnet unzählige Möglichkeiten. Zum Beispiel liegt es sehr nahe, die digitale Modellbahn auch gleich mit einem Computer zu steuern und zu automatisieren. Gleichzeitig sind die Decoder, oder vielmehr ihr Preis, auch ein gutes Argument gegen die Digitaltechnik. Man muss ja jede Lok mit einem Decoder ausstatten. Und wenn die Signale und Weichen auch digital gestellt werden sollen, ist auch hier der Kauf vieler Decoder vonnöten. Ein Modellbahn ist somit nicht nur ein Hobby, sondern auch ein gutes Mittel um Geld loszuwerden. Doch es gibt durchaus auch Ansätze, wo man sparen kann.

Wenn man die Modellbahn mit dem PC steuern will müssen dessen Anweisungen auch in die Sprache der Decoder übersetzt werden. Das geschieht im Regelfall mittels einer mehr oder weniger leistungsfähigen Digitalzentrale, die Befehle vom Compter entgegennimmt und das digitale Gleissignal erzuegt. Einfache Zentralen gibt es ab etwa 50€, gängige Geräte mit PC-Schnittstelle kosten auch gern mal 100 Euro und mehr.

Doch es gibt eine billige Alternative: Man kann das Gleissignal auch direkt von einem Computer erzeugen lassen. Hierzu gibt es die Software srcpd, ein Open-Source-Programm, dass auf einer einfachen seriellen Schnittstelle das Steuersignal für Züge und Zubehör erzeugt. Dieses Programm bekommt die Befehle, die es umsetzen soll über das sogenannte "Simple Railroad Command Protocol" - einem offenen Standard für die Kommunikation von Modellbahnbefehlen. Damit kann man dann sein eigenes Programm schreiben, oder Modellbahnsteuerungsprogramme wie RocRail die Anlage steuern lassen. Doch ein kleines Problemchen gibt es hier noch: aktuelle PCs werden kaum noch mit altbewährten seriellen Schnittstellen ausgestattet.

Eine prima Lösung für diese Problem bietet der Kleinstcomputer "Raspberry Pi". Dabei handelt es sich um eine kreditkartengroße Platine, die neben einem Prozessor, Arbeitsspeicher, einem Grafikchip und einer Soundkarte auch noch jede Menge Anschlussmöglichkeiten bietet. Obwohl es sich im Prinzip um einen fast vollwertigen PC handelt, kostet ein solcher Raspberry Pi nur etwa 35€. Und eben einen solchen Raspberry Pi kann man nutzen, um das Digitalsignal mittels srcpd zu erzeugen.

Dazu muss folgendes arrangiert werden:

  • der Raspberry muss mit dem Booster der Modellbahnanlage verbunden werden
  • die Software muss auf dem Raspberry installiert werden
  • für eine Automatierung der Modellbahnanlage sind außerdem noch Rückmeldekontakte anzuschließen

Verbindung Raspberry => Booster

Auch wenn der Raspberry Pi die Signale zur Steuerung der Modellbahn erzeugen kann - für den direkten Betrieb sind diese Signale zu schwach. Entsprechend muss das Signal mit einem sogenannten Booster verstärkt werden - diese Geräte bringen die notwendige Leistung auf die Schiene. Die gute Nachricht ist: für unser Projekt reicht ein ganz einfacher Booster, den es bei eBay für etwa 20 Euro gibt. Ich persönlich habe eine Roco "Zentrale" 10764 aus einem Digital-Startset verwendet. Damit das Signal aus dem Raspberry in den Booster gefüttert werden kann, muss dessen Spannung noch vom Logikpegel des Raspberrys auf das Level des Boosters umgesetzt werden. Das geschieht mit einem sogenannten Pegelumsetzer. Das ist ein kleiner integrierter Schaltkreis, der aus dem 3V-Logiklevel des PCs ein 5V-Signal für den Booster macht. Dieser Chip hört auf den Namen Max232ECPE und übernimmt diese Aufgabe für uns. Er wird wie abgebildet mit einem passenden Stecker an die GPIO-Schnittstelle des Raspberrys angeschlossen. Der Chip wird auch direkt aus dem Kleinstcomputer mit Strom versorgt. Vom Chip aus gehen zwei Leitungen, Erde und Signal (GND und T1) letztendlich über ein Kabel zum Booster, der über einen Westernstecker verbunden ist. Hierfür habe ich ebenfalls eines der Kabel aus der Startpackung verwendet, mit dem normalerweise die Lokmäuse mit dem Booster verbunden werden. Im Schaubild sieht man zusätzlich zu den paar Leitungen von und zum Chip noch 4 Keramikkondensatoren mit 0,1µF, diese gibt es in jedem Elektronikfachgeschäft, ich habe sie aus einem alten Radio ausgelötet. Für meinen ersten Aufbau habe ich mir für den Chip eine Sockelleiste besorgt und diese Kondensatoren direkt an die Beine der Sockelleiste gelötet. Dabei ist darauf zu Achten, dass man den Chip erst nach dem Löten aufsteckt, da er durch die Hitze des Lötens zerstört werden kann!

Installation der Software

Hat man sich einen Raspberry-Pi besorgt, muss man darauf auch die Software zum Laufen bekommen. Das geschieht in 3 Schritten:

  1. Installation des Betriebssystems

  2. Abschalten der Logmeldungen auf dem Terminal

  3. Compilieren & Installieren des SRCP-Servers

  4. Einrichtung

  5. Test

  6. automatischer Start

  7. Installation des Betriebssystems


Damit auf dem Raspberry Pi überhaupt ein Programm ausgeführt werden kann, muss zunächst ein Betriebssystem installiert werden. Das geht sehr einfach: Man lädt sich von http://www.berryterminal.com/doku.php/berryboot einen sogenannten Bootloader als Zipdatei (berryboot-YYYYMMDD.zip) herunter und entpackt diese Zipdatei auf eine leere SD-Karte. Danach steck man diese Karte in den Raspberry Pi, steck diesen an eine Tastatur, Maus, Monitor und Internetzugang an und verbindet die Stromzuführung. Nach wenigen Sekunden sollte ein Einrichtungsdialog (englisch) erscheinen. Hier wird man gefragt, ob man grüne Balken an den Bildschirmrändern sieht. Entsprechend wählt man "Yes" (ja) oder "no" (nein). Die Netzwerkvoreinstellungen kann man so lassen, auch die Regions- und Spracheinstellungen sollten automatisch erkannt werden. [Grafik gibt es hier: http://www.berryterminal.com/lib/exe/fetch.php/bb1.png] Im nächsten Schritt wird man gefragt, ob man auf die SD-Karte oder auf ein anderes Medium installieren will. Diesen Schritt können wir mit den Voreinstellungen (SD-Karte) hinter uns lassen. Durch Klicken auf "Format" wird die SD-Karte eingerichtet und der Bootloader installiert. Danach kommt die Betriebssystemübersicht. Hier wählt man das "Debian Wheezy Raspbian" und klickt auf "OK". Das Betriebssystem wird nun heruntergeladen und installiert, dies kann einige Minuten in Anspruch nehmen. Anschließend kommt man in den BerryBoot Menü Editor. Einfach ESC drücken, und dieser wird verlassen und nach ein paar Sekunden startet das Betriebssystem.

Beim ersten Start muss man dann noch ein paar Einstellungen vornehmen:

  • Change User Password - hier kann man ein neues Passwort setzen. (Das Standardpasswort ist "raspberry")
  • Enable Boot to Desktop/Scratch - hier sollte man "Console" einstellen: Wir wollen keine Desktopumgebung, da dies das System nur ausbremsen würde.
  • Internationalization - hier sollte man de_DE.UTF8 einstellen, wenn man ein deutsches Tastaturlayout haben will
  • Enable Camera - kann man abgeschaltet lassen
  • Add to Rastrack - kann man ignorieren
  • Overclock - nicht notwendig
  • Advanced Options - hier sollte man ggf. SSH aktivieren, wenn man über Netzwerk auf das Gerät zugreifen will. Auch sollte man einmal die Option Update hier ausführen, um auf den neuesten Stand zu kommen

Anschließend kann man mit Finish die Einstellungen speichern und wird in ein Terminal (eine Eingabeaufforderung) entlassen. Jetzt geht es ans Eingemachte.

  1. Abschalten der Logmeldungen auf dem Terminal

Von Hause aus gibt das installierte Debian auf dem seriellen Port Statusmeldungen aus, die für Fehlersuche ganz hilfreich sein können. In unserem Anwendungsfall sind diese Statusmeldungen jedoch störend und müssen deaktiviert werden. Dazu muss man in der Datei /etc/inittab die Zeile

T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

auskommentieren oder entfernen und dann den Raspberry neu starten. Wer sich mit Linux auskennt, kann das einfach auf der Konsole machen. Alternativ kann man auch

sudo startx

eingeben und Enter drücken. Damit wird eine Desktopumgebung mit Administratorrechten gestartet. Im Startmenü unter Zubehör findet sich der Texteditor "Leafpad". Diesen starten wir, klicken auf Datei > Öffnen. Im erscheinenden Dialog wählt man links "Dateisystem" und navigiert anschließend zu "/etc". Dort Doppelklicken wir auf die Datei "inittab". Diese Datei wird dann geöffnet, wir entfernen besagte Zeile. Nach dem Speichern gehen wir über's Startmenü zu "Abmelden" und verlassen diese Sitzung wieder.

  1. Compilieren des SRCP-Servers

Um das Programm zur Erzeugung des Digitalsignals auf dem Raspberry auszuführen muss dieses zunächst heruntergeladen und installiert werden. Das geht auch über die Desktopumgebung, sollte aber nicht als Administrator gemacht werden. Deshalb starten wir nochmal einen Desktop mit

startx

lassen dieses mal aber das vorangestellte "sudo" weg. Auf dem Desktop gibt es eine Verknüpfung "Midori" - das ist ein einfacher Webbrowser. Den benötigten Quellcode bekommt man unter http://sourceforge.net/projects/srcpd/files/srcpd/. Dort wählt man eine Version und dann in der Dateiliste eines der Quellcode-Archive (z.B. srcpd-2.1.2.tar.gz oder srcpd-2.1.2.zip - Wichtig, die Version 2.1.1 funktioniert auf dem Raspberry nicht, sofern es keine neuere Version gibt sollte man 2.1.2 nutzen!). Diese lädt man auf den Raspberry herunter. Dann öffnet man im Startmenü unter Zubehör den Dateibrowser und sucht die gepackte Datei auf - wahrscheinlich wird sie unter "/home/pi" liegen. Klickt man mit der rechten Maustaste darauf, hat man unter anderem die Option "Hier entpacken" - diese wählt man und nach ein paar Sekunden gibt es einen Ordner "srcpd-2.1.2". Diesen öffnet man per Doppelklick und drückt danach "F4". Es öffnet sich ein Terminal. Dort führt man

./configure

aus. Dieses Hilfsprogramm prüft, ob alle Werkzeuge vorhanden sind, die benötigt werden um das Programm für den Raspberry Pi zusammenzustellen und zu installieren.

Aufruf von ./configure auf einer "jungfräulichen" Installation führte bei mir zu folgender Fehlermeldung:

checking for libxml - version >= 2.4.0... no
[...]
configure: error: no matching library found

Hier fehlt also nocht ein Hilfsprogramm. Dieses kann ganz einfach über den Befehl

sudo apt-get install libxml2 libxml2-dev telnet

installiert werden. (sudo sagt dem Computer, dass "apt-get install libxml2 libxml2-dev telnet" als Administrator ausgeführt werden soll. "apt-get install" als Administrator gestartet bedeutet dann wieder so viel wie "installiere die folgenden Pakete". telnet, libxml2 und libxml2-dev sind dann die Paketnamen der zu installierenden Programme.) Nach der Installation dieser Programme kann man nochmal

./configure

starten. Bei der von mir genutzen Version von Debian und srcp lief dieses Vorbereitungsprogramm dann ohne Fehler durch, zu erkennen an der letzten Zeile:

Run 'make' to continue.

Das tun wir:

make eingeben, Enter drücken. Nun wird das Programm zusammengestellt und die Installation vorbereitet. Dies kann eine Weile dauern, währenddessen werden Unmengen kryptischer Meldungen angezeigt - davon sollte man sich nicht verwirren lassen. Wenn als letzte Zeile

make[1]: Leaving directory `/home/pi/srcpd-2.1.2'

stehen bleibt hat das Erstellen geklappt und das Programm kann mit "sudo make install" installiert werden.

Zusammengefasst: sudo apt-get install libxml2 libxml2-dev = Installiere das XML2-Hilfspaket
./configure = bereite Programmerstellung vor
make = Erstelle das Programm
sudo make install = führe Installation (make install) als Administrator aus.

  1. Einrichtung

An dieser Stelle ist Zeit, das Programm einzurichten. Dafür ist zunächst die Konfigurationsdatei des Programmes anzupassen. Wir starten wieder die grafische Oberfläche mittels sudo startx, öffnen "Leafpad" und in Leafpad die Datei "/usr/local/etc/srcpd.conf". Hier ändert man die Zeilen

<verbosity>3</verbosity>

zu

<verbosity>0</verbosity>

Den Abschnitt

<bus number="1">
...
</bus>

ersetzt man durch Folgenden:

<bus number="1">
<ddl>
<enable_maerklin>no</enable_maerklin>
<enable_nmradcc>yes</enable_nmradcc>
<enable_usleep_patch>yes</enable_usleep_patch>
</ddl>
<use_watchdog>no</use_watchdog>
<verbosity>0</verbosity>
<auto_power_on>no</auto_power_on>
<device>/dev/ttyAMA0</device>
<nmradcc_translation_routine>2</nmradcc_translation_routine>
</bus>

Gegebenenfalls kann man märklin aktivieren/DCC deaktivieren. Die Verbosity-Einstellungen (also das Abschalten von Logmeldungen) ist wichtig, da sonst später Timing-Probleme auftreten können.

Nach dem Speichern ist des Programm fertig konfiguriert, wir können uns aus der grafischen Oberfläche abmelden.

  1. Test

Jetzt ist es Zeit, zu testen, ob das Programm ausgeführt werden kann. Dazu tippt man den Befehl

/usr/local/sbin/srcpd -v in der Konsole ein und drückt Enter.

Jetzt sollte das Programm seine eigene Version anzeigen, ich bekam als Ausgabe

srcpd V2.1.2; SRCP 0.8.4; SRCPOTHER 0.8.3

Soweit so gut. Der nächste Befehl, den wir probieren können ist

/usr/local/sbin/srcpd -n.

Damit sollte das Programm dann gestartet werden. Nicht wundern, man sieht zunächst nichts. Man kann aber mittels "Strg+Alt+F2" in eine zweite Konsole wechseln und sich dort mit nutzername (pi) und Passwort (raspberry) anmelden. Dann gibt man

ip a

ein um die aktuelle Adresse des Minicomputers zu erfahren. Da gibt es dann eine ähnliche Ausgabe wie folgt:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc >pfifo_fast state UP qlen 1000
link/ether b8:27:eb:d9:b1:e5 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.133/24 brd 192.168.0.255 scope global eth0
valid_lft forever preferred_lft forever

wobei die 192.168.0.133 (bei mir) die gewünschte Adresse ist. Nun gibt man

telnet <Adresse> 4303

ein (also bei mir telnet 192.168.0.133 4303). Damit meldet man sich am Programm an (nur für Testzwecke) und müsste als Antwort die Ausgabe

Escape character is '^]'.
srcpd V2.1.2; SRCP 0.8.4; SRCPOTHER 0.8.3

bekommen. Das bedeutet, dass der SRCP-Server funktioniert und auf Clienten (wie z.B. jman oder SRCPC) wartet. Man kann diese Verbindung wieder trennen, indem man zunächst Strg+AltGr+] drückt und dann "quit" eingibt. Man sollte also zu diesem Zeitpunkt mit einem beliebigen Programm, welches das Simple Railroad Command Protocol (SRCP) spricht zu dem Raspberry unter der oben ermittelten Adresse verbinden können. Hat man den Anschluss wie zuvor beschrieben vorgenommen, kann man ab jetzt schon mit einem Computer die Modellbahnfahrzeuge fahren lassen.

  1. automatischer Start

Natürlich macht es keinen Spaß, sich dazu jedesmal an dem Kleincomputer anzumelden und das Programm händisch zu starten. Deshalb starten wir wieder mit

sudo startx

die Desktopumgebung und öffnen mit Leafpad die Datei "/etc/rc.local". Vor der Zeile

exit 0

fügt man die Zeile

/usr/local/sbin/srcpd

ein und speichert die Datei. Dann meldet man sich wieder ab. In der Konsole fürht man

sudo reboot

aus, um den Zwerg neu zu starten.

Rocrail

RocRail ist ein Computerprogramm, welches es erlaubt per virtuellem Gleisbildstellpult seine Modellbahnanlage zu steuern und zu automatisieren.

Installation von RocRail

Nach dem Neustart kommt man beim Raspberry wieder auf der Konsole an. Nach dem Eingeben von "pi" und "raspberry" muss man für Rocrail zunächst ein paar weitere Hilfspakete installieren. Deshalb führt man zunächst

sudo -s aus, um sich als Administrator anzumelden. Nun steht am Anfang der Eingabezeile so etwas wie

root@raspberrypi:/home/pi#

Wir führen apt-get install git libusb-1.0-0-dev aus, um die benötigten Pakete zu installieren.

Dann verlassen wir den Administrator-Modus mittels

exit.

Jetzt lädt man mittels

git clone --depth 1 https://github.com/rocrail/Rocrail.git Rocrail

den Quellcode von Rocrail herunter. Das kann eine Weile dauern. Wenn der Download fertig ist wechselt man mittels

cd Rocrail ins heruntergeladene Verzeichnis und führt

make server aus, um die Server-Software zu erstellen. Auch hier ist Geduld gefragt, und es werden unzählige kryptische Meldungen auf dem Bildschirm angezeigt, bis schließlich

make[2]: Leaving directory /home/pi/Rocrail/rocnetnode'<br/> make[1]: Leaving directory /home/pi/Rocrail/rocrail'

erscheint. Nun ist es Zeit, das soeben erstellte Programm zu installieren. Nach dem Aufruf von

sudo make install

kann man das Serverprogramm mittels

/opt/rocrail/rocrail.sh starten.

Wenn man nun auf einem anderen Rechner im Netzwerk RocView ausführt kann man sich über "Datei" > "Verbinden mit..." mit dem soeben gestarteten RocRail-Server verbinden. Wenn das funktioniert, kann man rocrail noch so einrichten, dass es automatisch startet.

Hierzu braucht man ein weiteres Hilfsprogramm, das mittels

sudo apt-get install screen geladen wird.

Dann geht man wieder als Administrator mittels

sudo startx in die grafische Oberfläche, öffnet mit Leafpad nochmal die Datei "/etc/rc.local" und fügt die zwei Zeilen

sleep 10
su pi -c 'screen -d -m -S RocRail'

zwischen die Zeilen

/usr/local/sbin/srcpd
exit 0

Dann startet man

leafpad .screenrc um eine neue Konfigurationsdatei für das Programm "Screen" zu erzeugen.

In diese Datei kommt folgendes:

startup_message off
altscreen on
screen bash -c 'sleep 7; /opt/rocrail/rocrail.sh'
detach

ein. Nach einem Neustart sollten nun sowohl der SRCP-Server als auch RocRail auf dem Raspberry gestartet werden. Als nächstes muss die Anbindung von RocRail an den zuvor installierten SRCP-Server eingerichtet werden.

Einrichtung von Rocrail

Dazu geht man im RocView auf "Datei" > "Rocrail Eigenschaften" (nur verfügbar, wenn RocView mit dem Server verbunden ist) und im sich öffnenden Dialog auf den Reiter "Zentrale" . Man entfernt die Zentrale "cvs-1 - virtual", wählt bei "Neu" die Zentrale "srcp" aus und klickt auf "Hinzufügen". Dann markiert man die neue Zentrale und klickt auf "Eigenschaften". Hier müssen folgende Werte eingetragen werden:

Schnittstellenkennung: srcp
Hostname: 127.0.0.1
Port: 4303
Gerät: /dev/ttyAMA0
Sub-Bibliothek: TCPIP

Im gleichen Dialog muss man oben noch auf "Busse" gehen und alle Werte auf 1 setzen, einzig der Server wird auf 0 gesetzt. Dann alles speichern. Unpraktischerweise werden diese Änderungen erst nach einem Neustart des Raspberrys aktiv.

Danach sollte es in RocView möglich sein Lokomotiven anzulegen und diese händisch zu steuern. Auf eine Erklärung dieser Schritte wird hier verzichtet, dies ist ausführlich unter http://wiki.rocrail.net/doku.php erklärt.

Verbindung Rückmeldekontakte => Raspberry Pi

Hier ist wieder etwas Elektronik zu löten. Zunächst muss man sich bei einem Elektronikversand oder -fachhändler mindestens einen MCP23S17-Chip, eine Lochrasterplatine und eine Sockelleiste besorgen. Der Schaltplan für den Anschluss des Chips ist hier: . Man unterbricht als erstes die Leiterbahnen auf der Platine und lötet die Sockelleiste über die Trennstelle. Dann setzt man die Widerstände und Drahtbrücken, so dass letztlich die Verbindungen wie im ersten Bild hergestellt sind. An den Pins 21-28 des Chips können Gleiskontakte, die gegen Masse (GND) schließen angeschlossen werden. Dann kann man mittels zweier Batterien oder mit einem Netzteil die Stromversorgung (3-3,3V) anschließen. Damit ist die Hardware komplett. Was man nun noch braucht ist ein bisschen Software, welche die Kontaktinformationen zur Verfügung stellt.

Reaktion auf Rückmeldeereignisse

Damit SRCP-fähige Programme auch Informationen über Kontakt-Ereignisse bekommen habe ich das python-script "model-rail-control" (https://github.com/StephanRichter/model-rail-control) erschaffen. Dieses Schaltet sich zwischen das srcp-Programm und ein Client-Programm . Ich habe es mit RocRail, einer großartigen Modellbahnsteuerungssoftware, und der Oberfläche RocView getestet.

Es folgt:

  1. Installation des model-rail-control-Scriptes

  2. Anpassung der Rocrail-Eigenschaften

  3. Test mit Rocrail

  4. Installation des model-rail-control-Scriptes


Wir melden uns wieder als Benutzer "pi" mit dem passwort "raspberry" am Winzling an. Danach führen wir

git clone https://github.com/StephanRichter/model-rail-control.git

aus. Damit wird das Script heruntergeladen und im Ordner /home/pi/model-rail-control abgelegt. Auch hier soll ein automatischer Start eingerichtet werden. Diesmal wird dies allerdings über die Konfiguration von Screen gemacht. Wir starten

leafpad .screenrc

und ergänzen

split
screen bash -c 'cd /home/pi/model-rail-control/src; sudo ./proxy.py'
focus down

zwischen die schon vorhandenen Zeilen

altscreen on
screen bash -c 'sleep 7; /opt/rocrail/rocrail.sh'

  1. Anpassung der Rocrail-Eigenschaften

Nach einem weiteren Neustart des Raspberrys (und etwa 30 Sekunden warten...) öffnen wir wieder RocView, stellen im Menü "Datei" die Serververbindung zum raspberrypi her, falls nicht schon automatisch geschehen und gehen dann im Menü Datei auf "Rocrail Eigenschaften". Es öffnet sich der bekannte Dialog, wo auf Zentrale klicken und den srcp-Server markieren. Ein Klick auf Eigenschaften und hier die Portnummer von 4303 nach 4304 ändern. Speichern und schon sollte Kontakt zu den angeschlossenen Rückmeldern bestehen.

  1. Test mit Rocrail

Nun kann man die Funktion wie folgt testen: Man loggt sich, falls nicht schon geschehen, am Rasperry pi ein und führt

screen -r aus. Nun sieht man die Ausgaben des Programmes RocRail. Wenn man jetzt einen der an den MCP23S17 angeschlossenen Rückmelder händisch auslöst, sollte eine entsprechende Meldung erscheinen, vorausgesetzt man hat in den RocRail-Einstellungen (in RocView auf Datei > Rocrail Einstellungen gehen, dann auf Fehlerprotokoll) das Monitoring angeschaltet.

Bei mir kommt z.B.

1000 sensor 0:31=1 ident=

Das bedeutet, dass der Sensor mit der Nummer 31 ausgelöst wurde. Man kann entsprechend in RocView nun im Gleisplan Rückmelder einbauen, und bei der Eigenschaft "Schnittstelle" den Wert 0 für den Bus (die Zahl vorm Doppelpunkt) und die 31 für den Sensor (Zahl nach dem Doppelpunkt) eingeben. Damit sollte dann in RocView der Sensor-Gleisabschnitt blinken, wenn der Sensor ausgelöst wird.

Damit hat man nun alle Voraussetzungen geschaffen, um in RocView ein automatische Modellbahnsteuerung zu programmieren. Diese Programmierung ist nicht mehr Teil dieser Anleitung. Informationen dazu findet man in der RocRail-Dokumentation.

⚠️ **GitHub.com Fallback** ⚠️