dinsdag 30 december 2014

Raspberry Pi als Rocrail server

De raspberry pi is prima als rocrail server te gebruiken, hiervoor is zelfs een aparte download beschikbaar bij Rocrail.
Om de zaak werken te maken, heb je wel een aantal aanpassingen nodig:

Herkennen USB interface

Om de centrale te laten herkennen (in mijn geval de GBMBoost interface van www.opendcc.de) zijn soms wat aanpassingen nodig.
  1. Laden ftdi module: zoek het device op van de GBMBoost met lsusb:
    pi@rocnet2 ~ $ lsusb
    Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
    Bus 001 Device 004: ID 0403:bfdd Future Technology Devices International, Ltd
  2. Zorg dat dit device geladen wordt bij het booten door deze regel in /etc/modules toe te voegen:
    ftdi_sio vendor=0x0403 product=0xbfdd
  3. Maak een apart bestand aan in /etc/modprobe.d, genaamd ftdi_sio.conf, met de volgende inhoud:
    options ftdi_sio vendor=0x0403 product=0xbfdd
  4. Maak een apart device aan (optioneel), door de file /etc/udev/rules.d/10-opendcc.rules aan te maken:
    KERNEL=="ttyUSB*", ATTRS{product}=="USB-IF OpenDCC GBMBoost V1.0", SYMLINK+="bidib"
  5. Maak deze instellingen actief door te rebooten of door udev te herstarten (service udev restart)
Je kunt nu de rocrail server laten connecten met de centrale via dit device (/etc/bidib).

Opstarten Rocrail Server

Laat de server automatisch starten met het volgende commando:
 
update-rc.d rocraild enable

En herstart nu de raspberry pi of start de rocrail server handmatig:

service rocraild start 

Verbinden met Rocrail server


De server is nu te benaderen via de hostnaam en poort 8051:
rocnet2:8051

De performance van de server is prima, de raspi kan dit makkelijk aan, zelfs in combinatie met de rocnet software.

woensdag 10 december 2014

Universele besturing (met Multimaus en kortsluitmelding!)

Voor de club wordt er gekeken of we een universele modulebaan kunnen maken voor H0, waar zowel DCC- als Märklinlocs op kunnen rijden.

Naast het baantechnische gedeelte kwam daar ook nog een heleboel vragen over de techniek: hoe doe je het omschakelen, en wat gebruik je als centrale? Een intellibox is een mogelijkheid, maar als je met een computer stuurt is dat een beetje te kostbaar. Voor de DCC-baan hebben we al een OpenDCC-systeem, met meerdere Multimuizen als rijregelaars. Dus het zou mooi zijn als we die konden blijven gebruiken.

Na wat speurwerk op internet kwam ik op het volgende:
- een DCC booster (mits niet te intelligent...) is in principe bruikbaar voor zowel DCC als Märklin
- Het is mogelijk om het DCC- en Märklin-signaal tegelijkertijd op de rails te hebben staan.

Nu nog een centrale die beide aanstuurt... Zo kwam ik via de Rocrail-site op het project 'MDRRC' van Robert Evers, die gebruikt wordt door Model Rail Groep Veendam. Dit was gebaseerd op Atmel processoren, die ook voor OpenDCC gebruikt werden, maar er is een versie 2, die gebruik maakt van een commercieel verkrijgbaar 'evaluatieboard' voor de STM32 processor:





Dit bord kun je laden met de mdrrc=software (in de manual staat beschreven hoe dit moet onder windows, maar er is ook een opensource-utility beschikbaar voor Linux), en dan heb je een complete multiprotocol-centrale, met enkele beperkingen:
- DCC decoders worden met 28 stappen aangestuurd
- Märklin decoders worden met 14 stappen aangestuurd
- Maximaal 12 functies aanstuurbaar

Alle interfaces, zoals S88, XpressNet, programmeerspoor, etc. moeten apart worden gebouwd, maar dit heeft het voordeel dat je alleen hoeft te bouwen wat je nodig hebt.

Ik heb een proefopstelling gebouwd met een Roco 10764 booster (Roco noemt dit een centrale, maar ja...) direct aangesloten aan de MDRRC hardware (deze stuur het signaal op 0-5V uit via een pin), en ik heb met succes de volgende zaken kunnen aansturen:
- DCC wisseldecoders
- DCC locdecoders
- Märklin locdecoders

De PC aan de rechterkant was alleen nodig voor de USB-voeding van de MDRRC, maar ik heb ook Rocrail succesvol geconfigureerd.

Van links naar rechts:

Roco voeding 10718 - Roco booster 10764 - MDRRC - (laptop)

Dus voor het maken van de universele digitale sturing hebben we niet meer nodig dan:
- een of meerdere boosters: dit kunnen Roco boosters zijn of een andere, die mutliprotocol ondersteunt
- een MDRRC module, eventueel aangevuld met S88- en XpressNet interfaces
- een laptop of andere computer (raspi!), als er computergestuurd gereden wordt.

Aanvulling: met behulp van de XpressNet interface heb ik nu ook een Multimaus aangesloten aan de centrale, en het werkt: ik kan nu zowel MM (Märklin) als DCC loks sturen met de Multimaus!

Laatste nieuws: ook de kortsluitmelding werkt nu, als je de booster op de volgende manier aansluit:



Op pin 4 van de Roco Booster staat namelijk het DCC signaal als de booster werkt, maar met ongeveer de halve amplitude van het signaal wat binnenkomt op pin 1. Zodra er kortsluiting komt, wordt deze pin naar GND getrokken, maar de initiële waarde is te laag om door MDRRC-II herkend te worden als logische '1', vandaar de 1k pull-up weerstand naar 5V.

vrijdag 5 december 2014

RailCom

Een van de redenen voor het upgraden van mijn DCC-systeem was RailCom, oftewel terugmeldingen via de DCC-bus. Wat je hiervoor nodig hebt was mij al bekend:
- geschikte boosters (speciale aanpassingen voor het doorlaten van het RailCom-signaal
- een terugmeldbus voor de RailCom-data
- decoders met RailCom-functionaliteit.

Ik heb in een eerder berichtje al een overzicht gegeven van alle systemen, en het door mij gekozen systeem: het Bidib-systeem van OpenDCC-guru Wolfgang Kufer. Nu er een deel van de baan gereed was, had ik de mogelijkheid om de decoders in de praktijk te testen. Ik kwam een paar verrassende dingen tegen:
- ESU LokPilot 3.0 DCC-decoders ondersteunden weliswaar RailCom, maar volgens een verouderde standaard, waardoor ze 'vreemde' snelheidsgegevens uitstuurden tijdens het rijden.
- ESU Lokpilot 4.0 DCC-decoders werkten prima, programmeren via RailCom (POM) werkt ook prima.
- De Zimo geluidsdecoder die Fleischmann gebruikt in mijn nieuwe lokset (Beierse D VI) meldt ook de snelheid terug, maar dan correct, hierbij werkt ook POM heel goed.
Gelukkig melden alle Railcom-decoders wel prima hun adres terug, dus kan ik prima de melders gebruiken zoals ze bedoeld zijn: om een betrouwbare terugmelding te krijgen over welke loc waar staat.

Helaas hielp bij de 'oude' ESU lokpilot decoders zelfs het updaten van de firmware niet tegen het verouderde railcom probleem; daarnaast viel het me op dat zelfs pas gekochte decoders met verouderde firmware worden uitgeleverd.

Licht en Beweging

Hoewel het hoofddoel van de modelbaan natuurlijk het treinenbedrijf is, is de scenery minstens zo belangrijk. De omgeving van het spoor moet ook een beetje 'leven': industrie, huizen, lichten...
Om dit te gebruiken heb je natuurlijk modelbouw, die allerlei bouwmodellen leert voor van alles: huizen, stations, industriegebouwen. Ook kun je veel zelf bouwen, zoals bomen, allerlei attributen naast en op het spoor.
Voor het besturen van al die spullen heb ik gekozen voor Rocnet: omdat ik het programma Rocrail al gebruik, was het een logische keus om voort te bouwen op de modules die Peter Giling al een tijdje ontwerpt. Voorheen waren deze gebaseerd op loconet, maar nu is er een reeks modules die gebruik maken van de raspberry pi.
Het werkt als volgt:

Als eerste bouw je een module die op de raspberry pi geprikt wordt en zorgt voor de communicatie met de andere modules (via i2c), dit gebeurt op basis van 6-polige telefoonkabels:



(de losse kabels boven de zwarte kabel zijn mijn eigen toevoeging, ik heb namelijk een statusled en -knop op een paneel gemonteerd)

Dan voeg je 1 of meerdere interface-modules toe: er zijn op dit moment 2 soorten modules:
- een input/output module: hiermee zijn 32 in- of uitgangen te realiseren, zoals drukknoppen of sensoren (ingangen) of relais of leds (uitgangen).
- een servomodule: hiermee kunnen regelbare uitgangen worden gerealiseerd, zoals servo's (beweging) of dimbare leds (licht).



Dit is mijn I/O module, hier zijn op dit moment 20 in- en uitgangen mee gebouwd. Voor de scenery heb ik totaal 12 relais aangesloten:

Dit is een 8-voudige relaiskaart, ook van Peter Giling, de spaghetti is de verdeling van de uitgangen over lichtfuncties (4 stuks) en bewegingsfuncties (ook 4 stuks). Voor allebei gebruik ik namelijk een aparte voeding.

Dit is een 4-voudige relaiskaart 'made in china', die ook direct aan te sluiten is. De relais kunnen trouwens ook 230 volt schakelen (!).

De relais configureer je binnen Rocrail, door setup te kiezen van de Rocnet nodes (deze verschijnen vanzelf in het menu, ze melden zich via het netwerk), en dan per connector de configuratie van de poorten aan te passen:


De onderste 4 poorten waren aangesloten op het chinese relaiskaartje, aangezien ik ze activeer door de uitgang laag te maken heb ik ze hier geïnverteerd (waardoor ik ze nu dus activeer door de uitgang hoog te maken).
Je kunt ze dan binnen Rocrail toewijzen aan een uitgang door de naam van de interface te geven (in mijn geval 'Rocnet'), het id van de Raspberry pi node:


En het nummer van de uitgang (in dit geval dus 13 t/m 16). Op deze manier heb ik een aardig dorpsstraatje gebouwd, compleet met draaiende molen, smid met hamer en smidsvuur, en de nodige straat- en huisverlichting.





Universele Modules

Bij onze modelspoorclub ontstond de vraag of we geen H0-modules konden bouwen, die zowel 2-rail als 3-rail aankonden, oftewel zowel Märklin als DCC (even uitgaand van digitale sturing).
De opzet van de modules was als volgt:

Een modulebak met dubbelspoor, 2 secties per spoor, elk met een geïsoleerd railstuk aan de binnenkant die voor de bezetmelding (massamelder) wordt gebruikt.
Alle modules worden aangesloten aan centrale bedienkast met centrale en S88-decoders, die middels RJ45(netwerk)kabels aan worden gesloten aan de modules.

Dit is voor Märklin, voor gelijkstroom/DCC moest er dus van alles worden aangepast. Gelukkig zijn de secties al geïsoleerd, en zijn ze zodanig gekozen, dat met een stel keerlussen er geen problemen ontstaan met de polariteit.

De aanpassing voor DCC die ik heb gekozen bestaat uit de volgende oplossing:
- monteren van stroomdetectiemelders per module, voor maximaal 8 secties (er worden er meestal maar 6 gebruikt, 4 voor de module, plus 2 voor een volgende of vorige module die geen bezetmelders heeft).
- omsteken van een RJ45 kabel aan de melderprint naar de UTP WCD, en vervolgens de RJ45 kabel naar de bedienkast insteken in de uitgang van de melderprint:



Dit is aangesloten aan de 2e RJ45 aansluiting van een dubbele RJ45 WCD. Hierdoor worden de railsecties dus middels de stroomdetectieprint van stroom voorzien, en gaat de uitgang van de detectieprint (optocouplers) naar de S88 decoders in de besturingskast.