I have a preliminary throttle design started based on the DCC++ protocol, as well as an RS485 cab bus.
Are you using prebuild rs485 modules or designing your own interface? I'm trying to hook up one of the earlier mentioned RS485 modules to an Arduino but running into some difficulties. The idea is to connect a Multimaus throttle (using the Xpressnet protocol) and use that to control DCC++. I can exchange basic commands with the multimaus, but longer commands fail because there apparently is a constant stream of zeros coming from the serial interface that is hooked up to the RS485 module.
No, I am looking at a Texas Instruments part that will be integrated right onto the throttle PCB. Interfaced to the outside world through an RJ45 connector (NOT ETHERNET). Standard CAT5 jumper cables can be used for the connection to the buss network.
I finally managed to reliably hook up the RS485 module. It is all very slow going, as I'm new to Arduino, C++ and Rs485. However, I was able to connect a Roco Multimaus throttle using the library from Philipp Gahtow, which I addedd to DCC++. I tied a few XpressNet functions to DCC++ as a proof of concept and was able to switch track power on and off, toggle cab functions and drive a train. This would basically allow all XpressNet 3.x devices to operate a DCC++ basestation. However, as the number of XpressNet commands increased turning the speed knob, a number of commands were lost. Without having investigated further I suspect that having to deal with the DCC signal and XpressNet queries demands too much from the Arduino. It should basically be querying an XpressNet device every 80 microseconds I think. I will have to see if there is room for optimization. Perhaps the XpressNet server is better of on a seperate Arduino, which could be connected using the "master/slave protocol" that Gregg is working on.
If you are using the serial monitor (defaults to 115200), you may also want to reduce the speed at which this is operating (to 19200 ?) ... this may give back some "horsepower" to the processor.
I have been doing some throttle experiments over the last few days and have a working prototype of a Wireless Talking DCC++ Throttle. Wireless is via an Infrared TV Remote Control Talking refers to its ability to confirm commands verbally, a functionality that I find very efficient as you don't have to look at the unit's LCD screen to see what is going on. I have notes on the unit on my web page here: http://trainelectronics.com/DCC_Arduino/DCC++/IRThrottle/ and a YouTube video demonstration here: Please let me know what you think! dave
Too Fun... Dave's a man on a Mission. Don't forget the button for the automated announcements of the upcoming passenger station stops. Awesome project Dave! Well Done! Kevin
When I started working with the MP3 units I did use my own voice and rapidly grew tired of hearing it! I found that the Text to Speech capability of Windows gave a much more interesting flavor to the voice reports. dave
Dave, You continue to amaze me. (As do so many other of you working on Gregg's "invention"). Outstanding contribution! David U
Dave ..... fantastic! .... since I have a working infrared throttle based on your original design, would you consider giving some instruction on updating it to this system or do I have to construct a new throttle from scratch? Steve
Steve - I would recommend building up the new IR throttle from scratch - if you would like to simplify the task a bit I do have a number of the circuit boards that I used for my prototype - drop me an email (dave@davebodnar.com) if you would like me to send you one. I plan on spending more time on the web page soon to update things like a parts list and more specific instructions for modifying the board. dave
Jason I was wondering about the RS485 pinouts. Could we arrange the pinouts so that it was closer to two of the most common DCC wired throttles so that as we create Universal Bus RJ45, RJ12 input Board interfaces the wiring to the back board RJ485 bus would be more intuitive? Two examples I was thinking of are; XpressNet pinouts http://www.opendcc.de/info/xpressnet/xpressnet_e.html XpressnNet uses pin 3 RS485B and pin 4 RS485A Loconet pinouts http://www.trainweb.org/nrmrc/dcc/loconetandloconetcables.pdf XLocoNet uses pin 3 and pin 4 for data also Both use pin 2 for GND and Pin 1 and Pin 6 for Track Signal. I don't have either of them but they seem to be most prolific. I don't mean to make your job any harder believe me, just thinking for down the road. Thanks, Kevin P.S. By using pins 1-6 we could even use Very inexpensive Surplus RJ45 Cat 3 and Cat 5 cables for the throttles. Cat 5E & Cat 6 use eight wires.
Yeah, I have no problem with switching up pins. Nothing is set in stone at this point. I just looked at the pinouts and I think there is some confusion because I am spec'ing out an RJ45, which is eight contacts, where the others use RJ12, which is six contacts. No big deal, we just have to remember that RJ12 pin #1 is actually RJ45 pin #2 and so on. We can match these as close as possible. If you notice Loconet has it's signal on RJ12 pins #3 and #4. Since these are the center two contacts, we can match that by using contacts #4 and #5 of the RJ45 and maintain the center two contacts. That's the one nice thing about RJ modular connectors, they always self-center on the tang, adding contacts in pairs, moving outward. RJ11 has four contacts, RJ12 has six and RJ45 has eight. No problem here!
I have spent the last few days working on the Talking DCC++ Throttle. I spent much of the time modifying the software so that it can directly control two different DCC locomotives - since the variables are in an array this could easily be change to 3 or 4 or more locomotives. In addition I have added a point to point controller that can be used with a trolley or small engine. A pair or reed switches are used to sense the train's nearing the end of the line and signal the controller to stop, pause and reverse. I plan on experimenting with some other sensors. I put together a short video and have notes on the build on my web page here: http://trainelectronics.com/DCC_Arduino/DCC++/IRThrottle/ As always, I encourage you to share your thoughts and suggestions. dave
One "Up Vote" for using the common pinout. Tony's Train Exchange has a "universal throttle panel" that I would be inclined to use on my layout for wired throttles if they were compatible. That way I could swap out DCC++ for another system if conditions required, such as hosting an Ops session for some of my club members (we use NCE at the club and most of the guys have their own throttles).