Multiple Arduinos on same network

I'm attampting to control 10 Arduino UNOs with Etherner Shields by a central computer. I've attempted to use the CIAO app on my iphone (ideal solution), but that appears to have a problem where I can see the Arduinos, but loose commication to all but one.

Here is the outline of the project:

I am controlling a pnematic system to open gates. As the livestock pass a certain point, I need to open a gate to allow them to proceed forward. This is all done manually now, close rear gate, then open a forward gate, depending on where I need them to go.

The entire stock yard is covered with ethernet and wireless. That is what I want to use to communicate witht he Arduinos.

More about the problem I am having with CIAO. A discovery of the Bonjour service shows a device with mutiple IP's listed. I've tried the idea of changing ports for each Arduino, and ensured that they have different IP's and MAC address's. I have the idea that the name of the board is the conflict. For those that know Microsoft Windows it's like having 2 computers on the same network with the same name. ??Does Bonjour look at the broadcast name as well??

Any help or thoughts would be great.

KE7GKP: 1) Is there a "name of the board" that is the same? If so, can't you change it? 2) If you have wiring to send power to the gates, what about running Cat5 cable for hard-wired control? 3) Whether hard-wired (as suggested in #2 above) or wireless (like Xbee, et.al.) what about a single ethernet interface to a single Arduino which then sends out signals (wired or wirelessly) to the various gate controls. The additional advantage of the single control point is that you can more easily implement monitoring, lockouts and other interactive things.

1) The name that is constant and I've yet to figure out how to change is "Arduino" When I look at the DHCP logs it shows the IP leased to "Arduino", yet nowhere in the sketch can I find where that is comming from. 2) The gates are controlled by compressed air. The noise generated by this keeps the livestock moving. It's a great side effect. 3) The problem I have is that the seperation between gates. There is one gate that is 1500 yards away, too for for XBEE, Ethernet, but in range with our wireless setup (we have an IP camera there now.) They will be connected by a hybrid of wired and wireless (using wireless to ethernet bridges which are already in place)

As it stands right now, I have one unit in place and working, using CIAO on my iphone. Works great, but as soon as I add a second unit, it all falls apart.

I think Ethernet Shield's MACs should start with 90-A2-DA-x-x-x, assigned to:

GHEO SA
Via Soldini, 22
Chiasso  CH-6830
SWITZERLAND

I don't know where the 'Arduino' name could come from.

KE7GKP:

Now blocks of MAC addresses are leased to various vendors to ensure absolute uniqueness. But you claimed that you had changed the MAC addresses, also. Do you have a network engineer acquaintance who could help you?

Funny that you should ask: I am a Network Engineer, a Unix/Linux/Windows System Administrator and a knowledgeable programmer, though programming isn't something that I've done in quite some years. When I said that I changed the MAC's I set the MAC to the ones provided on the Ethernet Shield. I will set this back up in my lab and post some screen shots of what I am seeing... maybe that will help.

I'll get this posted in the next couple of hours.

As promised: As you can see above, each has a seperate MAC, and IP. You can also see what I am saying about the Active Host Name or Broadcast/ NetBios name of "arduino" for each board.

I hope this clears up what I am having issues with.

Any thoughts?

You're going to have to hit it with Wireshark to find out why the disconnection is occurring.

I found the issue. Like I was stating, it was a duplicate name in the network. I had to dig deep to find it in the .cpp files for Ethernet, DHCP and CIAO. If anyone wants to use multiple Arduinos on a broadcast domain, they WILL need to change the default names.

MercilessMike: I had to dig deep to find it in the .cpp files for Ethernet, DHCP and CIAO. If anyone wants to use multiple Arduinos on a broadcast domain, they WILL need to change the default names.

Where?

Do a grep in the files for Arduino? Seems like the easy thing to do.

Too many instances of the word Arduino. Do a regular expression search for define and arduino on the same line.

What I've found is the hostname in the 'Arduino 1.0-beta1' Ethernet library:

Dhcp.h:

define HOST_NAME "WIZnet"

So my router says:

Hostname   MAC Address       IP Address     Expires In
WIZnet     90:A2:DA:x:x:x    192.168.1.34   Expired

I guess you use a different library, MercilessMike.

Regardless as to which library you use, you can and will have issues with multiple devices with the same name, on the same broadcast network.

Of course.

But I was talking about searching for "Arduino" string in source code, obviously without result in the 'official' library.

I wonder if this product would work for you: www.swiftEnterprises.biz
It is a radio networking device made easy to connect! Disclaimer: I own the company.

Razorblade:

MercilessMike: I had to dig deep to find it in the .cpp files for Ethernet, DHCP and CIAO. If anyone wants to use multiple Arduinos on a broadcast domain, they WILL need to change the default names.

Where?

Thanks for using Ciao. I updated the Ciao documentation to explicitly state how to set the Arduino's hostname. In short, you use the three-argument variant of Ciao.begin(). Instead of a call like this:

Ciao.begin("TARGET 01", 5281);

make a call like this:

Ciao.begin("arduino1", "TARGET 01", 5281);

and the Arduino will show up on the network as arduino1. As you can see from the Ciao code, the library passes the hostname directly to EthernetBonjour, which is an amazing, magical library that announces the Arduino over Bonjour. EthernetBonjour helps make Ciao possible, so I made a conscious decision to generally get out if its way. I did that by exposing all of the power and functionality that Ciao uses from EthernetBonjour, including the setting the hostname.