I’m building a physical cab dashboard to control Train Simulator, from master controller to an AWS sunflower to an air gauge and speedometer, and everything in between. I’m replicating the controls present in UK trains such as the Class 80x high-speed train, and one of the important controls to include is the Driver’s Reminder Appliance (DRA). The DRA helps the driver avoid passing a signal at danger (that is, a red aspect), and like so many safety innovations, was introduced as a result of deadly accidents. When a driver passes a caution (yellow) signal that indicates the next signal might be a red, but then stops at a station, it’s easy to forget about that yellow signal, even if the AWS sunflower is showing its yellow vanes.

The DRA reminds the driver that they are at a red signal or that they passed a restricting/caution signal by providing both a visual reminder and preventing the train from taking power. Before leaving a cab, or after entering a cab, stopping at a red signal, or stopping after passing a caution signal, the driver pushes the DRA push-pull button, which illuminates in red. As long as the button is depressed, the train will not take power: the driver must wait until they have authority to start the train, a signal ahead has cleared to a non-stop indication, or the signaller (dispatcher) has given them permission to pass a stop signal to pull the DRA button. When pulled, the light extinguishes, and the train can take power.

Thanks to creating my flexible CAN controller, adding a DRA button to my Train Simulator controller was easy. The CAN bus controller provides a set of low-current GPIO pins (in this case, used to check if the button is depressed or extended), and up to three higher-current FETs for powering hardware (in this case, the 12V red LED bulb in the DRA button). The hardest part of this project was actually finding the correct button used in UK trains to make my setup as prototype-accurate as possible. For my first version, I used a chunky red Allen Bradley push-pull mushroom button into which I had embedded a red LED, as the as-delivered button had a 110V bulb. I spent nontrivial time staring at Google Image Search results for “clear mushroom button” and similar phrase until I finally identified a button that is definitely used on at least some UK trains, then purchased the various components necessary to complete it (the actuator, the LED bulb, and the contact unit).

Prototypical DRA button from a Class 80x train cab (highly edited image crop to try to see details) Prototypical DRA button from a Class 80x train cab (highly edited image crop to try to see details)
Simulated (but accurate!) DRA button embedded in laser-cut plywood Simulated (but accurate!) DRA button embedded in laser-cut plywood

I wrote a simple addition to the CAN bus controller firmware similar to the AWS firmware module that sends a message indicating the status of the DRA button every 200ms, and also sends an asychronous message every time the button changes state. It also accepts a message from the host with the new state of the LED: this ensures that the LED is not automatically illuminated by pushing or pulling the button, but reflects what the host knows about the button (and allows proper self-testing by pushing and pulling, and ensuring that the LED changes state to match).

Toggling the Driver’s Reminder Appliance

Finally, as of February 2024, the full setup with DRA button, speedometer, air gauge, AWS sunflower, and AWS acknowledgement button.

Full train simulator setup with DRA button, speedometer, air gauge, AWS sunflower, and AWS acknowledgement button Full train simulator setup with DRA button, speedometer, air gauge, AWS sunflower, and AWS acknowledgement button