DCC++ 2020 Update Project documentation

Keith Ledbetter Mar 5, 2020

  1. Keith Ledbetter

    Keith Ledbetter TrainBoard Member

    279
    195
    12
    New thread branched from https://www.trainboard.com/highball/index.php?threads/dcc-update-project-2020.130071/page-13

    to discuss maintaining and updating the documentation portion.

    My vote on this would be where possible to not recreate things. There is a very good amount of info. We should pull together where we can and link in my opinion. Rather then try to get permission to post ourselves, etc.

    I do think GitHub is the absolute right place to have the webpage/repository as it has a much higher chance of living a longer time then anyone's personal site. Where we get permission/Cooperation we can keep the background files if we feel very important so if others sites do disappear.
     
    Sumner likes this.
  2. FlightRisk

    FlightRisk TrainBoard Member

    548
    237
    14
    Let's start with some links we can pull from or point to. Here is were a lot of existing documentation lies:

    DCC++ Pages

    https://github.com/DccPlusPlus/BaseStation - Gregg's original repository
    https://github.com/DccPlusPlus/BaseStation/wiki - Gregg's original Wiki - The documentation really starts here
    https://github.com/DccPlusPlus/Documentation - Gregg's doc, but really just pinout
    https://sites.google.com/site/dccppsite/ - Gregg's original Web Page with yet different instructions

    Third Party Pages:

    http://trainelectronics.com/DCC_Arduino/JMRI_DCC++_Setup/index.htm - Assumes working Arduino and shows how install JMRI and get connected
    http://www.motorhomesites.org.uk/dcc-arduino-with-jmri-raspberry-pi/ - A decent "getting started" with a lot of pictures
    https://www.locoduino.org/spip.php?article187- Our French friends. Great info. Google will Translate it
    http://1fatgmc.com/RailRoad/DCC/page-1.html - Sumner's setup instructions with a Raspberry Pi as the JMRI controller
    https://www.jmri.org/help/en/html/hardware/dccpp/index.shtml - JMRI instructions for DCC++
    http://www.clubncaldes.com/2016/02/build-your-own-dcc-command-station-for-8.html - Good step by step with pictures

    And I would like to create the definitive DCC++ site and documentation, consolodate some of the above and/or provide links at the new DCC++ EX project:

    https://dcc-ex.github.io/ - WEB page hosted at GitHub
    https://github.com/DCC-EX - The project at GitHub with Wiki we have begun
     
  3. Keith Ledbetter

    Keith Ledbetter TrainBoard Member

    279
    195
    12
  4. FlightRisk

    FlightRisk TrainBoard Member

    548
    237
    14
    Here is something I hope to get help with. Perhaps even someone coordinating the documentation project. If not, at least help me decide what to put where and come up with some verbiage

    Places we can put documentation and help files:

    github.com/DCC-EX

    The main "Organization". It holds all our repos and allows for "projects" which we now use to have in one place the 3 kanban style project management/todo lists these repos:

    • DCC++ Classic Development
    • DCC++ EX Development
    • Documentation
    • Web Page

    QUESTION: should this remain here so they are all in one place, or placed in each projects repository? Look before commenting because the way it is laid out visually in the "Organization" view (github.com/DCC-EX) vs going into each repo and looking and finding the todo list there.


    Each repo can have:

    Special files:

    • README.md - displays as soon as you go to the page
    • CHANGELOG.md - a good place to keep the running list of changes between versions
    • CONTRIBUTING.md - people know to read this and a popup appears referencing it when someone tries to issue a PR.
    • LICENSE.md - place to list the copyrights, credits and open source rules
    • CODE_OF_CONDUCT.md - misc file
    • README.md that displays as soon as you look at the repo folder structure. Good place for the most important points we need them to read?
    Other files:

    "docs" folder - can put changelog, contributing and other files here, but best maybe on the root folder. What can go here, if anything?
    Project tab - We aren't using but we can move our todo lists here if that is better than having them on the "organization" page
    Wiki - Quick start? Full Documentation? How can we make use of this?

    A WEB Page

    https://dcc-ex.github.io/

    We can have a small WEB page hosted by GitHub. It can contain full instruction or just basic getting started info and links to the rest.

    Overall, the most important files are the README, CONTRIBUTING, Wiki and WEB Page

    Documents / Content

    We need to expand and then organize this list of the kinds of information, manuals, guides, etc. we want to create.

    • web page
    • important links
    • contributing guidelines
    • quick start guides
    • what is DCC++
    • Description of the project(s)
    • hardware setup/connections
    • how to download and then upload to the Arudino
    • Our Vision Statement
    • Project Scope
    • Mantra - keep it simple. keep it cheap
    • shopping list
    • JMRI
    • laptop config
    • Raspberry Pi config
    • throttles
    • feature list
    • change log
    • using your phone as a UI
    • important links
    • other repos/branches
     
  5. Keith Ledbetter

    Keith Ledbetter TrainBoard Member

    279
    195
    12
    FlightRisk I'll volunteer to take the lead on the organization, documentation, wiki/webpage etc and make suggestions in this thread. I know you have more then enough on your plate on the code/technical side and since I am only minimally helpful on that side let me lead this side. I would love somewhere more trained in the field but I'll muddle through and I'm sure others will pitch in.
     
  6. FlightRisk

    FlightRisk TrainBoard Member

    548
    237
    14
    Thanks Keith! I was just going to start begging here :)
     
  7. KC Smith

    KC Smith TrainBoard Member

    109
    111
    12
    Hello Keith, FlightRisk, Antani, RoadRailer, John, Haba & Others.

    Thank you for taking time out to further the DCC++ platform.

    I built my first of 10 or so DCC++ UNO and Mega systems four years ago and have given them to my club members at Stoney Creek Model Railroad Club SCMRRC https://sites.google.com/site/scmrrc/home to use as primarily Programming stations and secondarily as holiday display layout DCC Operating systems.

    Regarding Documentation;

    About three years ago I put together two MSword/pdf documents for my members to printout and use for their DCC++ systems.
    1) First a DCC++ Base Station 1.2.1 Arduino Build & Setup Document
    2) Second a DCC++ JMRI 4.7.1 DecoderPro Getting Started Document .

    I pre-assembled and loaded/configured their Arduino_Uno DCC++ system with the Current-sample_max in the Currentmonitor.h tab set to 300 for N scale, and set to 600 for HO scale users. I then went through the #2 JMRI doc and gave a two hour long step by step how to use Decoder pro for programming and operations Clinic with them programming and using their DCC engines at my home.

    These two documents attached are nearly three years old and were written for DCC++ classic & JMRI 4.7 or later. If any parts of these docs would be of interest or use to use please feel free to use them.

    Public shows:
    For Holiday public shows we normally use the clubs Lenz DCC system with RF hand throttles to operate the engines on the clubs 300 liner foot modular layout on the east and west bound main lines and use the Arduino Mega DCC++ with multiple JMRI Engine driver wireless throttles to operate multiple DCC engines on the side third rail track and through a operational Engine Turntable into a three bay Engine House.

    Additionally we have successfully tested and used a Mega/DCC++ & Arduino motor shield system to simultaneously run eight to ten HO scale DCC engines around our clubs large Holiday Modular Public Exhibit layout, and is now used as the backup system to our Lenz. We use a USB connected Win10 Laptop with JMRI Decoder Pro along with four wifi throttles i.e., 2 smart phones with Engine driver(android) and W-Throttle(apple), and 2 Samsung Galaxy E Tablets (android) with Engine driver each device running two DCC engines throttles. I use a dead 9volt battery on top of the motor shield chip as a heat sink.

    Gregg's DCC++ system is a proven performer and a great platform to build upon.

    Again, Thank you in advance for all your efforts on the DCC++2020 endeavor.

    Best Regards,
    Kevin C Smith
     

    Attached Files:

    Last edited: Apr 5, 2020
  8. FlightRisk

    FlightRisk TrainBoard Member

    548
    237
    14
    I laughed out loud when I read this :)

    Thank you so much for sharing this! We have a lot of collating to do and this will really be great to include in our resources as well as probably use it in a web and PDF based help system.
     
  9. Keith Ledbetter

    Keith Ledbetter TrainBoard Member

    279
    195
    12
    yes agree really good stuff. Work is insane for me right now so I have not progressed very far but will get on it soon!
     
  10. FlightRisk

    FlightRisk TrainBoard Member

    548
    237
    14
    Keith, et. al. We are finishing up changes that will be the next version of DCC++ EX, and will continue to add features and look at other ways to tweak the system. I'll have more time when that is finished. Let's have a check-in about where we are documentation-wise how to at least organize our materials to distill down into our help files, tech docs and quick starts.
     
    KC Smith likes this.
  11. Keith Ledbetter

    Keith Ledbetter TrainBoard Member

    279
    195
    12
    OK, I did some inventory this weekend and gathered thoughts. Let me get everything together and present a framework in next couple days. A lot we'll have and some we won't and can assign out. I think what you layout above helps and we do need to get what we do have up on github. Given we are ready for an EX release important we document version control as well. Good stuff!
     
    KC Smith and FlightRisk like this.
  12. KC Smith

    KC Smith TrainBoard Member

    109
    111
    12
    Last edited: May 30, 2020
  13. KC Smith

    KC Smith TrainBoard Member

    109
    111
    12
    Fred, Roger, David, Chris, Atani

    During this past Monday's google meeting David discussed implementing a I2C library for DCC++ EX, and I believe Chris UkBloke has an desire in making his layout protocol the same.

    Are you familiar with Universal Railroad Bus URB branding by Steve Massikker? It looks well documented and has a good over all public face with no voice overlay. And he's monetized a Arduino for Model Railroad product line

    It is Arduino based and utilizes I2C comm for the network control interface.

    URB Universal Railroad Buss Control FAQ.
    https://arduinorailwaycontrol.com/steps.html

    Implementation of the URB Layout Plan.


    I2C Parsing video


    All Video Home page.
    https://www.youtube.com/user/Exactsteve/videos


    Let me know your thoughts.


    It would be nice if Gregg Berman came back on line we could do this in spades.

    Regards,
    Kevin
     
    Last edited: Jun 6, 2020
  14. FlightRisk

    FlightRisk TrainBoard Member

    548
    237
    14
    I was not familiar with this. I know there is a spec for I2C that can go 100ft or so instead of the normal very short distances. I'll look into it. I have been following the bluerail folks too just to see what they are doing. Thanks for your research!
     
  15. pjbca

    pjbca New Member

    2
    0
    1
    New user, tx to all the devs!
    I have DCC++ setup on Mega working fine with JMRI.

    I'm building a large layout with 26 turnouts.
    I would like a control panel with physical switches and LED indicators of the turnout status.
    Any advise on strategy how to implement this with JMRI?
    Tx!
     
  16. pjbca

    pjbca New Member

    2
    0
    1
    I meant any advice how to implement with dcc++.
     
  17. FlightRisk

    FlightRisk TrainBoard Member

    548
    237
    14
    I hope others will join in on this. I don't have all the JMRI expertise yet, but it has a lot of support for turnouts and accessories. JMRI can control your sensors and outputs or you can save them in DCC++ EX. JMRI knows how to read what you have saved and loads them into itself. If you have a Mega, you can use all those pins to control your turnouts. You may also want to look at the scripting portion of JMRI. There is also a groups.io for JMRI were you can ask questions.
     
  18. Jack Regan

    Jack Regan TrainBoard Member

    22
    12
    2
    Hey All, I have a suggestion to add to the DCCppEX sketch. I had posted a picture of the setup I am trying to get going. A Raspberry Pi connected to a Mega2560. It all looked and sounded so simple. I flashed the Pi with JMRI and no problem. Engine Driver connects up and all is well. Except nothing is working. I may have a problem with the Motor Board or with communication between the Mega and JMRI. So here is the suggestion. JMRI has the ability to send a CMD command over their traffic monitor. Thats what the serial monitor is called. Could a function be added that looks for the command string sent and issue a reply if all is well. Likewise, reverse it and have the ability to send a command over the Serial monitor and have JMRI respond. Those additions would help eliminate where issues may lie.
     
  19. FlightRisk

    FlightRisk TrainBoard Member

    548
    237
    14
    @Jack Regan If you have already setup DCC++ in JMRI for DCC++, then it automatically tries to find it. If you unplug the Arduino, for example, and reboot your pi, it will say something like "unable to communicate with DCC++". So that tests the connection. Then open JMRIs "DCC++ Traffic Monitor" and "Send DCC++ Command". Then in the "Generate DCC++ Packet" Window (don't ask me why it is called a different thing on the menu and in the window header), enter "<s>". So that is a lower case "s" for "status" enclosed with the brackets. You should see some basic status info. Does that work? If so, comm from JMRI to the Arduino is working. If not, we need to start there. Perhaps use the Arduino IDE and its serial monitor and see if you get the bootup info when you open the serial monitor and can issue the same <s> command to get status shown.

    You can from either the generate packet window or the serial monitor send a <1>. Do all 4 lights on the Arduino Motor Shield light? You will get a response back, it just says the function completed. There is no code to check a pin and make sure that the motorboard actually has power and turned on. In fact, very few of the commands can verify anything other than the command was sent and acknowledged by the base station. There are a few that do test the entire path of communication, one is the "<c>" command. That asks for current. With nothing taking power from the main track and 4 lights on the Arduino Motorboard, issue this command and note the value returned, <a XXX> where XXX is a raw pin reading from the current sense pin. It should be 0 or close to it. This tests that everything from the track, through the motorboard, and back to the arduino is powered. Now put an engine on the track, hopefully one with sound. Or, if using 12V into the motorboard, and have a 100 ohm, 1.5W or better resistor (or 10, 1k resistors in parallel to give you 100 ohms at 2.5 Watts for 1/4 watt resistors), short that across the empty track. Now the <c> command should give you a positive number.

    In JMRI, if you turn on the power manager, it polls DCC++ about once every second to update the screen. It gives a percentage power indication. So that tests bi-directional communication through the entire system from JMRI to the loco.

    There is also a diagnostics "<D>" command. Some help on it here: https://github.com/DccPlusPlus/BaseStation/wiki/Diagnostics---D---Command

    If all that works from either serial monitor, then it would be the JMRI configuration. Make sure DCC++ is set up correctly and all the radio buttons are checked to use DCC++ on one of the setup screens. I would go here



    and skip ahead to about the 12:20 mark and watch at least until 16:00. See if all that is setup correctly.

    Fred
     
  20. Jack Regan

    Jack Regan TrainBoard Member

    22
    12
    2
    Man, I owe you a big Thank You. The reply just answered so many questions. Th <1> let me know I'm communicating and all is well. I did find that it revealed Main Power and PROG Power were off. Clicked Power Control and that turned on the Main power but never saw anything for the PROG Power. I'll dig a little more into that. Seems like that would be a problem when programming. I did notice that I could click Tables and create a turnout roster there where as I was not able to from the turnout roster function. Anyway. 3 more steps forward.
     

Share This Page