Auf der Seite srsoftware.de/web4rail wird meine neue Modellbahnsteuerungssoftware Web4Rail vorgestellt. Hier nun eine Schritt-für-Schritt-Anleitung, um die Software inklusive S88-Rückmeldesystem auf einem Raspberry Pi zum Laufen zu bekommen.
Das ganze gibt's auch als 40-minütiges Video bei Youtube.
Hardware-Setup
Um einen Booster direkt vom Raspberry Pi mit einem Digitalsignal zu versorgen, ist es notwendig den Booster am seriellen Port des Einplatinencomputers anzuschließen.
Der serielle Port befindet ich an den Pins 8 und 10 des Raspberrys und gibt ein 3,3 V-Signal aus. Für meinen selbstgebauten Booster ist das ok und er wurde direkt angeschlossen. Falls euer Booster ein 5 V-Signal (oder mehr) braucht, müsst ihr einen Pegelkonverter dazwischenschalten. Wie das geht, habe ich schonmal in einem anderen Blogbeitrag beschrieben.
Für die Bastelwütigen unter euch ist hier auch der Schaltplan meines Boosters:
Um S88-Rückmeldemodule mit meiner Software model-rail-control verwenden zu können, müssen diese ebenso an den Raspberry Pi angeschlossen werden. Ich habe das an den Pins 2, 5, 7, 9, 11 und 13 meines Raspberrys angeschlossen:
Das ist auch schon alles, der Rest ist eine Frage der Software.
Software-Installation
Betriebssystem
Ich habe auf meinem Raspberry Pi das Raspberry Pi OS Lite installiert. Dabei handelt es sich um eine Debian-Variante, die von der Raspberry-Pi-Website heruntergeladen werden kann. Hier kann entweder NOOBS verwendet werden, oder man schreibt das heruntergeladene SD-Karten-Abbild mit dieser Anleitung auf die Micro-SD-Karte. Ich möchte an dieser Stelle nicht in die Details gehen, dazu gibt es genügend Beschreibungen online.
Spracheinstellungen des Betriebssystems
Idealerweise hat man im NOOBS-Setup schon das deutsche Tastaturlayout ausgewählt. Falls man das – wie ich – vergessen hat, lässt es sich wie folgt ändern:
Zunächst meldet man sich mit dem Benutzernamen „pi“ und dem Passwort „raspberry“ an. Falls ihr Probleme bei der Anmeldung habt, liegt das möglicherweise am voreingestellten englischen Tastaturlayout – verwendet die „z“-Taste um das „y“ im Passwort einzugeben!
Gebt dann sudo raspi-config
[Enter] ein, um den Konfigurations-Manager zu starten.
Dort geht ihr mit den Pfeiltasten eurer Tastatur zu „Update“ und drückt die Enter-Taste. Nach dem Update geht Ihr zu „Localisation options“ und wählt „Locale“.
Geht dort mit den Pfeiltasten zu „de_DE.UTF-8 UTF-8“ und setzt mit der Leertaste eine Markierung. Drückt Enter und wählt im nächsten Fenster abermals „de_DE.UTF-8“.
Bestätigt mit Enter und nachdem der Raspi die Einstellungen übernommen hat, geht wieder zu „Localisation options“. Wählt diesmal „Timezone“ um die Zeitzone auf „Europe“ und „Berlin“ einzustellen – oder was auch immer für euch sinnvoll ist.
Danach solltet ihr noch das Tastaturlayout einrichten: Wählt erneut „Localisation options“ und dort „Keyboard“. Für die meisten Nutzer sollte das „Generic 105-key PC (intl.)“-Layout passen. Wählt in den Folge-Fenstern „Other“, dann „German“, dann „The default for the keyboard layout“ und letztlich „No compose key“.
weitere Einstellungen im Betriebssystem
Geht dann zu „System options“, wählt „Hostname“ und gebt dort „modellbahn“ ein. Ihr könnt auch einen anderen Namen angeben, dann müsst ihr dies aber auch später in der Konfiguration anpassen!
Wenn ihr den Hostnamen aktualisiert habt, geht noch zu „Interface“, dort zu „Serial Port“ und wählt bei der Frage „Would you like a login shell to be accessible over serial“ die Antwort „No“. Im nächsten Dialog „Would you like the serial port hardware to be enabled?“ wählt ihr „Yes“.
Damit ist die Grundkonfiguration abgeschlossen!
Installation notwendiger Komponenten für die nachfolgenden Programme
Meldet euch am Raspberry Pi an und gebt dann die folgenden Kommandos, jeweils quittiert mit einem [Enter] ein:
sudo apt-get update
sudo apt-get upgrade
Falls der upgrade-Befehl eine Bestätigung zur Aktualisierung möchte, drückt Enter. Nach dem Upgrade geht es weiter mit:
sudo apt-get install automake git libxml2-dev maven openjdk-11-jdk-headless screen
Auch hier werdet ihr die Installation mit Enter bestätigen müssen.
Installation von SRCPD
SRCPD ist die quelloffene Software, welche auf eurem Raspberry Pi das Digital-Signal erzeugt. Den Download-Link findet ihr auf der Website unter srcpd → Download. Er führt zur Source-Forge-Seite, wo ihr den Ordner „srcpd“ und dort die neuste Version wählen solltet. Klickt dort auf srcpd-x.x.x.tar.gz und ihr kommt auf die Downloadseite, deren URL ihr gleich braucht:
Bei mir war das
https://sourceforge.net/projects/srcpd/files/srcpd/2.1.5/srcpd-2.1.5.tar.gz/download
Meldet euch nun am Raspberry Pi an, falls ihr das noch nicht habt und gebt cd
[Enter] ein, um in euer Home-Verzeichnis zu wechseln.
Gebt dann
wget https://sourceforge.net/projects/srcpd/files/srcpd/x.x.x/srcpd-x.x.x.tar.gz/download
und anschließend [Enter] ein, um den Quellcode von SRCPD herunterzuladen. Nachdem das fertig ist, sollte sich im Ordner eine Datei mit dem Namen download befinden, diese könnt ihr anzeigen, indem ihr
ls -l
eingebt.
Diese Datei können wir nun umbenennen und anschließend entpacken:
mv download download.tar.gz
tar xfvz download.tar.gz
Wenn ihr jetzt wieder
ls -l
eingebt, solltet ihr einen neuen Ordner srcpd-x.x.x sehen. Wechselt in diesen Ordner, indem ihr cd srcpd
, gefolgt von [Tab] (⇄-Taste) und [Enter] tippt.
Dort gebt nacheinander die folgenden Befehle (Die Ausführung eines jeden davon kann ein paar Minuten dauern, jeweils warten!) ein:
./configure
make
sudo make install
SRCPD sollte nun installiert sein.
Web4Rail
Web4Rail ist die von mir geschriebene Software, mit der die Modellbahn mittels eines Web-Browsers gesteuert werden kann.
Um diese Software zu installieren, gebt nacheinander die folgenden Befehle ein:
cd
git clone https://github.com/srsoftware-de/Web4Rail.git
cd Web4Rail
mvn clean install
Danach sollte auch diese Software betriebsbereit sein.
model-rail-control
Diese – ebenfalls von mir geschriebene – Software fragt den S88-Rückmeldebus ab und gibt die Rückmeldeinformationen an das Web4Rail-Programm weiter. Ihr braucht es also nur, wenn ihr S88-Rückmelder verwendet.
Um es zu installieren, führt die folgenden Befehle auf dem Raspberry aus:
cd
git clone -b S88 https://github.com/StephanRichter/model-rail-control.git
Konfiguration
Sowohl SRCPD als auch model-rail-control müssen nun noch konfiguriert werden.
SRCPD
Für die Konfiguration von SRCPD tippt ihr
nano /usr/local/etc/srcpd.config
ein und ändert die Datei, dass sie so aussieht:
<?xml version="1.0"?>
<srcpd version="2.0">
<bus number="0">
<server>
<tcp-port>4303</tcp-port>
<pid-file>/var/run/srcpd.pid</pid-file>
<username>pi</username>
<groupname>pi</groupname>
</server>
<verbosity>0</verbosity>
</bus>
<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>yes</auto_power_on>
<device>/dev/ttyAMA0</device>
</bus>
</srcpd>
Wobei ihr die Einträge enable_maerklin und enable_nmradcc an eure Bedürfnisse anpassen solltet.
Ihr könnt die Datei speichern, indem ihr [Strg] + [X] drück, dann [J] und [Enter].
Um zu testen, ob ihr erfolgreich wart, könnt ihr folgenden Befehl eingeben:
sudo /usr/local/sbin/srcpd -n
Damit sollte das SRCPD-Programm gestartet werden. Wenn es keine Ausgaben macht, ist alles gut. Wenn es einen Fehler meldet, habt ihr euch bei der Konfiguration vertippt.
Falls das Programm ohne Ausgabe läuft, brecht es ab, indem ihr [Strg] und [C] drückt.
model-rail-control
In diesem Programm müssen die Pins eingestellt werden, an welcher ihr euer S88-Modul angeschlossen habt. Nummern könnt ihr hier ermitteln: DuckDuckGo-Suche
Außerdem braucht ihr die IP-Adresse eures Raspberrys. Diese bekommt ihr mit folgendem Befehl:
ip a | grep 24 | awk '{print $2}'
Entsprechend eurer Verkabelung müsst ihr die Programm-Datei anpassen:
cd
nano model-rail-control/src/sensor-proxy.py
Gebt dort die für euch zutreffenden Werte für RESET, LOAD (=PS), CLOCK und DATA ein. Bei Contacts müsst ihr eintragen, wie viele Rückmelde-Eingänge eure verketteten S88-Module haben. D.h. Zwei 16-Kontakt-Module + ein 8-Kontakt Modul ergibt z.B. 40.
Außerdem muss noch die IP-Adresse eures Raspberrys (von oben) in der Zeile
proxy = RocrailProxy('192.168.1.225',4304);
eingetragen werden.
Ihr könnt die Datei wieder speichern, indem ihr [Strg] + [X] drück, dann [J] und [Enter].
Damit ist alles konfiguriert, man sollte den Raspberry nun so einrichten, dass die Programme automatisch starten:
Start-Scripte
SRCPD
Erzeugt ein Start-Script für SRCPD, indem ihr folgendes eingebt:
cd
nano start-srcpd
Schreibt folgende Zeilen in die Datei:
#!/bin/bash
echo Starte SRCPD...
sudo /usr/local/sbin/srcpd
Speichert mit [Strg] + [X], dann [J] und schließlich [Enter].
model-rail-control
Erzeugt ein Start-Script für model-rail-control, indem ihr folgendes eingebt:
cd
nano start-proxy
Schreibt folgende Zeilen in die Datei:
#!/bin/bash
sleep 10
echo Starte Proxy...
cd /home/pi/model-rail-control/src
sudo python2.7 sensor-proxy.py
Speichert mit [Strg] + [X], dann [J] und schließlich [Enter].
Web4Rail
Erzeugt ein Start-Script für Web4Rail, indem ihr folgendes eingebt:
cd
nano start-web4rail
Schreibt folgende Zeilen in die Datei:
#!/bin/bash
echo Starte Web4Rail...
sleep 15
echo Starte Web4Rail...
cd /home/pi/Web4Rail && mvn exec:java
Speichert mit [Strg] + [X], dann [J] und schließlich [Enter].
Autostart
Erzeugt eine Konfigurationsdatei für das Programm screen, indem ihr folgendes eingebt:
cd
nano .screenrc
Schreibt folgenden Inhalt in die Datei:
split
screen /home/pi/start-srcpd
screen /home/pi/start-proxy
screen /home/pi/start-web4rail
Speichert mit [Strg] + [X], dann [J] und schließlich [Enter].
Tragt das Screen in die Crontab ( = Autostart-Datei) ein. Tippt dazu crontabe -e
[Enter] ein. Falls ihr gefragt werden, welchen Editor ihr verwenden möchtet, nehmt z. B. die 1 für den bereits bekannten nano Editor.
Die Crontab enthält einige Zeilen an erläuternden Kommentaren, tragt darunter die folgende Zeile ein:
@reboot /usr/bin/screen -dm
Wenn ihr nun euren Raspberry Pi mittels sudo reboot
neu startet, sollte dieser nach dem Neustart automatisch srcpd, den S88-Proxy und das Programm web4Rail starten. An eurem Booster sollte ein Digitalsignal ankommen und ihr solltet im Browser die Seite http://modellbahn:8080/plan öffnen können!
Einrichtung
Die Einrichtung der Software Web4Rail wird später in einem separaten Beitrag beschrieben.
Linksammlung:
Hier nochmal eine Übersicht der wichtigsten Links:
Neuen Kommentar hinzufügen