Geoff Bunza geoffb

The Java Model Railroad Interface (JMRI) is an elegant but sometimes complex application growing in popularity beyond its fantastic facility to ease DCC decoder setup. It is free, widely used, and readily available. It has capabilities to monitor trains and track to enable control and signal systems for virtually any model railroad layout. Among its basic control elements are turnouts, usually referring to a track switch or set of “points” but in its most elemental form, really refers to a binary switch. This article details the implementation of a JMRI data channel, which provides data from the JMRI Turnout Table in bulk, and incrementally as changes occur through operations. It gives the modeler more flexibility to connect (per channel) some 68 turnout entries to Arduino digital pins for about $7, and is fully operational with all the JMRI applications.  Multiple channels can operate simultaneously, and are not dependent on any DCC base station. This is not a tutorial on the intricacies of JMRI. It is an easy to build project where you can map lots of internal JMRI switches to real-world devices (LEDs, panel displays, motors, servos, etc., at a low cost. Version 1.1 is the current release. Article text updated October 8,2018.

This is also the companion “Output” data channel to SMA28 JMRI Sensor Channels – Direct Arduino to JMRI Communications  https://forum.mrhmag.com/post/sma28-jmri-sensor-channels-%E2%80%93-direct-arduino-to-jmri-communications-simple-support-for-lots-of-12210793 

Geoff Bunza's Blog Index: https://mrhmag.com/blog/geoff-bunza
More Scale Model Animation videos at: https://www.youtube.com/user/DrGeoffB
Home page: http://www.scalemodelanimation.com

Reply 1
Geoff Bunza geoffb

What This Is All About: Getting Lots of Bits Out of JMRI

JMRI is a free software application that runs on Windows, Linux or a MAC that can perform a multitude of functions. It makes programming complex DCC decoders much easier. It also is used for dispatching, signaling, switching, route control, train control, interfacing to WiFi controls and cell phone throttles, and more. Some of these applications need to throw switches – yes, track switches, but more than that too. They could turn on a light or motor or animation. It can couple a fast clock’s time to sequence town and building lights. It could turn on remote panel lamps to indicate train position or block occupancy. These pieces of data or information need to get “out” of JMRI to make them useful. This article describes a low cost mechanism to make this happen.

We are going to focus on the Turnout Table in JMRI because it usually represents two states per turnout  – Open and Thrown. We will take up to 68 table entries at a time and connect them to the 68 respective pins on an Arduino Mega2560. From there, you are on your own as far as this article goes. A quick survey of the literature or even MRH itself will lead you to a multitude of control and display possibilities for your imagination. It will also automatically initialize all the turnouts you have set up, upon connection to JMRI. The hardware connection can be made with most any off-the-shelf Arduino board (unmodified). The Arduino Mega2560 will support up to 68 turnouts, an Arduino Uno, Pro Mini, or Nano will support up to 18 outputs.

These will connect via any USB port, to your computer running JMRI. This will be the same USB serial port you use to load the Arduino board. I’ve written several times before about installing and loading Arduino software: in MRH December 2016, A modeler’s introduction to the Arduino http://mrhpub.com/2016-12-dec/online/ and here: in MRH March 2017, DCC projects using the Arduino  http://mrhpub.com/2017-03-mar/online/html5/

A script (Turnout_Table_Build.py)  is included that you can run in JMRI to set up most any size “Turnout Table” you need, with the appropriate naming convention for these channels. All JMRI scripts and Arduino sketches can be downloaded from here:  
http://mrhpub.com/files/users/geoffbfiles/JMRI_Channels_Rev2.zip

This is a companion article to this: SMA28 JMRI Sensor Channels – Direct Arduino to JMRI Communications - Simple Support for Lots of Detectors  https://forum.mrhmag.com/post/sma28-jmri-sensor-channels-%E2%80%93-direct-arduino-to-jmri-communications-simple-support-for-lots-of-12210793  describing an Arduino to JMRI input channel.

Build Details

This “Turnout Channel” is built with an Arduino Mega2560 controller and an optional Mega Sensor shield, for about $12-16 total depending on where you purchase them. Here is what I used:

MEGA 2560 R3 ATMEGA16U2 ATMEGA2560-16AU Board + USB Cable For Arduino https://www.ebay.com/itm/253733606559  11.95 (you can get a Chinese knock-off for $7)

MEGA2560 ATmega2560-16AU Sensor Shield V2.0 

https://www.ebay.com/itm/201004504826  2.56

The Arduino Mega2560 controller is loaded exactly like the other Aduino’s I described in the December 2016 issue of MRH A modeler’s introduction to the Arduino http://mrhpub.com/2016-12-dec/online/

With exactly the same free tools that can be downloaded here:  https://www.arduino.cc/en/Main/Software

The Mega shield board literally plugs into the top of the Mega2560 board, and has two screw terminals where you can connect a 5 Volt power supply to power the assembly.  The shield board makes attaching your devices easier. Each corresponding signal (S) pin is numbered on the board from 2-53, and then from A0-A15 (corresponding to sensors 54-69). Pins 0 and 1 are taken for USB communication. These will correspond directly to the turnout number in the JMRI table. Each numbered connection on the shield provides a group of 3 pins with the signal connection (S), a+5 Volt pin (V), and a ground (negative side connection G). You can connect to the pins with jumper wires already made of varying lengths available from many sources including Pololu.com and ebay.com that will slide onto these pins directly. With a little care, you can also solder connections too.

0jumpers.jpg 

Jumpers from Pololu.com

The Arduino Mega2560 will use all 68 pins as digital outputs. An Arduino UNO, a Pro Mini, and a Nano will have 18 pins available (Digital pins 2-13, and A0-A5 or Digital pins 14-19) for outputs. There are two different pre-configured sketches to load either a Mega or one of the smaller boards. Both sketches assume all pins are scanned as outputs and will match JMRI user-defined turnout names from AT2-AT69 or AT2-AT19 .  The AT designation is completely arbitrary, but if you want to change it you will have to edit the JMRI  TurnoutDataTransfer Python Script provided. When you download the Arduino sketch into your board, you must make note of the Serial Port on your computer used for communication between the Arduino IDE edior and your board. Your should always  plug your Arduino USB cable into the same USB port/socket, so you will get your operating system to assign the same USB port. If your switch computers, it is likely the USB port number will be different. This is important because you must make sure the JMRI TurnoutDataTransfer.py Python Script is edited (line 17:  portname = "COM5" with the correct COM port number.

Load the appropriate Arduino sketch onto your favorite board, attach a sensor shield if needed, and leave the board connected to your computer that you will run JMRI.

Setting Up The JMRI Turnout Table

You have some options for setting up your turnout table for data transfer to your Arduino. The JMRI transfer script that will communicate with your Arduino will look for a set of user names  in your turnout table set up as AT2 – AT69, or shorter if you like. So if you already have entries in your table already set up and you haven’t given them user names you can edit each entry and add these in sequence, like AT2, AT3, AT4, etc…  or you can use the included script in the zip file called:  Turnout_Table_Build.py which looks like this:

import jarray
import jmri
import java
import purejavacomm
 
# Define a turnout
def DataSet(sname, uname) :
    t = turnouts.newTurnout(sname, uname)
    t.setState(THROWN)
# Create a list of turnouts
first_turnout = 2
last_turnout  = 69
for x in range(first_turnout, last_turnout+1) :
    ssname = "IT"+str(x)
    uuname = "AT"+str(x)
    DataSet(ssname,uuname)

You can change first_turnout and last_turnout  to whatever range you would like. Remember the Arduino Mega2560 can handle 68 and the smaller ones can handle up to 18. Using the system name prefix IT will set these up as internally referenced turnouts (not a hardware address).  This script is easier to use than the internal sequenced add in the turnout table. After getting the entries correct, remember to save your panel by using Panels-> Save Panels… and name and save for later. You can set this file up to automatically load in the Preferences-> Startup menu.

Now locate where you unzipped the TurnoutDataTransfer.py file you edited with the correct COM port.

From the JMRI menu  go to Panels -> Run Script and find your up to date TurnoutDataTransfer.py file.   Run the script and you should see all your turnouts  go from “Unknown” to “Closed.” If you do not want the turnouts initialized at startup simply delete line 44 in the TurnoutDataTransfer.py   script:   turnout.setCommandedState(CLOSED)

Options in the Arduino Sketches

These comments (also in the Arduino sketches)  outline some more options for you:

The sketch is preconfigured for an Arduino Mega2560, pins 2-69, no inversion, no offset
Transmission is of the form "ATxxx.S where AT is the user name prefix from the JMRI turnout table
xxx is the number of the turnout (User name is built of the form AT123,
and "S" is the "State" of the turnout where Closed=0 and Thrown=1
Transmission is received from JMRI via TurnoutDataTransfer.py Python Script
It is assumed that the Arduino starts up before the Python Script
The script will set up listeners for all its turnouts and only update them when they change
The Arduino will update the appropriate pin, which can have an offset, and be o[ptionally inverted
The serial port assigned to this Arduino must correspond to the Serial Port in the corresponding TurnoutDataTransfer.py Script
#define Data_Pin_Max    70  // Max sensor pin NUMBER (plus one) Mega=70,UNO,Pro Mini,Nano=20
#define Data_Pin_Start   2  // Starting Sensor Pin number (usually 2 as 0/1 are TX/RX
#define Data_Pin_Offset  0  // This Offset will be ADDED to the value of each Turnout number to determine the Data pin
                            // number used by the Arduino, so pin AT12 will set pin 12+Data_Offset)
                            // This would allow one Arduino Turnout Data channel to use AT2-69 set pins 2-69 and another to
                            // use AT70-137 to set its pins 2-69 for example; this offset can also be negative
#define Data_Invert      0  // Set Data_Active_Low to 1 to invert incomin Turnout data Closed=1 Thrown=0
                            // Set Data_Active_Low to 0 to leave incoming data untouched Closed=0 Thrown=1

Last Comments

Do not get hung up with the term “Turnout” !! It is a throwback to early DCC days and terminology. Relative to this application it is simply a switch. BUT, with the power and connections internal to JMRI these can be linked to and controlled by many other things. So start by just thinking about them as a switch that, now, can reach outside of JMRI.

Those modelers that have some familiarity with Arduinos will quickly realize that if you can set a single output bit in an Arduino, then you can do far more than just turning it on and off. Consider the “pin capabilities” in the SMA20 decoders (SMA20 Low Cost 17 Channel DCC Decoders Ver 6.01 with Sound,Triggered Sound,Stepper,Dual Motor,LED and Servo Control  https://forum.mrhmag.com/post/sma20-low-cost-17-channel-dcc-decoders-ver-6-01-with-soundtriggered-soundstepperdual-motorled-and-12201920
it should be possible to burden the Mega2560 with a bit more work, like using the turnout bits to move servos and the like -- just one possibility.
 
It should also be noted, due to the elegance (yes elegance!) with which JMRI is built that you should also be able to extract info from other tables (like lights) in JMRI. Each output channel to one Arduino needs to be unique, but that should not be much of a limitation with USB hubs and USB serial ports. In order to run multiple sensor channels you will need to make each TurnoutDataTransfer script independent of each other. You will need to edit and copy each script for each COM port and change the following lines:
line 16:  global extportin                             # the name extportin must be unique for each com port
line 17:  portname = "COM8"                      # COMx MUST be the same as the corresponding Arduino Port
line 22:        port = extportin                        # same as above
line 23:   extportin = port                              # same as above
 
For some reason, I could not use exportin8, exportin9, etc. These had to be ending with an alphabetic character not a number, like exportina, exportinb, exportinc, ...
 
I am sure there are more possibilities yet to be invented.
I hope modelers can take this as a starting point to build some really great models and layouts.
Have fun!  [smile]
Best regards,
Geoff Bunza

Geoff Bunza's Blog Index: https://mrhmag.com/blog/geoff-bunza
More Scale Model Animation videos at: https://www.youtube.com/user/DrGeoffB
Home page: http://www.scalemodelanimation.com

Reply 0
mikedeverell

The Idea is starting to catch fire

Geoff,

    Looks as I can see this that will a little thought and some script we can get a lot of things do with the Arduino and JMRI. Get that data of the DCC bus freeing it up to run trains and using USB to send data to Arduinos. Two wires can only send so much data and with sound loco on the layout train control could use most of that. If we move layout contral to Ardurios and the USB our locomotive will be more responsive making running trains more enjoyable. 

It is a great time to be a model railroader!

Mike  

Mike Deverell

Colorado Front Range Railroad

https://www.youtube.com/channel/UCxQthaWz7aYFp_FIu5qqs4w

Reply 0
Michael.Barnes

Fascinated with Arduino

Geoff, I am fascinated with the Arduino stuff. I'd like to discuss applications to Garden Railroading. Could you perchance contact me at michael < at> wwgrr < dot> com?

Thank you so much,

Michael Barnes

Reply 0
nopxor

Great articles

hello Geoff,

Congratulations for your publications.

In SMA28, you use a Python script to close the COM port.
Should it also be used for SMA29?

I am French. Do you agree that I make a translation of these 2 articles in the French site http://www.locoduino.org?

Best regards.

Eric

Reply 0
Geoff Bunza geoffb

@Eric re: Questions

Bonjour Eric,

Quote:
In SMA28, you use a Python script to close the COM port. Should it also be used for SMA29?
No, The Turnout Python script works differently. It initializes all the Turnout switches and sets up a "Listener" for each Turnout in the table from AT2 through AT69 (this is the default setup) and then the script terminates, leaving the Listeners still active and running. You can see this my opening the "Thread Monitor" in JMRI, and notice that the script thread disappears in the Monitor after completing.
 
If you shut down JMRI, you will need to reset the Arduino before restarting JMRI again.
Quote:
I am French. Do you agree that I make a translation of these 2 articles in the French site http://www.locoduino.org
I would be honored for you to translate and post this on the French site. If there are any questions please forward them, if possible, in English here, and I will try to answer them.
Je serais honoré que vous traduisiez sur un site français. S'il y a des questions, je vais essayer d'y répondre. Mon français n'est généralement pas à la hauteur!
Amusez-vous! 
Cordialement
Geoff Bunza

Geoff Bunza's Blog Index: https://mrhmag.com/blog/geoff-bunza
More Scale Model Animation videos at: https://www.youtube.com/user/DrGeoffB
Home page: http://www.scalemodelanimation.com

Reply 1
nopxor

Thank you Geoff

Hi Geoff,
Thanks for the answer about the Python script.
Thank you very much for accepting the translation.
This will appeal to many modelers.

Reply 0
cp5170

Pecos turnout motors

I understand  that  I can connect a 5 volt power supply  but the Pecos motor  requires more voltage.  Is there  any  way  to use an Ardiuno  to control these motors.  My knowledge  of  Ardiuno  is very limited.  I have enjoyed  your blog enough  to start with  some  of  your  easier projects.  Once I  have  gained  some  knowledge  and  experience, I  am very interested  in your turntable  project.

Thanks  for sharing  your knowledge.

Ken

 

Reply 0
Logger01

Capacitve Discharge Units for Peco Motors

Ken,  First I am assuming that you are referring to the Peco PL series of Dual Coil or twin-coil turnout motors.

  

The typical approach to driving dual coil units is with Capacitve Discharge Units (CDUs). You can interface Arduino I/O pins to CDUs, but it will require two (2) pins to drive each CDU. You will also need an additional small power supply for the CDU drive voltage, and you will have a small bit of programming to do to control the motors.

You can build or purchase CDUs designed to drive dual coil units. Circuitron (who also manufactures the Tortoise machines) offers several several boards including the SNAPPER™, TC-1 AND TC-2 which can drive the Peco motors. CDU boards and decoders are also available from other manufacturers.

Ken K

gSkidder.GIF 

Reply 0
Geoff Bunza geoffb

@Ken (cp5170) re: Driving Peco turnout coils

Hi Ken,

An Arduino output pin does not have nearly enough current drive ability to control a Peco Turnout switch machine. You would need another circuit to provide the high, controlled current the Peco requires, that might be able to be controlled by an Arduino pin, which typically can only provide a limited (15-40 milliamps). In the most general case, this is what Ken K refers to as a "Capacitive Discharge" (CD) circuit. But any such CD circuit would need to be able to be controlled by an Arduino, which is an additional requirement. This is beyond the scope of this article. However, please have a look at Pelsea's: Control the World with Arduino  https://forum.mrhmag.com/post/control-the-world-with-arduino-12205507  He gives a solid tutorial on  driving higher current loads, and includes a turntable project, which you may have confused with some of my projects.

For some introductory Arduino projects take a look at: A modeler’s introduction to the Arduino in the December 2016 MRH here: http://mrhpub.com/2016-12-dec/online/  if you haven't discovered these already.
Have fun! 
Best regards,
Geoff Bunza

Geoff Bunza's Blog Index: https://mrhmag.com/blog/geoff-bunza
More Scale Model Animation videos at: https://www.youtube.com/user/DrGeoffB
Home page: http://www.scalemodelanimation.com

Reply 0
cp5170

sorry for the confusion

I  have  read all your  projects  on your  blog and enjoyed  them and thought  that  the  turntable  was one.  Sorry. I   have read every thread on Arduino  and am anxious  to  get  started.

I realized  that my question  was not within  the scope  of  the  article but appreciate  you taking  the  time  to  redirect  me.

I  shall  reread  the references that  you  provided.

Again  thanks  for  all  your  work.

Ken

Reply 0
diehard

Using this idea as a loconet or Xpressnet shield

Hello,

Can you please consider interfacing this shield and the other with a loconet or Xpressnet shield for a TCO or control panel instead of using JMRI. Is it possible to use the unused Bluetooth or  URF01 or SD Card interface to connect to the loconet or Xpressnet shield instead of the USB connection ?

 Or can you make this a sketch for a 1/2 input 1/2 output board ?

 

Reply 0
Geoff Bunza geoffb

@diehard re: Questions

Hi diehard (name?),
Quote:
Can you please consider interfacing this shield and the other with a loconet or Xpressnet shield for a TCO or control panel instead of using JMRI.
Loconet and Xpressnet do not have the equivalent tables, nor do they have the equivalent software interface to accomplish what this JMRI/Arduino serial inteface does. I don't know what a TCO is. Perhaps detailing your idea a bit more would help me understand what you are looking for?
Quote:
Is it possible to use the unused Bluetooth or  URF01 or SD Card interface to connect to the loconet or Xpressnet shield instead of the USB connection ?
I don't know of any handy Python nor Jython Bluetooth, URF01 nor SD Card interfaces which exist. What would you imagine to be at the other end of the Bluetooth or URF01 comms interfaces? What would be the reason for connecting a Loconet to an SD Card?
Quote:
Or can you make this a sketch for a 1/2 input 1/2 output board ?
I think I addressed this before. Possibly yes with a bunch more work, but I see no need to do this, given that the near equivalent could be done with 2 Adruino Pro Minis for less cost, and that my intent was to build a bulk data interface to JMRI.
 
Have fun! 
Best regards,
Geoff Bunza
 
 
 

Geoff Bunza's Blog Index: https://mrhmag.com/blog/geoff-bunza
More Scale Model Animation videos at: https://www.youtube.com/user/DrGeoffB
Home page: http://www.scalemodelanimation.com

Reply 0
jimrkonwinski

Signaling for a complex interlocking plant.

I would like to control signaling for an interlocking plant. Can this be done using the Tortoise SPDT at contacts 5,6 and 7 as input to an Arduino or would I need to use JMRI as well. This plant has 8 track switches and 15 +/- signal heads. I am using B&O signal heads but don't expect to use all the aspects the prototype does. The plan is for the tower operator to set the track switches and the signals would be automatic. Regards, Jim
Reply 0
Geoff Bunza geoffb

@Jim re: Interlocking Control

Hi Jim,

Is there a question you have?

Controlling interlocking, turnouts and signaling is a bit beyond this blog. You might want to start a new topic asking about interlocking and signaling, but I would also suggest you provide as detailed a diagram of what you want to control, what you already have on hand (like tortoise machines), what you want to use, and most important what you are trying to accomplish, with as much detail and explanation as possible. The statement you give above needs much more clarification.
'Hope this helps. Have fun! 
Best regards,
Geoff Bunza

Geoff Bunza's Blog Index: https://mrhmag.com/blog/geoff-bunza
More Scale Model Animation videos at: https://www.youtube.com/user/DrGeoffB
Home page: http://www.scalemodelanimation.com

Reply 0
PeterP

Arduino driving turnout sevos

Hello Geoff,

Followed the instructions in your article “getting lots of bits out of JMRI”, but I appear to have missed a lesson.

Using the Arduino sketch you provided, along with the python scripts, I have my JMRI turnout table talking to the Arduino Mega, and I can see the digital output pins go high as I throw the turnout.

However, this is ok for an LED application, but does not provide the PWM signal output needed to drive a servo.

Can to help me understand how I can have the turnout table driving PWM output on the Arduino please?

Many thanks from Canada

Peter

Reply 0
Geoff Bunza geoffb

@Peter re: Servo Control

Hi Peter,

Quote:
but does not provide the PWM signal output needed to drive a servo. Can to help me understand how I can have the turnout table driving PWM output on the Arduino please?
You did not miss anything. This article was never about anything but a bulk transfer of turnout data from JMRI.
To use the turnout data to drive Servos you need to set up the SoftwareServo library (the regular servo library has pin limitations) and then use the data received from JMRI to set the servo positions. Take a look at the servo motor sketches here:  A modeler’s introduction to the Arduino in the December 2016 issue of MRH here:  http://mrhpub.com/2016-12-dec/online/files/162.html
However, this will give you the outline to move the servos end to end. If you then want them to move slowly, you add another layer of complexity to time all the moves simultaneously. Dealing with the arbitrary timing problems, and arbitrary endpoints is dealt with in my DCC decoders controlling servos which may be a better solution for you. JMRI can also control Accessory decoders directly. You can find the decoder construction details here:  SMA20 Low Cost 17 Channel DCC Decoders Ver 6.01 with Sound,Triggered Sound,Stepper,Dual Motor,LED and Servo Control  https://forum.mrhmag.com/post/sma20-low-cost-17-channel-dcc-decoders-ver-6-01-with-soundtriggered-soundstepperdual-motorled-and-12201920
Have fun! 
Best regards,
Geoff Bunza

Geoff Bunza's Blog Index: https://mrhmag.com/blog/geoff-bunza
More Scale Model Animation videos at: https://www.youtube.com/user/DrGeoffB
Home page: http://www.scalemodelanimation.com

Reply 0
Don C

Connections to PC

Geoff,

I will have to use multiple Pro Minis to cover the 30 turnouts I have. Will I have to use a FTDI cable to each or will a standard USB cable work after they have been programmed?

Don

PS Just ordered an ATMega and Sensor Board in case I have issues hooking up multiple Pro minis.

Reply 0
Geoff Bunza geoffb

@Don rero Mini USB connections

Hi Don,
Quote:
I will have to use multiple Pro Minis to cover the 30 turnouts I have. Will I have to use a FTDI cable to each or will a standard USB cable work after they have been programmed?
If you use Pro Mini's, the standard USB connection is via the FTDI cable. I don't see another viable choice for the Pro Mini.
Have fun! 
Best regards,
Geoff Bunza

Geoff Bunza's Blog Index: https://mrhmag.com/blog/geoff-bunza
More Scale Model Animation videos at: https://www.youtube.com/user/DrGeoffB
Home page: http://www.scalemodelanimation.com

Reply 0
Don C

@Geoff

Thanks for the info.  I kinda figured that was the case.

Can you daisy chain the arduinos from a single USB port?  Is the sketch unique enough to allow the python script to talk to both chips and setup switches 1-15 and 16-30 or do I need to provide a USB connection to each arduino?

The computer has 4 usb ports on it, or I can use a hub.

Can this sketch talk from JMRI to the servos without DCC in the middle? I think I saw something along those lines (ie: using JMRI with Loconet Simulator setup).

Don

I apologize for the continued questioning of the setup. I think old age has something to do with it. If I go away from this for more than a few days I need to relearn it again mostly by going thru all of my questions and reviewing your answers.

Reply 0
Geoff Bunza geoffb

@Don re: Questions

Hi Don,

Quote:
Can you daisy chain the arduinos from a single USB port? 
No, each Arduino opens and controls its own port, not allowing daisy chaining.
Quote:
Is the sketch unique enough to allow the python script to talk to both chips and setup switches 1-15 and 16-30 or do I need to provide a USB connection to each arduino?
Again, each Arduino needs its own USB connection.
Quote:
Can this sketch talk from JMRI to the servos without DCC in the middle?
This is exactly what this sketch does. It is a bulk transfer from the JMRI turnout table to the Arduino. YThis sketch has no direct DCC implications or dependencies. You could change the sketch from setting an IO pin to controlling a servo, as I pointed out to you before, but that is another application. It would be the equivalent of merging the servo control defined in the Dec 2016 MRH article on Arduinos for Model Railroaders with the method defined here. This has nothing to do with the Loconet Simulator
"Hope this helps. Have fun!
Best regards,
Geoff Bunza

Geoff Bunza's Blog Index: https://mrhmag.com/blog/geoff-bunza
More Scale Model Animation videos at: https://www.youtube.com/user/DrGeoffB
Home page: http://www.scalemodelanimation.com

Reply 0
Don C

@Geoff

Thanks.  A stand alone system completely independent.  I like that.

This clears it up for me.  

Thanks again.

Don

Reply 0
Geoff Bunza geoffb

@Don

Hi Don,

That's great. Good luck with all your modeling projects.
Have fun! 
Best regards,
Geoff

Geoff Bunza's Blog Index: https://mrhmag.com/blog/geoff-bunza
More Scale Model Animation videos at: https://www.youtube.com/user/DrGeoffB
Home page: http://www.scalemodelanimation.com

Reply 0
gazza2577

   

gaz

Reply 0
kdpaq

WIFI

Arduino hardware working with JMRI controls would imply a network connection between the Arduino devices and the computer running the JMRI software.  Have you dabbled with WIFI connectivity for the Arduino Devices?

Reply 0
Reply