This section, refers to railroad track switches as "turnouts" is avoid confusion with electrical switches contained in a Tortoise.

The position of each track turnout is changed by a Tortoise stall motor. Each Tortoise is controlled by a Wabbit stationary decoder which receives and decodes DCC commands from the Arduino(2) Base Station.

A Tortoise is a slow motion switch machine utilizing a micro current draw motor which safely stalls out. Each Tortoise contain two SPDT also controlled by the motor.

A Wabbit is an "Intelligent Stationery Decoder for 2, StallMotor, Switch Machines" [Tortoise] by Circuitron, Inc. There are two versions of the Wabbit. The version used provides turnout position feedback through opto-isolators connections on J5 and J6.

The overall wiring, control and monitoring the state of the 12 turnouts in the TrainThing layout involve Wabbits, Tortoises, bi-color LEDs, IO Boards and connections to the Raspberry Pi (3). Each Wabbit decodes the DCC commands to control two turnouts through a Tortoise and sends the turnout state to the Raspberry Pi (3) which forwards status to the Laptop (4). The interconnection of these elements is shown in the following figure. The dashed lines depict the mechanical connection between a Tortoise and turnout.

Tortoise/Wabbit block wiring

The IO board eliminates point-to-point wiring between Tortoise, Wabbit, turnout frog and bi-color LEDs. Like a Wabbit, each board handles the wiring for 2 Tortoises and 2 bi-color status LEDs connected to headers on the left or right sides of each IO board.

In the picture below the red marked terminal is input for +5v0dc (ground to the left) to power the status LEDs. The blue terminal block to the right is the input for DCC signal which power/control the two turnout frogs and the Wabbit. 

Each horizontal 3-pin header next to the two blue terminal blocks are outputs, through female-to-female cables, to red/green bi-color status LEDs, one for each turnout. The two horizontal headers in the middle of the board connect a status LED to one of the two SPDT switches in a Tortoise. The headers and Tortoise cable wiring are symmetrical so if the status LED color does not match the turnout state (Red/Green :: Thrown/Clear) a cable can be unplugged, rotated and plugged back in to correct correlation.

The vertical 3-pin headers connect the DCC signal to the second SPDT switch in each tortoise to select the polarity of the frog of the controlled turnout. For a hot frog, a wire soldered to the frog is connected to one side of the blue terminal block at the top of the board. The vertical headers are also symmetrical so if the polarity of the frog is incorrect, the cable connected to the vertical header can be rotated to correct the polarity.

The 2-pin header connects the DCC signal to the Wabbit J1 pins 7 & 8. 

IO board to eleminate point-to-point wiring

Scamatic of IO board

Cabling between IO board and other elements. Note the crossing of pins 3-4 and 5-6 on the Tortoise. This makes the cabling symmetrical so that cables from the Tortoise to interface board can be connected either way to get the desired results.

Cabeling for Tortoise, Wabbit and IO Board