This page is a collection of hardware and software with pointers to further reading.
- 1 DCC++
- 2 General Digital Command Control Projects
- 3 Raspberry Pi and JMRI
- 4 Command stations
- 5 Boosters
- 6 Decoders
- 7 Notes
See DCC Plus Plus article
DCC++ (github) is an open-source hardware and software system for the operation of DCC-equipped model railroads.
The system consists of a DCC++ Base Station and DCC++ Controller.
The DCC++ Base Station consists of an Arduino micro controller fitted with an Arduino Motor Shield that can be connected directly to the tracks of a model railroad.
The DCC++ Controller provides operators with a customizable GUI to control their model railroad. Written in Java using the Processing graphics library and IDE and communicates with the DCC++ Base Station via a standard serial connection over a USB cable or wireless over BlueTooth.
The Author's Announcment
The DCC ++ implementation was announced on Trainboard by the author:
- The base station consists of an Arduino Uno (or Arduino Mega) and an Arduino Motor Shield, and that's the only hardware needed (with the exception of an 18V AC or similar power pack). All of the code for the Arduino is written in C++ using the Arduino open-source IDE, hence I named my home-brew system DCC++ (pun intended).
- The interface is written in Java using another open-source IDE and basic graphical library called Processing. The interface runs on Windows as well as Mac systems, though I have not yet written an iOS version. Connection between the PC/Mac and the Arduino is either by USB cable or BlueTooth for wireless control.
- The system itself supports just about everything you can do with DCC, including multi-train throttles, 28-function decoders, programming on the main, reading and writing CV's from a dedicated programming track, controlling turnouts, etc. It has built-in support for IR sensors which I have found work very well for train detection and enable complete automation of very complex operations.
- One of the reasons I created DCC++ is because I was disappointed with the commercial controller I had purchased when I first started building my N-scale railroad. I really want to automate my entire layout and thought I might give JMRI a try, but at that time it did not support my controller. But the real reason I created DCC++ was because I always wanted a good excuse to program an Arduino, and a good reason to learn Java.
- All of the code, both the C++ for the Arduino as well as the Java for the interface were developed by me from scratch and are not derivations of any other system, commercial or otherwise. Since I relied heavily on other open-source systems (Arduino and Processing), my intention is to provide all of my code back to the community for anyone to freely use, modify, hack, distribute, etc.
- Though all of my code is heavily documented, bundling any code for distribution to others in a way that is useable is not that easy. So, as an initial step in this process I've created a DCC++ youtube channel with a few videos demonstrating the interface as well as showing how the system is used to fully automate my small but complex N-scale layout.
- Over the next few weeks I plan on creating and uploading a few more detailed videos that explain how the Arduino is configured, how the Arduino Motor Shield turns out to be the perfect add-on for producing two channels of bi-polar signals (one for the Main track and one for the Programming track), how the Java graphical interface works with the Arduino, and how to create some simple IR sensors for use with the system.
General Digital Command Control Projects
There are a number of projects you can build on Rob Paisley's website Model Railroad & Misc. Electronics.
He also has plans for a MiniDCC System and a number of other circuits.
For those interested in making an ammeter for DCC, here is his circuit schematic: DCCAmmeter
Japanese DCC DIY project is DCC Alliance of Electronics Works(DCCEA Japan). This project members are providing some DCC decoder kits and occupancy S88 decoder, also arduino based command stations. These hardware is open source and freely you can customize it.
What is the Difference Between the Raspberry PI and Arduino?
You are going to come across references to the Arduino and the Raspberry Pi when looking at DCC and Model Railroad projects and automation. So what exactly makes the Raspberry Pi different from an Arduino based project?
- Raspberry Pi
- The Raspberry Pi is a complete computer. More powerful than the legendary Commodore 64, but at a lot less cost. It can function as a stand alone computer, or you can use it to run JMRI, as well as other tasks. It was developed for the purpose of teaching programming and supports a number of languages. A number of accessories (hats) are available for specific tasks and to expand the computer beyond its basic configuration.
- The Arduino is a microcontroller. It is not a computer. It is designed to run software to do a specific task, such as controlling a garage door opener or a microwave oven. In fact, it is very similar to a DCC decoder. It can be used to control turnouts, signals, read RFID tags, and a number of layout automation and DCC/LCC tasks. It has a dedicated IDE which you can download for free to aid in programming it. As with the RPi, it also has a number of "shields" that add functions and input/output capabilities such as relay boards, etc.
Both products have a large presence on the Internet. Don't know how to program? Many people publish programs you can download and use, or customize for your purpose.
Raspberry Pi and JMRI
Steve Todd has created an image you can load onto an SD card, which is used to boot the RPi and launch JMRI automatically. There is no need for a keyboard or display, any additional configuration is done via the network connection.
All you need is a Raspberry Pi Model 3, an 8GB MicroSD card, and a few extra bits, like a power supply and a case to put it all in. Go to his website and read the instructions, download the image, and go from there.
Website: JMRI RaspberryPi as Access Point
DIY LocoNet(R) Command Station for use with Walk-around throttles like UT1/UT4 and FRED.
- Run up to 8 locos at the same time.
- Handles address range 1 - 9999.
- Programming capability.
- Extendable with any LocoNet(R) compatible booster.
Several units built and in operation.
More info, see the MiniBOX page.
DIY Command Station for use with PC programs.
- emulates Uhlenbrock Intellibox (R), Lenz (R) and HSI88.
- uses either RS232 or USB
- Runs up to 64 or more locos at the same time, smart queue handling.
- Handles address range 1 - 10276.
- Support of turnout feedback.
- Programming capability.
- Support of S88.
The goal of the USB to DCC project is to create a DCC booster that is interfaced with a PC through USB. A prototype of the hardware has already been designed in built; however, this is in the very early stages of developement.
This device has three functions: Loconet-Interface, DCC command station, DCC loco programmer.
Please see the [USB2DCC SourceForge] page for further details.
Free and simple wireless DCC stand-alone system.
- Support 99 Locomotive Addresses
- Support 28 Speed steps (step)
- Light Control (F0);
- Control of auxiliary functions F1, F2, F3, F4;
- Command range of approximately 100 m;
- Support of up to 3 wireless commands;
- Complete CV reading and writing;
- "Running" programming of CVs;
- Locomotive brake;
- 12 A of power;
- Short circuit protection.
- Upcoming features supported:
- Support 999 Locomotive Addresses;
- PC interface;
- Exchange command.
Please see the zDCC Home Page for details.
Next version zDCCXp, works in progress.
Arduino UNO based DCC and marklin command station system.The firmware and schematics are open source. supports 128, 28, 14 step, 1 to 9999 address, 28 functions and also Marklin Motorola 1 and 2. Powerful free windows front end software is also available for pc control.
- DSmain - a flag ship command station. simple enclosure and S88N interface, 4A booster.
- DSshield - arduino shield type command station. S88N interface.
- DSbluebox - stand alone CV read and write programming and simple command station.
Desktop Station - DSair
- Arduino based Open source command station
- Equipped Wi-Fi access point and web server
- No requirement to install any mobile app
- Supports DCC and MM2, Analog PWM
NOTE: A poorly designed or constructed booster can put waveforms on the track which could possibly damage decoders. This is not a project for those inexperienced in electronics.
The TSL railroad has four power boosters using low saturation resistance Hexfets. The first one was prototyped 01/13/98. For details and build instructions, please see the Booster page.
Schematics are available for you to build your own booster.
- OpenDCC decoders for dmx, servo, light effects, turnouts, signals, roundabaouts
- Professor Mark Csele's DCC Projects page includes a decoder circuit
- Sameer's DCC Page has info on buidling an accessory decoder
- Nucky releases very cheap and coin size DIY decoder. N scale size.
- Nagoden releases Arduino based Sound DCC decoders, MP3 sound decoder and smile decoder R6n. Source code is absolutely open source. N scale size.
Build Your Own Decoder tester
This is the schematic for a simple Decoder Tester. You can purchase commercial devices which are more sophisticated, but for simple decoders, this will do the trick.
DIY system by PACO http://usuaris.tinet.cat/fmco/home_en.htm
A RaspberryPi costs less today than a C64's manufacturing cost Commodore 40 years ago. A C64 was estimated to cost US$35 to manufacture during the 1980s. Which is more than US$80 today.