Table of Contents
Erste Erfahrungen mit WIO Drive
Ja, es gibt eine Dokumentation über WIO, allerdings war es nicht immer einfach die gerade gebrauchten Infos schnell zu finden.
Dieser Bericht soll Interessierten den Nachbau erleichtern.
Für Hinweise, Verbesserungen oder Eure Erfahrungen bin ich dankbar.
Konzeption
Bisher steuerte ich Rocrail mit einem Notebook unter Kubuntu. Nachdem dieses in die Jahre gekommen war und ich erste positive Erfahrungen mit dem Raspberry Pi 4 Model B gesammelt hatte, entschloss ich mich zu einer Migration. Leider war das nicht so einfach wie gedacht. Ich besitze keine Zentrale und fuhr bisher mit dem Protokoll DDX. PC und Booster waren dabei über ein serielles RS232 Kabel miteinadner verbunden. Erste Tests ergaben, daß dieses Protokoll im Zusammenspiel mit der RS232 Schnittstelle auf dem Raspi nicht sauber funktioniert. Im Rocrail Forum gibt es einige Workarounds die jedoch mit zusätzlicher Selbstbau Hardware arbeiten und mich nicht überzeugten. Hinzu kommt, dass die ddx Library in den aktuellen Rocrailversionen nicht mehr mit enthalten ist. Letztendlich entschied ich mich den Vorschlag von Rob aufzugreifen und auf drahtlose Kommunikation zwischen PC und Booster (WIO) umzusteigen. Das WIO Konzept überzeugte mich und bot auch die einfache Möglichkeit erste Erfahrungen mit RailCom zu sammeln. Ich entschied mich mit WIO Drive zu starten, dieser kleine Baustein enthält neben dem ESP einen Booster und die Anschlußmölgichkeit für den RailCom Empfänger.
- Die Teile kann man Peter Gilling bestellen:
- WIO_Drive Bausatz komplett € 32,00
- 1 GCA214 Bausatz komplett € 14,50 (RailCom Decoder)
- 1 Versand DHL (versichert) € 11,00
- Summe: € 57,50
Eine komplette Zentrale incl. Booster für unter 60 Euro, das ist einen Versuch wert.
Herzstück ist WIO Drive. An ihn angeschlossen werden die Gleise und Zubehördecoder. Auf dem Raspberry läuft der Rocrail Server und wenn man will auch der Rocview Client. Ich lasse Rocview aus Performance- und Sicherheitsgründen auf einem separaten Raspi laufen. Dafür reicht ein Model 3. Zwischen den Raspi 4 und WIODrive habe ich ein privates WLAN konfiguriert. Damit erreiche ich, dass die lebenswichtige Kommunikation komplett vom Hausnetz entkoppelt ist. Der Raspi muss dafür als WLAN Bridge konfiguriert werden. Beide Raspis sind über Kabel mit dem Hausnetz verbunden. Dort können sich nach Bedarf weitere Rocview Clients befinden.
https://www.elektronik-kompendium.de/sites/raspberry-pi/2002161.htm
An WIO Drive angeschlossen ist GCA214, der RailCom Detector. Dessen Ausgang geht an ein Programmiergleis. Via RailCom ist das Programmieren der Decoder sehr schnell und komfortabel erledigt.
Aufbau
Ich verwende einen Raspberry Pi 4 Computer Modell B, 4GB RAM Light Starter Kit, weiß Bundle (ca. 80 Euro) mit
32GB SanDisk Ultra Speicherkarte microSDHC Klasse10 UHS-I HighSpeed microSD (ca. 8 Euro)
Den Raspi installiert man mit diesem Image: Raspberry Pi OS (32-bit) with desktop and recommended software
- Release date: September 22nd 2022
- System: 64-bit
- Kernel version: 5.15
- Debian version: 11 (bullseye)
- Size: 783MB
Download: https://www.raspberrypi.org/downloads/raspberry-pi-os/
Anleitung für die Installation ohne Monitor und Tastatur:
https://braspi.de/blogs/braspi-blog/raspberry-pi-ersteinrichtung-ohne-monitor-und-tastatur
Dann spielt man nur noch die Rocrail-Software auf.
Die Hardware ist schnell aufgebaut. Wichtig ist bei der Bestückung die richtige Reihenfolge (s. Montagehinweise, GR1 nach U2!).
Um thermische Probleme bei grosser Last zu vermeiden wird die H-Bridge L6203 mit einem Kühlkörper versehen.
Zur Stromversorgung eignen sich hervorragend alte Notebook Netzteile. Ich verwende ein HP Netzteil mit 19V 4,7A. Da mein bisheriger Booster mit 3A voll ausreichte, sollte es hiermit keine Probleme geben. Meine TT Loks kommen mit 19V gut zurecht. Ich habe festgestellt, dass manche Notebooknetzteile z.B. (DELL) eine eigene Kurzschlussüberwachung haben, die schneller als der WIODRive regieren.
Der WIO Drive ist kurzschlussfest. Sollte dieser auftreten erscheint in der Rocviewconsole eine Kurzschlussmeldung und die Stromversorgung wird abgeschaltet. WIODrive prüft alle 3 Sekunden ob der Kurzschluss noch besteht.
Ich habe festgestellt, dass manche Notebooknetzteile z.B. (DELL) eine eigene Kurzschlussüberwachung haben, die schneller als der WIODrive regierten. Diese hatte eine lange Wartezeit ca. 30s bis sie wieder aktiv wurden.
ESP Inbetriebnahme
Der ESP arbeitet nach dem Einschalten als Accesspoint. Er sollte noch nicht auf WIO Drive aufgesteckt sein. Zur Stromversorgung verbindet man ihn via USB an den Raspi oder ein Handy Netzteil. Sollte die blaue LED nicht leuchten, müßt ihr den Reset Knopf drücken. Um das dauerhaft zu vermeiden kneift Ihr Pin D3 am ESP ab. Jetzt den Raspi mit dem WLAN WIO33 verbinden (SSID: WIO33.local. Passwort: 12345678) Anschließend im Browser am Raspi die Standard WIO URL http://192.168.4.1 eingeben.
Nun könnt Ihr Euer Netzwerk eintragen, nach einem Reboot sollte der WIO über die eingegebene Adresse erreichbar sein.
Jetzt kann man den ESP vom USB Stecker trennen, ihn auf den WIO stecken und dieses mit Strom versorgen. Die blaue LED sollte blinken.
Verbindung mit Rocrail
Startet Rocrail und geht zum Menüpunkt (Programmieren - WIO – Query)
Hier sollte der WIO jetzt erscheinen:
Die ID ist 33. Er soll jetzt als WIO Drive konfiguriert werden.
Haken bei DCC setzen.
Wichtige Einstellungen unter Setup sind:
- Feld Seriell:
- Railcom, nur wenn später ein Railcom Empfänger angeschlossen werden soll
- Feld DCC:
- PowerMonitor
- Max 3A
- Booster: aus (hier ist ein externer Booster gemeint.)
- Railcom Cutout: aus (wenn Loks mit Railcom fahren an, sonst aus)
- Feld Board: *Lolin D1 Mini
Nach Set und Reboot ist WIO Drive jetzt als DCC Zentrale aktiv. Nicht wundern in diesem Modus ist der ESP nicht mehr per Browser erreichbar.
Sollte man das später vorhaben, muß der DCC Modus durch LED ersetzt werden.
Jetzt signalisiert die blaue LED den Verbingungsstatus (langsam: Rocrail Server an, schnell Rocrail Server aus).
Das hat nichts mit dem vorhandensein des DCC Signals zu tun, dh. Der Rocrail Powerbutton spielt hier keine Rolle.
Hinweis, nach jeder Änderung, den WIO reseten.
Erste Fahrversuche
Im Gegensatz zu DDX gibt es keine Möglichkeit den WIO als Standard zu definieren. Deshalb müssen die Einstellungen für die Schnittstellenkennung bei jeder Lok und Decoder gemacht werden:
- Schnittstellenkennung: WIO,
- Bus: 33
Alle anderen Werte müssen nicht angepaßt werden.
Bei den Zubehördecodern mußte zusätzlich noch ein Haken bei Zubehör gesetzt werden. Bei mir arbeiteten alle Decoder im Gegensatz zu DDX „falsch herum“ so daß ich jedes Signal und Weiche invertieren mußte.
An den Anschluss OUT werden die Kabel zum Gleis angeschlossen.
Der erste Erfolg ist jetzt sichtbar: Loks fahren, Weichen schalten.
Sollte Beleuchtung der Loks flackern, dann sind sie die Dekoder nicht Railcom-tauglich.
In diesem Fall in der WIO Config: RailCom cutout den Haken entfernen.
Programmiergleis mit RailCom
Theoretisch kann man Decoder direkt über den OUT Ausgang des WIO Drive programmieren, aber das Einlesen der Daten ist so nicht möglich.
Dazu wird jetzt der Anschluss J2 des RailCom Detector GCA214 an Anschluss RC1 des WIO Drive angeschlossen.
Es wird ein 1:1 Kabel verwendet.
Ausgang J1 geht an das Programmiergleis.
Und schon kann es losgehen:
Die Lok auf das Programmiergleis stellen, Power on, einmal kurz vmin Befehl zur Lok senden
In Rocview Rocpro starten und die Schnittstelle auf WIO ändern. POM Anhaken.
Nicht vergessen die Lok auszuwählen, CV Wert eintragen und Lesen.
Werden keine Daten ausgelesen, muss im Lokdecoder CV28: 3 eingestellt sein.
Ich verwende Dekoder von Lenz Silvermini+, Goldmini, Zimo, Kuehn, Kress. Alle Typen funktionieren.
Rückmelder mit RailCom
Nachdem die prinzipielle Funktionsweise von RailCom getestet wurde, soll nun Railcom zur automatischen Lok-Erkennung in Blöcken verwendet werden. Die Verkabelung erfolgt analog zum Programmiergleis.
Ich hatt ursprünglich den GCA214,J1,Port4 parallel zum Gleisbesetztmelder GCA93 über einen 150 Ohm Widerstad angeklemmt, und es funktionierte. Allerdings führte das immer wieder zu Fehlanzeigen des "GCA93". Deshalb habe ich jetzt den Railcomrückmelder an einen eigenen Gleisabschnitt, der zum selben Block gehört angeklemmt.
Um es vorwegzunehmen: Stand Juli 2020 werden Loks erkannt, als Statusanzeige wird jedoch weiterhin ein klassischer Rückmelder (z.B. GCA93)benötigt.
Diese Einstellungen in Rocrail anpassen:
Rocrail Eigenschaften - Automatik:
- Ereignis: verwende Bidirektionale Kommunikation
Rückmelder:
- Schnittstellenkennung: WIO
- Bus: 33
- Typ: Railcom
Block:
- Allgemein: Code Rückmelder: Railcom Rückmelder
- Ereignis: Railcom
Zum normalen Rückmelder wird ein zweiter Railcom Rückmelder (Ereignis: ident) in den Block hinzugefügt. Mit diesen Einstellungen wird im Block die Railcomfähige Lok richtig angezeigt. Allerdings stellt sich der Railcom Rückmelder nicht zurück, sondern bleibt so lange stehen bis eine neue Lok den Block einfährt. Wenn eine Lok ohne Railcom Decoder in den Block einfährt, bleibt der Railcom Rückmelder aus, der Block wird dennoch als belegt angezeigt.
Den Railcom Rückmelder setze ich über eine Aktion zurück. Diese wird bei Freischaltung des Stromfühler Sensors ausgelöst.
Im Logfile sieht es z.B. so aus, wenn eine Lok in den Block einfährt:
20200601.110651.628 r9999I cmdr6804 OBlock 3782 init block RC 20200601.110651.925 r9999I cmdr6804 OWIO 0752 bidi event 33:0 loco=12 type=4 index=0 value=192 ext location data 20200601.110652.065 r9999I cmdr6804 OWIO 0752 bidi event 33:0 loco=12 type=4 index=0 value=240 ext location data 20200601.110652.176 r9999I cmdr6804 OWIO 0752 bidi event 33:0 loco=12 type=2 index=0 value=1 address 20200601.110652.179 r9999I cmdr6804 OBlock 0803 fb1 reports code=[12] dir=0 20200601.110652.182 r9999I cmdr6804 OBlock 4269 block RC set locid= 20200601.110652.182 r9999I cmdr6804 OModel 7614 occ: reset placing and enterside in block: RC 20200601.110652.186 r9999I cmdr6804 OModel 7653 writing occupancy file [/home/rother/rocrail/occ.xml] 20200601.110652.187 r9999I cmdr6804 OBlock 3782 init block RC 20200601.110652.187 r9999I cmdr6804 OLoc 4805 processing cmd="block" for [BR118R] 20200601.110652.188 r9999I cmdr6804 OBlock 4269 block RC set locid=BR118R 20200601.110652.192 r9999I cmdr6804 OModel 7653 writing occupancy file [/home/rother/rocrail/occ.xml] 20200601.110652.193 r9999I cmdr6804 OBlock 3782 init block RC 20200601.110657.580 r9999I cmdr6804 OWIO 0752 bidi event 33:0 loco=12 type=2 index=0 value=1 address 20200601.110657.583 r9999I cmdr6804 OBlock 0803 fb1 reports code=[12] dir=0 20200601.110701.162 r9999I cmdr6804 OWIO 0752 bidi event 33:0 loco=12 type=4 index=0 value=192 ext location data 20200601.110701.225 r9999I cmdr6804 OWIO 0752 bidi event 33:0 loco=12 type=4 index=0 value=240 ext location data 20200601.110701.669 r9999I cmdr6804 OWIO 0752 bidi event 33:0 loco=12 type=4 index=0 value=192 ext location data 20200601.110701.735 r9999I cmdr6804 OWIO 0752 bidi event 33:0 loco=12 type=4 index=0 value=240 ext location data 20200601.110703.565 r9999I cmdr6804 OWIO 0752 bidi event 33:0 loco=12 type=2 index=0 value=1 address
OLED Display
Eine sehr schöne Erweiterung ist ein OLED Display.
Es kann nur ein Display an den WIO Drive (I2C Anschluss Port IIC1) angeschlossen werden. Die Pin Belegung stimmt nicht 100 % mit den OLED's überein! Bei mir mußte Pin3 und Pin 4 im Kabel gedreht werden.
Standardmäßig sieht man diese Informationen:
- WIO Adresse
- Rocrail Status
- WLAN Status
- Power Status
- CV Werte des RailCom Empfängers
Es eignen sich z.B. die OLED's
- 0,96 Zoll OLED SSD1306 128x64 I2C/IIC (ca. 5 Euro)
- 0,91 Zoll OLED SSD1306 128x32 I2C/IIC (ca. 5 Euro)
Ich verwende das 0,96 Zoll Display.
im WIO Setup stellt man die Display Groesse unter "Display" ein.
OLED Text Anpassungen
Wer will kann sogar den Text auf dem Display anpassen. Dazu legt man sich in Rocrail ein Textfeld an.
Wichtig ist:
- Schnittstelle: WIO, BUS: 33 Adresse: 60 Anzeige: 1
Über eine Aktion kann man dann auf dieses Textfeld Updates laufen lassen.
Zeile 0 und 1 werden von der WIO Firmware beschrieben und können aus Rocrail nicht geändert werden.
Die Syntax ist hier beschrieben:
https://wiki.rocrail.net/doku.php?id=arduino:wio-en&s[]=wio&s[]=display#display_ssd1306_sh1106
Beispiel:
{E} {F0I1L3X0}{s100}*** ROCRAIL is running *** Have Fun *** {s} {F0I1L4X0} {P}
Gehäuse
TEKO KL22 Gehäuse Serie AUS/KL, 178 x 128 x 72 mm (ca. 9 Euro)
An der H-Bridge sollte man einen Kühlkörper anbringen.
Zur Beschriftung eignet sich hervorragend Sattleford Klebefolien 120µ (5 St. ca. 5 Euro).
Man kann diese mit einem Tintenstrahldrucker (z.B. Pixma MX725) bedrucken.
Troubleshooting
Verbindung mit der Seriellen Console:
Die Übertragungsrate beträgt 115200 Baud.
Ganz Wichtig. Wenn Railcom aktiviert war, schaltet der ESP nach einer Weile die Geschwindigkeit auf 250000 Baud hoch. D.h. man die Geschwindigkeit in der Konsole ändern. Auch kann man dann keine Kommandos mehr absetzen, sondern nur noch lesen.
Die Monitor Kommandos findet man hier:
https://wiki.rocrail.net/doku.php?id=arduino:wio-en&s[]=wio#monitor_commands
Ändern der Netzwerkadresse oder der Rocrail Server IP Adresse
Auf dem alten System (im alten Netzwerk) für den WIO die Betriebsart LED einschalten.
Danach kann man die IP's ändern, der ESP bekommt via DHCP eine neue IP. Diese findet man meist in seinem Router.
Dann kann man über den Browser das setup aufrufen und Änderungen vornehmen.
weitere Probleme
Bei mir trat das Problem auf, dass aus unerklärlichen Gründen das WLAN nicht stabil lief.
Hier half nur eine Neuinstallatin des ESP.
ESP Softwaredownloadlink: https://gitlab.com/rocrail/wio/-/blob/master/
Die Firmware muss neu kompiliert werden und kann dann hochgeladen werden.
ESP Flash Tool: https://www.espressif.com - Support - Download - Tools: Flash Download Tools
* https://www.espressif.com/en/support/download/other-tools
1. Den ESP via USB Kabel mit einem PC verbinden
2. flash_download_tool_3.8.5.exe starten * Developer Mode * ESP8266 auswählen
im Beispiel ist kein ESP angeschlossen.
Weitere Dokumentation: https://wiki.rocrail.net/doku.php?id=arduino:wio-en#binary
ESP Programmierung
Soll der Programm-Code, wie an manchen Stellen im Forum empfohlen, neu kompiliert werden empfiehlt sich das
Adruino IDE Tool https://www.arduino.cc/en/Main/Software
1. Einstellungen:
Werkzeuge - Port - Port auswählen: COM1
Board - Board auswählen: LOLIN(WEMOS) D1 R2 & mini
Boardverwaltung: ESP8266
2. Datei laden: WIO.ino
3. Anpassungen vornehmen
4. Kompilieren: Sketch - Überprüfen - Hochladen. (Binary steht hier: WIO\build\esp8266.esp8266.d1_mini\WIO.ino.bin)
Es kann passieren, dass dann Fehler auftreten. Meist müssen dann Libs nachinstalliert werden.
Was alles benötigt wird steht hier: https://wiki.rocrail.net/doku.php?id=arduino:wio-en#libraries
Fazit
Ich setze WIO Drive jetzt einige Monate im Echtbetrieb ein. Auf der Anlage laufen ca. 6 Züge mit Beleuchtung gleichzeitig.
Das System läuft extrem stabil, es gab keinen einzigen Absturz. Die WLAN Kommunikation läuft hundertprozentig stabil.
Beide RASPI's und der WIO Drive laufen ohne extra Kühlung und erwärmen sich nicht über ca. 65 Grad Celsius.
Die CPU Last ist verschwindend gering (< 10%).
... wein ein Rocrail Update eingespielt werden soll
muß auch die WIO Firmware upgedatet werden.
Die aktuelle Firmware liegt hier:
https://gitlab.com/rocrail/wio/-/tree/master
Die Versionsnummer befindet sich im Unterverzeichnis: gen in der Datei revision.h
Mögliche Vorgehensweise für eine Update von 185 auf 408:
- AdruinoIDE (1.8.13) starten - Im Bordverwalter:
Update esp8266 2.7.1 -> 3.0.2
- Bibliotheken updaten:
Wire (I2C) FastLED (WS2812) 3.3.3 -> 3.4.0 RotaryEncoder 1.3.0 -> 1.5.2 MFRC522 (RC522) 1.4.6 -> 1.4.10 Servo 1.1.6 -> 1.1.8 ArduinoOTA 1.0.7 MCP_CAN
- FW Source laden und prüfen
Die im WIO gespeicherten Werte aus der USERCNF.h (z.B. IP,SSID..) bleiben erhalten
- Rcoview im Raspi Desktop starten
Programmieren - WIO: Im Kasten WIO: LED auswählen mit "set" werden die Einstellungen gespeichert Mit Query den WIO auswählen: OTA aktivieren
- im AdruinoIDE:
Werkzeuge: Port: WIO auswählen, Board: LOLIN(WEMOS) D1 R2 & mini prüfen und hochladen
- in Rocview
Programmieren - WIO: Im Kasten WIO: DCC auswählen
Getestete Versionen
WIO: 408
Rocrail: 2.1.2726
Debian version: 11 (bullseye)