Arduino as solution for a live arts project?

I'm evaluating the Arduino vs NANO-ITX units vs Parallax systems to find a low-cost platform to develop a live arts framework around. My ultimate goal, in the case of Arduino, is to be able to have a PC communicate with 8 to 16 'artmotes' probably via XBee. I have an extensive software and database background, and am not afraid to get into the logic and programming, but I am unsure about the capabilities of the hardware.

Each of these 'artmotes' would be an arduino system with XBee and some other peripherals/shields. Each would need to be able to receive messages/broadcasts, and respond in a simple way (acknowledge receipt of message, etc) via XBee, and have the ability to manage more than one shield and processes: DMX, MIDI, Audio, stepper motors, etc.

So..there are two keys for my application: 1. That I can communicate/broadcast to a number of arduinos at one time, and 2. That each Arduino can handle the communications AND one or two other interfaces (ie: play a WAV file and flash an LED, OR, move two stepper motors and play a sound, OR, transmit some MIDI or DMX information to a port).

So, after reviewing this forum, and the Adafruit site (which has a lot of shields), I can see that the arduino platform can do a lot! But, can anyone tell me if more complex systems like what I've posed are possible?

Thanks in advance - JB

It depends on how much of the CPU time is consumed by each process.
There are a fair number of examples in the "Making Things Talk" book.
If each process is short you may be able to poll otherwise you may
need to write some interrupt routines. XBee + flashing LEDs shouldn't
be a problem (unless you need elaborate animations). Stepper motors shouldn't be a problem (unless you need complex control).

The ATmega168/328 that is on Arduino's only has one serial port. The MIDI
uses a serial port and the XBee wants a serial port. You could MUX the port
otherwise you will need to do a serial port emulation.

You could communicate to multiple XBees at the same time but you
may need to use the XBee API rather than the "transparent" mode that
is usually used.

I make an Arduino compatible board with an XBee. I have specs and some XBee software examples at Loading...

(* jcl *)


www: http://www.wiblocks.com
twitter: http://twitter.com/wiblocks
blog: http://luciani.org

Great information. Thanks.

Three follow-up questions:

Can the ZB1 arduino-compatible board use shields I read about on Arduino sites (ie: adafruit, arduino.cc, etc.)?

Does having the XBee as part of the main board free up the normal Arduino serial port for other uses?

Can the ZB1 be ordered assembled? It appears as though most providers of components, boards, and shields offer only kits, so I'm assuming that's the standard in the community.

JBW

You are welcome.

  1. All the ZB1 connections come out of a single header connector. You can mount
    boards in the same plane, parallel, in a backplane or with a ribbon cable. This I/O
    system is not compatible with Arduino shields.

  2. The XBee requires a serial port. You can do that in hardware or software.
    You can multiplex a single serial port between devices but communication
    is lost with the device you are not connected to. Sometimes this can work.
    For example if your device could operate in a synchronous query mode it could periodically send a command and get a reply. After the reply it could switch
    the serial port since no more communication is expected from the command
    device. I have added muxes to boards. I also make a board with an ATmega644P which has two UARTs, a RTC and a DAC. The XBee would be a peripheral to that board.

  3. All of my boards can be purchased assembled. On the site there should be pricing
    for assembled boards. If you don't see the prices send me an email and I will
    get you the pricing (and fix the site). I usually have a few boards in stock if not
    the lead time is one day.

I also do semi-custom and custom design work. If you would like to discuss
more details of your project please send me an email.

(* jcl *)

Thanks for the additional information.