The goal of the project is to create a cheap, simple, open source, automated, 3D printed, connected, DIY model railway system. Here are the details about why can it be useful and how can it help the world.


Since the project is more like a DIY kit with individual parts rather than one single product, I collected some basic parts into one theoretical product called "standard kit", to be able to compare the prices, and the components. The raw material cost of the kit is about 93 USD. (and almost half of that is the cost of the raspi) If that's not cheap for a starter model railway kit, I don't know what is. The components needed for the standard kit are listed below, and you can also view a detailed bill of materials in excel format here.

Contents of the standard kit:


The system design diagram should tell you everything. The brain of the railway is the software running on the raspberry. The HTML5-based control panel is served by the Apache server to any client on the network. Then, the webpage connects to my control software through websocket using javascript. The control software does all the 'thinking': handling requests, scheduling trains, controlling the switches and stations, etc. The software is in connection with the master station's mcu using UART. The master station's job - beside working as a simple station - is to forward the packets received from the raspi to the other devices using a custom protocol what I call Two Wire Powered Communication. The two wires here are the conductive layer on the tracks. These provide the trains and stations with power, and also work as half-duplex communication channel. Every device connected to it has a unique id to address a packet to. (It's basically the same principle as I2C.)
Tracking the trains' position is also made by a custom protocol what I just call onewire. There are metal pads on the bottom of the trains, and also some contacts in specified position on the track. When these contacts come in touch, the train sends it's id through my protocol, so we know that which train arrived to which position. And thus, all conditions are given to make the railway system fully automated. You can program it as a 'railroad taxi', or just simply follow pre-programmed paths, or you can also directly control any train. The possibilities are, again, endless.