Options for Remote I/O

I am looking for options to access between 1 and 6 remote I/O modules (box with 8 outputs for relays/pumps/motors/valves, 8 inputs for status, 1-3 meters from the arduino board). The first way would be run directly from the box with the arduino, but that would defeat a modular design and require 18+ wires. I'm thinking a comm bus between the arduino and the remote I/O module. What comm bus and board do you suggest?

P.S. This is a master-slave style layout, where the arduino is the master and the remote I/O modules are slaves and do not need to talk to each other.

I am not sure why you need an Arduino?

In my line of work I incorporate DIO and DAQ devices from companies like mccdaq.com and ni.com
These devices are connected directly to a PC.

can your remote modules be programmed?
what interfaces do they have? e.g. RS232, RS485, Canbus, I2C, ?

ieee488:
I am not sure why you need an Arduino?

In my line of work I incorporate DIO and DAQ devices from companies like mccdaq.com and ni.com
These devices are connected directly to a PC.

I don't have a PC anywhere nearby. I need some sort of controller to control the equipment (pumps/valves/etc.)

horace:
can your remote modules be programmed?
what interfaces do they have? e.g. RS232, RS485, Canbus, I2C, ?

I don't know either. They have not been selected yet. What are you thinking of?

you need to specify what the remotes do, e.g.

  1. can you use off the shelf devices or will you build you own?
  2. do you require local processing?
  3. will they have a local power source or supplied from a central source?
  4. how much data is being communicated per second/minute/hour/day?

what is the specification of the controller? e.g. TFT display, keypad, SD card, etc

if you are building your own remote devices depending on commnication requirements you may conisder

https://wiki.wemos.cc/products:d1:d1_mini_pro

look on ebay for low cost alternatives

horace:
you need to specify what the remotes do, e.g.

  1. can you use off the shelf devices or will you build you own?
  2. do you require local processing?
  3. will they have a local power source or supplied from a central source?
  4. how much data is being communicated per second/minute/hour/day?

That's listed in post #1. Allow me to rephrase. The remotes communicate the status of 8 inputs (limit and status switches) and control 8 outputs (combination of pumps and valves). All processing is centralized to provide modular design, power will be supplied from the central module housing the processor.

The processing module is designed using all local I/O and one remote module. I need to expand on this. Using and running wires to/from digital pins is not a feasible option (not enough pins, too many wires to run). I'm looking for an I/O expansion method that can handle a wire length of 1-3 meters. I have considered using arduino nanos but what is you suggestion for connecting 6 nanos to 1 UNO?

you could use nanos (they have sufficient digitial IO pins) and link them via a RS485 bus to the controller

an alternative could be 8bit IO extender such as
https://www.ebay.co.uk/itm/PCF8574T-PCF8574-I2C-8-Bit-IO-GPIO-Expander-Module-for-Arduino-Raspberry-Pi-AS/291996391714?hash=item43fc575922:m:mMrvA55VHit6WoS2NI99HXw

or 16bit
https://www.ebay.co.uk/itm/MCP23017-I2C-interface-16bit-I-O-Extension-Module-Pin-Board-IIC-to-GIPO-Convert/332516801967?hash=item4d6b8bbdaf:g:oAIAAOSwDkVaVwvM

both use the I2C bus - if you use good quality cable and reduce the I2C speed to 10KHz you should be OK
http://www.mosaic-industries.com/embedded-systems/sbc-single-board-computers/freescale-hcs12-9s12-c-language/instrument-control/i2c-bus-specifications

how much electrical noise is there in the environment ? this may cause problems with the I2C bus

horace:
how much electrical noise is there in the environment ? this may cause problems with the I2C bus

Along the cable there should be nothing. Any noise would be created at the module end with the pumps and valves.

How to get Arduino to speak RS-485?

for Arduino Rs485 have a look at
https://arduino-info.wikispaces.com/RS485-Modules

if you do use RS485 it is worth getting a USB-RS485 dongle for a PC so you can monitor the bus during development

there are plenty of RS485 relay boards but they seem to have limited inputs, e.g.
http://www.ontrak.net/adr2200.htm

horace:
there are plenty of RS485 relay boards but they seem to have limited inputs, e.g.
adr2200 rs232 / rs485 relay i/o interface

149USD :o

If I went the nano route, all the nano programs would be the same as the node addresses would differentiate the modules. That's a plus for that method. Unfortunately, the nanos can't drive the relays directly so that's a minus (requires nano plus relay board) The RS-485 board is way expensive, short 4 inputs, and has functionality I don't need.

RS-485 is an option. Any other ideas?

I agree the industrial quality RS485 boards are expensive - I looked for some low cost alternatives without sucess
what is the problem with the nano driving relays ? I have several projects using 5volt relays to operate valves, pumps, etc
make sure you power the relays from a seperate power supply

you could use I2C to communicate between the control and modules if you use good quality cable and low speed -I2C interface is built into the nano - however, programming is more complex than RS485 serial

canbus is another alternative but again requires additional hardware and programming is complex

The modules at Arduino Relay Tutorial - Control High Voltage Devices with Arduino do not power the relays directly. That really is not the direction I was heading. I was highlighting the two-board solution. Hoping someone has an idea for a single board solution. An inexpensive single board solution (the RS-485 board has almost all the features, but is also pricey).