Multi-arduino wireless personal midi controller network

greetings. 1st post jitters,

I am trying to find out if and how to create an arduino fio/xbee based wireless network of multiple fio/xbee's? 4 to be exact.

I am currently building a wireless system consisting of 2 "hand units", a wireless mouth interface and a base station xbee interfacing with pure data. www.beatjazz.blogspot.com. i already have the first fio/xbee communicating with the base station and pure data using pduino and all is perfect. this weekend i pick up the other 2 arduinos and fio's. all 3 arduinos need to connect with the pure data at the same time.

the instrument i am building is a wind midi controller except that instead of it being one horn like instrument, allthe left hand keys are in a wireless unit attached to the left hand and same goes for the right hand. the mouthpiece is worn like a headset microphone and is a pressure transducer for breath and a FSR for lip pressure. they must all work together as if one instrument. most of the coding has been done, andnow is time to split that code to the multiple wireless nodes.

it would seem that since all the xbee's have their own id's that that would translate over to the arduinos they are connected with and the whole network should come into the computer thru one serial port, which should solve that problem. I am wondering; how i might interface the 3 arduinos to pure data/pduino? theoretically, shouldnt i be able to name instances of the [arduino] object, say [arduino left], [arduino right], and [arduino mouth] so that each fio has its own instance? if so, how do i recognize the individual fio's and make use of their individual id's if that is the case at all?

Thank you in advance for any insight anyone might share.

Onyx

the in

sorry for the bump but i really need to discover the answer. i apologize if that breaks site etiquette.

I am wondering; how i might interface the 3 arduinos to pure data/pduino?

This isn't really an Arduino question. The question you are asking is "How can I make pure data/pduino read from multiple Arduinos". You'd probably have better luck on the Pure Data forum.

thank you for the reply,

i really want to know by what means arduino's inputs interpreted? is it using the ID's from the Xbees? i'm confused because allof these units are coming thru one base station and one serial port, so once they are all connected and sending data, is it the Xbee ID system that i use to parse where the data is coming from or something from the arduino or both?

thanks again,

Onyx

i really want to know by what means arduino's inputs interpreted? is it using the ID's from the Xbees? i'm confused because allof these units are coming thru one base station and one serial port, so once they are all connected and sending data, is it the Xbee ID system that i use to parse where the data is coming from or something from the arduino or both?

If you have each sender sending messages that contain the sender ID, the receiver Arduino/XBee can figure which device sent the request, and send something different to PD. Or, it can simply forward all the data to PD, and let PD figure it out.

if it forwards all data to pd, what would differentiate, for example, fio1-A01 from fio2-A01? is there a way to ID each fio so i can address it directly?

thanks for the reply, onyx

I cant be the first person to ask how to consolidate the data from multiple wireless arduino fio's. the boards seems to be made to do this.

I cant be the first person to ask how to consolidate the data from multiple wireless arduino fio's. the boards seems to be made to do this.

Maybe the problem is that it seems so obvious to everyone else how to do it.

The XBees in your setup are simply replacing wires. They are not adding anything to the data stream, or removing anything from the data stream. So, which XBee was used to send the data is completely irrelevant.

What you want to know is which Arduino generated the data that was sent. That is simple. Each Arduino prefaces the data that is sends with a different ID.

Each receiver reads the whole message, parses the ID, and determines if it needs to do anything, based on who sent the data.

Since you only have one Arduino implementing the receiver role, only one cares about where the data came from. Keep the IDs simple ('L', 'R', 'M').

I am definitely an extreme noob. I apologize if my question is overly obvious but how and where can is find and/or set this arduino id? What software will allow me to see a stream with this id in it? If I can find that, I should be able to create something in pure data that can make use of it.

Thank you for your reply. That does bring it one step closer to understandability.

Onyx

I apologize if my question is overly obvious but how and where can is find and/or set this arduino id?

The Arduino does not have a distinct ID. You must give it one. What this really means is that you must give it's serial output some uniqueness. Every serial packet sent must contain this unique identification.

Serial.print("Tom:"); // The unique ID
Serial.print("Value = ");
Serial.println(val);

What software will allow me to see a stream with this id in it?

Whatever software is reading the serial data can see the unique id ("Tom:" in the above example).

Of course, naming the Ardiunos Tom, Bob, and Samantha doesn't tell PureData anything about the data that it needs to know, whereas naming them L, R, and M might.

Thank you! That is exactly what I needed to know! I should be able to add that into the standard firmata 2.2 without breaking anything I hope. I will report back after I have tried. Thanks again.

Why is this the first I am hearing of this when these easily networkable fios have been out for over a year? I would think that there would be more info online about addressing multiple Arduinos by name simultaneously. Your reply is literally the first I've heard of this in 2 Weeks of solid googling. This helps alot.

Onyx