A DCC (Digital Command Control) Throttle to control model trains. DCC-GO can be installed on a computer like the raspberry pi to talk to an Arduino running DCC-EX CommandStation or DCCPlusPlus BaseStation
DCC-GO is written in Golang and was inspired by DCCute.
This repo contains:
- A Golang DCC Throttle library github.com/dmowcomber/dcc-go/throttle
- A DCC Throttle HTTP API
- A DCC Throttle Web page
ls /dev |egrep 'ttyACM|ttyUSB'
ttyACM0
# found /dev/ttyACM0
# install
go get github.com/dmowcomber/dcc-go
# run with default address 3 and default device /dev/ttyACM0
dcc-go
# run with overridden address and usb device
dcc-go -address=3 -device=/dev/ttyACM0
docker-compose up -d
After making changes or pulling latest you'll need to rebuild and restart the service:
docker-compose build
docker-compose kill
docker-compose rm -f
docker-compose up -d
docker build . -t github.com/dmowcomber/dcc-go
docker run -p 8080:8080 --device /dev/ttyACM0 github.com/dmowcomber/dcc-go
You can test out the UI and API against a virtual device which can be useful if you don't have an actually a DCC++ or DCC-EX Arduino connected but you'd still like to test the integration between the UI and the API.
Create a virtual device using a local file: ./testdev
socat -d -d -4 PTY,link="./testdev",raw,echo=0 STDIO
In a separate terminal, run dcc-go
go run . -device $(readlink ./testdev)
dcc-go is alpha quality software at this time. Although it works, it has not been tested with any commercial DCC system. It has only been tested with Raspberry Pi, DCC++ or DCC-EX on an Arduino Uno, and an ESU Loksound decoder. The author of dcc-go claims no responsibility or liability for any damage to your system, equipment or trains.
USE AT YOUR OWN RISK.