Smallest Railroad Server Ever II

Bauanleitung für eine preiswerte Modellbahnsteuerung mit einer Gleisbox. In meinen Augen ist dieser Aufbau das, was im Portfolio von Märklin fehlt:
Ein kleiner Computer im Netzwerk der über vorhandene Tablets oder Smartphones die Modellbahn steuern kann. Die CS2/CS3 ist meiner Meinung nach zu groß; und zu teuer, wenn es nur darum geht eine kleine Modellbahn zu steuern.

Es funktionieren u.a. Railcontrol (vorinstalliert), iTrain, Win-Digipet, TrainController oder RemoteCS2 über die eingebaute CS2-Gatway Emulation.

Zusammenfassung:

Ein paar Bilder vom Aufbau:


Hier mit Märklins 60116:

Verwendete Teile

- Märklin Gleisbox 60113 oder 60116 25 Euros
- Omega2+
- Elekronikbauteile ca 35 Euros

Warum Omega2+ ?

- klein - Einbau in die Gleisbox möglich
- sparsam - geringe Wärmeentwicklung
- preiswert

Projektdetails

PIC Source Code, Omega2+ Image, Gerber Dateien etc. pp. sind frei zugänglich: siehe Github

Bauteile

Ich habe einen Warenkorb bei Mouser erstellt (Platinen Version V1.5). Bis auf: sind alle Bauteile enthalten.

Bestückung


Für die Funktion sind D4, R3, R5, R6 und R7 nicht notwendig. Bei der Platinen-Version 1.0 kollidiert der vorgesehene Platz für des 3V3 Spannungsregler mit einer Buchse der Gleisbox. Neben dem Schriftzug ist ein guter Platz dafür.
Zudem enthält die erste Platinen-Version einen weiteren Fehler: Der Pin 20 des PICs muss mit 3V3 vebunden werden. Dazu ist das naheliegende Pad von D4 geeignet.

Die LED D1 ist eine Status Anzeige, die bei normaler Funktion des PICs (programmiert) in einem Herz ähnlichen Rhythmus "schlägt".

Tipps zum Aufbau der Version 1.2 findet ihr hier.

Strom Versorgung

Die Gleisbox nutzt intern 18V DC. Das Omega-Board verwendet 3V3. Um die Hitzeentwicklung in Grenzen zu halten wird ein sparsamer DCDC Konverter genutzt. Die 18V, 5V und GND für die Platine greift man am einfachsten am Spannungsregler ab:

Verbindung zwischen Omega2+-Platine und Gleisbox

Es wird ein kleiner Mikrocontroller (PIC18F25K80) verwendet, der CAN-Nachrichten der Gleisbox auf die serielle Schnittstelle des Omegas umsetzt. Die verwendete API(SLCAN bzw. SocketCAN) ist Linux-Standard und somit stehen eine Vielzahl von Tools, wie z.B. die can-utils zur Verfügung. Das im Image enthaltene can2lan sorgt für die Verbindung zwischen Netzwerk und CAN.
Die Verbindung zum CAN-Bus auf der Gleisbox Platine ist am einfachsten so herzustellen:

Omega2+ Software

Auf dem Omega2+ Board läuft ein spezielles Linux (OpenWRT/Lede) das für kleine Computer optimiert ist.
Das Image kann man über die Onion-Oberfläche oder via CLI installieren: Omega2+ Image Vorgehensweise bei der CLI Version (via scp nach /tmp kopieren) und dann:
cd /tmp
wget http://lnxpps.de/can2udp/srseII/bin/lede-ramips-mt7688-omega2p-squashfs-sysupgrade.bin
sysupgrade lede-ramips-mt7688-omega2p-squashfs-sysupgrade.bin
Root Passwort ist: knaller
Bitte mit dem Befehl 'passwd' ändern.
Das Originalpasswort des Omega2 ist: onioneer
Macht man das Update zum ersten mal sollte sysupgrade mit der Option -n gestartet werden damit alle Konfigurationsdateien neu geschrieben werden. Nachfolgende Updates dann ohne die Option ausführen.

OpenWRT Software mit OpenSource WiFi

Hier gibt es eine neue Version die komplett auf OpenWRT basiert - ohne proprietären WiFi Treiber:
OpenWRT Image 1.0
OpenWRT Image (HW >= 1.2)

Das Update (Backup der Daten vorher machen;-) kann man über die Web-Oberfläche oder auf Kommando Zeile anstoßen:
cd /tmp
wget http://lnxpps.de/can2udp/srseII/bin/openwrt-ramips-mt76x8-omega2p-squashfs-sysupgrade.bin
sysupgrade openwrt-ramips-mt76x8-omega2p-squashfs-sysupgrade.bin
# bzw Hardare Version >= 1.2
cd /tmp
wget http://lnxpps.de/can2udp/srseII/bin/openwrt-ramips-mt76x8-omega2p-squashfs-sysupgrade_v1.2.bin
sysupgrade openwrt-ramips-mt76x8-omega2p-squashfs-sysupgrade_v1.2.bin
Username ist root Passowrt knaller.

Verbindung zwischen Omega2+ und PIC - Software Teil

Der PIC muss einmalig programmiert werden. Alle notwendingen Tools sind im Image bereits enthalten. Die Firmware muss aus Lizenz Gründen aus dem Netz geladen werden. Hier die Vorgehensweise:
# Vorbereitung zur Programmierung des PICs
modprobe gpio-bb && mknod /dev/gpio-bb c 180 0
omega2-ctrl gpiomux set uart1 gpio

# Firmware herunter laden und programmieren
cd /tmp
wget https://github.com/GBert/misc/raw/master/srse2/pic-firmware/firmware/srse2-slcan.hex
p16 lvp p srse2-slcan.hex

# Nach der Programmierung UART Modus wieder einschalten
omega2-ctrl gpiomux set uart1 uart

Netzwerkverbindung zum Omega2+

Standardmäßig ist der Omega2+ so konfiguriert das er von einer Ethernet Verbindung ausgeht. Stellt man die Verbindung mit WiFi her so muss man das can2lan Init Skript /etc/init.d/can2lan anpassen. Beispiele befinden sich im File.

Railcontrol

Wer Railcontrol nutzen möchte führt folgende Sequenz einmal aus:
# automatisch starten
/etc/init.d/railcontrol enable
# jetzt starten
/etc/init.d/railcontrol start
Die Oberfläche ist dann über http://<Gleisbox IP>:8082 erreichbar.

Folgende Daten sollten (z.B. mit WinSCP) von Zeit zu Zeit gesichert werden:
/opt/railcontrol/railcontrol.conf
/opt/railcontrol/railcontrol.sqlite

Software Aktualisierung

Die Software wird laufend aktualisiert. Wenn das Basis-System nicht zu alt ist kann man Updates wie folgt einspielen:
opkg update
opkg list-upgradable
# Liste der Programme für die neue Versionen bereit stehen
# Beipiel can2udp updaten
opkg upgrade can2udp

S88

Die Platine bietet neben der CAN-Anbindung auch noch einen CAN-S88 Umsetzer. Man hat die Wahl zwischen 5V oder 12V - siehe Jumper P18:


Der S88 Anschluss ist intern mit Masse verbunden. Bitte nicht S88-GND mit Bahnstrommasse (braun 0) verbinden - es führt zur Zerstörung der Adapterplatine und/oder der Gleisbox !

Es lassen sich ein paar Parameter über CLI einstellen:
# Bestimmen der ID des S88 Gateways (aka CAN-Buster)
cansend can0 00300300#
# can-monitor
# 07:56:36.393   CAN  0x0031B311  [8] 43 42 55 53 01 02 00 40 Ping Antwort von S88 Gateway UID 0x43425553, Software Version 1.2
# 07:56:36.395   CAN  0x00313B6A  [8] 47 43 2D 79 01 27 00 10 Ping Antwort von Gleisbox UID 0x47432D79, Software Version 1.39
# 43420000 ist hier die ID 
#
# Kanal 2 Startnummer
# Kanal 3 Laenge

# Beispiel : S88 Startnummer der Kontakte 1000 (Hex 0x03E8)
cansend can0 00000300#434255530B0203E8
#                     43425553         ID
#                             0B       Kanal Wert Setzen
#                               02     Kanal Nummer 2
#                                 03E8 Wert
# can-monitor Output
# 07:56:29.257   CAN  0x00000300  [8] 43 42 55 53 0B 02 03 E8 System: Konfiguration UID 0x43425553 Kanal 0x02 Konfigurationswert 0x03E8
# 07:56:29.261   CAN  0x0001B311  [7] 43 42 55 53 0B 02 01    System: Konfiguration UID 0x43425553 Kanal 0x02  gültig(1)

# Beispiel : S88 Bus-Lange 2 (0x0002)
cansend can0 00000300#434255530B030002
#                     43425553         ID
#                             0B       Kanal Wert Setzen
#                               03     Kanal Nummer 3
#                                 0002 Wert
# can-monitor Output
# 07:55:50.394   CAN  0x00000300  [8] 43 42 55 53 0B 03 00 02 System: Konfiguration UID 0x43425553 Kanal 0x03 Konfigurationswert 0x0002
# 07:55:50.399   CAN  0x0001B311  [7] 43 42 55 53 0B 03 01    System: Konfiguration UID 0x43425553 Kanal 0x03  gültig(1)

Netzwerk

Wer eine feste IP-Adresse nutzen möchte, sollte das auf dem Heimrouter entsprechend einstellen.

Netzwerk LEDs

Die LEDs der Netzwerk-Buchse sind vorbelegt:
- grüne LED für CAN Pakete
- gelbe LED für Ethernet Pakete

Eigene Anpassungen können in der Datei /etc/config/system vorgenommen werden. Siehe auch GPIO LED

Leider hat sich aber bei der Platine (Version <= 1.1) ein Fehler eingeschlichen der die korrekte Funktion der gelben LED in der Ethernet-Buchse verhindert. Der Widerstand R16 (neben Ethernet-Buchse) muss etwas anders eingebaut werden. Anstatt:

nach links versetzt:

R13 bleibt unbestückt.

Errata/Changelog

Platine Version V1.0:
- PIC Pin 20 Vdd fehlt
- LED D4 Platinenaufdruck falsch - Kathode muss in Richtung R6 zeigen
  Diode ist überflüssig, da der PIC Clamping Dioden bereits eingbaut hat

Platine Version V1.1:
- Vcc an PIC korrigiert
- D4 entfernt (nicht notwendig)
- Bohrungen Ethernet Buchse angepasst
- Gelbe LED an Ethernet-Buchse korrigiert
- Spannungsregler umplatziert
- USB2Serial entfernt 
- RS485/PIC hinzugefügt

Platine Version V1.2:
- Beschaltung RS485 korrigiert (Vorgespannt am Ausgang)

Reduced to the max

Impressum: