There are many aspects to the control of a model railroad. Before the start of construction of this layout, I did a lot of research and planning for the systems I would be using. Block detection, signaling, turnout control, room lighting, and even structure lighting was considered well in advance.
I used Digitrax DCC to control trains on my previous layout. I constructed two control panels of the usual type with switches and panel mounted LEDs. While working on this layout, I discovered that I could construct reasonably priced and reliable accessory decoders which I could use to control turnouts with servos. On that layout, I used a hybrid design with panel switches and LEDs wired with CAT5 cable to each accessory decoder. Each decoder also had a connection to the Loconet buss so I could also operate turnouts from my throttle. I programmed the Arduino on each decoder so that whether operated by panel switch or the throttle command, the panel LEDs would still show the correct turnout position.
During this time, I also experimented with block occupancy detection and JMRI (Java Model Railroad Interface). I purchased components from RR-Cirkits which used 5V power and a Loconet connection – a Towerman and a BOD-8. I also experimented with the input/output capabilities of the Towerman and programming with JMRI. I began to see that by using JMRI interfaced to the DCC buss through Loconet, I could actually simplify wiring. Accessory decoders could be used to control not only turnouts, but signals and lighting. The Towerman could not only be used for block detection, but also could detect button presses and light LEDs. Using the accessory decoders only required a connection to the DCC buss and a 5V power supply.
All this experimentation and discovery led to the present-day systems used for controlling the WVR. I scrapped the traditional control panels, instead using iPads with JMRI panels for the two yards. These panels show occupancy, control the turnouts and uncouplers and can be modified through software rather than physical re-building. I use local pushbutton controls with LEDs mounted on the facia for the remaining turnouts and uncouplers in less dense locations. These buttons are used as inputs to RR-Circuits Towerman or TC-II which are used to output turnout commands. All the turnouts and magnetic uncouplers are servo driven and controlled by accessory decoders through turnout commands via the DCC bus.
The semaphore signals are operated by a variation of the accessory decoder and provide Automatic Block Signaling through JMRI. Structure lighting is also controlled using accessory decoders for each structure which are programmed to follow the JMRI fast clock to turn individual lights on or off. The general Layout lighting is by LED strips controlled by DMX 512 which allows for dimming and color change. The DMX controller is an Arduino Uno with a DMX 512 shield and accepts DCC turnout commands for lighting control.
I wanted as much flexibility as possible to operate the layout, so accessory decoders can be controlled by switch commands on throttles, iPad panels, facia button panels, or JMRI turnout commands. JMRI monitors the DCC bus and is aware of all the commands no matter the method of input and keeps all the panels up to date.