This is a guide to the documentation, which has turned out to be much larger than expected.


The design/implementation of the TrainThing project is given in increasing detail starting with:

  • Introduction
    • A narrative description of the TrainThing project and how it developed.
  • The Problem
    • A more precise definition of what the project shall do and what it may do. Nothing about how TrainThing is implemented.
  • Design
    • A top-level description of the design to implement the TrainThing.
    • Description of the 5 4 hardware/software parts of the design.
    • Division of the project into phases for implementation.
  • Design Details
    • A more detailed description of elements of each of the 5 4 hardware sections.
    • Details of the software implementation.
  • DCC++ Coding
    • Data details of the hardware/software interface using DCC++
      • Controlling the four trains.
      • Controlling the twelve turnouts.
      • Controlling the two reversing relays.
      • Monitoring the thirty-six IR sensors.
    • Commands added to the DCC++ command structure to interface with the Raspberry Pi:
      • Controlling the sixty-four signals.
      • Monitoring the status of the twelve turnouts.
  • Hardware
    • Pictures, schematic, pin numbers, custom board design implementing the design.


Science vs. screwing around

To help understand the design and implementation, the following are provided.


The Process is a weekly blog of the TrainThing development process. One of the primary purposes has been to force me to organize the design/my thoughts and write it down.


The software tools used to develop and document the project are listed.


The reference section provides external links to hardware and software sources along with some videos I watched.