RocRail, Arduino en RaspberryPi

Al sinds een behoorlijke tijd ben ik op zoek naar een manier om een stuk modelspoor te automatiseren. Vanuit de hobby clubs en dergelijke ken ik eigenlijk alleen de dure merk oplossingen zoals die van Roco en Märklin. Daarnaast moet je natuurlijk ook nog bijvoorbeeld electrische wissels met decoders, terugmelders, OC32-achtigen en nog veel meer zaken aanschaffen om tot een compleet plaatje te kunnen komen.

Daar heeft mijn portemonnee allemaal geen zin aan. Dat geld besteed ik liever aan dure treinen. Daarnaast is het natuurlijk persoonlijke uitdaging om dit voor elkaar te krijgen. In dit inleidende artikel wil ik even een paar zaken op een rijtje zetten voor jullie. Later zal ik per onderdeel ook zaken in meer detail bespreken en laten zien.

Dus ben ik eens gaan rondkijken naar wat er voor mogelijkheden zijn. Als eerste moet er natuurlijk iets zijn om treinen te laten rijden. Een standaard digitale trein rijdt via het DCC protocol. Dit gestandaardiseerde protocol kan je niet omheen. Gelukkig is het helemaal open.

Om dat op de juiste sporen te krijgen heb ik besloten om DCC++ te gaan gebruiken. DCC++ maakt gebruik van een Arduino en een motorshield om je treinen te kunnen laten rijden. De kosten voor dit geheel zijn zo’n 20 euro. Vijf voor de Arduino en nog eens 15 voor het motorshield. Een beetje motorshield kan zeker twee treinen te gelijk aansturen en met de juiste voeding ook wel drie. Zoals de naam doet vermoeden is dit geheel gewoon DCC compatible. De meeste locs kan je dus prima aansturen. Een mooi detail is dat deze centrale zowel een Main output heeft als een Program track ondersteunt, erg handig!

Daarnaast moet iets de centrale aansturen om alle spoorse zaken in de gaten te kunnen houden en te regelen. Er zijn diverse systemen, zowel betaald als onbetaald. Denk bijvoorbeeld aan KopLoper, iTrain, JMRI en RocRail. Mijn keus is uiteindelijk gevallen op een combinatie van deze laatste twee. Het programmeren en uitlezen van locs doe ik met JRMI (DecoderPro, dat is daar onderdeel van). Het aansturen van de modelbaan doe ik met RocRail. Mocht je Facebook hebben, check dan hier even hoe mooi mijn 30+ jaar oude Märklin Krok rijdt met deze apparatuur!

RocRail is gemaakt door Robert Jan Versluis en is voor zover ik kan beoordelen een van de beste stukken (gratis!) software in modelspoorland. Uiteraard later nog veel meer hierover want ik heb nog geen 1% van de mogelijkheden ontdekt. Er is bijvoorbeeld ondersteuning voor alle gangbare modelspoorstandaarden zoals DCC, Dinamo enzovoorts. Daarnaast is er ook integratie met Hue om de verlichting te regelen. Hoe cool is dat! Daarnaast was RocRail eigenlijk de enige die ik kon vinden die de DCC++ centrale goed ondersteunt. Een korte test met twee loc’s die willekeurige blokken doorkruisen vind je hier op mijn Twitterfeed.

Aansturing van servo’s, LED’s, seinen, overwegen en alles wat eigenlijk de trein bestuurt heb ik uitbesteed aan de MARDEC van ArCoMora. Dit fantastische stukje software voor de Arduino is ook gratis beschikbaar, maar je kan ook compleet geïntegreerde kits kopen bij de ontwerper.

Uiteraard zijn er ook zaken die ik écht zelf moet doen. Denk aan het ombouwen van locs en het bouwen van de baan. Daartoe heb ik een schema gevonden om detectie te doen op basis van stroomafname met een LM393. Daar heb ik zelf een klein printje voor ontworpen en uiteraard een houdertje wat te printen is met mijn 3D printer. De wissels waren eigenlijk de volgende uitdaging. Deze heb ik uiteindelijk met een servo aangestuurd en daartoe wat voorbeelden van servohouders bekeken en geprobeerd. Uiteindelijk heb ik op basis van een bestaand ontwerp mijn eigen ontwerp gemaakt. Het bestaande ontwerp was niet links/rechts uitwisselbaar met hetzelfde plaatje waarop je één of twee knoppen kan zetten. Dat is in mijn ontwerp wel het geval. Je kan nu dus de houder zo omkeren, mocht dat beter uitkomen.

Hier is nog even een blokschema om te laten zien hoe e.e.a. aan elkaar te relateren is. Kleine voetnoot bij dit schema is dat alle terugmelders (tm’s) van spanning worden voorzien d.m.v. het DCC signaal uit de Arduino UNO DCC++ (zie ook de bovenstaande link naar het schema). Hierover later meer natuurlijk.