connect multiple arduinos by rf

Hi,
I was wondering if it's possible to connect 3 adruinos to each other simultaneously?
every one of them has receiver & transmitter.
The issue is how to keep the order ?
I mean-I don't know when every one of them would send data via RF, but when one arduino send some data, all the others should get it.

I this RF works fine with Pro Mini & Nano?
http://cgi.ebay.com/433Mhz-RF-link-kit-Arduino-ARM-MCU-/280702807164?pt=LH_DefaultDomain_0&hash=item415b30ec7c

Thanks!!

If each Arduino has a transceiver, they should all be able to talk to each other.

You keep the chatter straight by using an appropriate protocol that contains the destination ID that the message is for. Each Arduino receives the message, and ignores it if it isn't for it.

Call the Arduinos Tom, Dick, and George. Tom sends a message with Dick in the string. George ignores it, but Dick acts on it.

Thank you for the answer,
I think the problem would be-what if 2 arduinos try to send a msg in the same time?
all the RF are in the same frq...

thakns again.

Well that is what multiple Xbees are all about, mesh networked with automatic resending if collisions occur.

Lefty

Ok, what about simple rf? like the link I've posted?
a simple 433Mhz RF kit, every arduino will connect to the receiver and the transmitter.

is there another way\method that I can make them talk to each other with minimum errors?
something like a simple algorithm that check if there is no signal and then send a msg, and while somebody transmit so all the others shouldn't ?

thank you!

You can make each Arduino continue to send its message until it got an acknowledgement that the message was received. That's how the XBees do it.

Of course, you must then acknowledge any message that is received that is for you.

ok than, thanks!

I found on EBay 3 different RF link kits:
433Mhz RF link kit for Arduino/ARM/MCU
http://cgi.ebay.com/433Mhz-RF-link-kit-Arduino-ARM-MCU-/280702807164?pt=LH_DefaultDomain_0&hash=item415b30ec7c

315MHz Superheterodyne RF Link kits 3310 for ARM / MCU
http://cgi.ebay.com/315MHz-Superheterodyne-RF-Link-kits-3310-ARM-MCU-/270706829294?pt=LH_DefaultDomain_0&hash=item3f076267ee

433MHz Superheterodyne RF Link kits 3400 for ARM / MCU
http://cgi.ebay.com/433MHz-Superheterodyne-RF-Link-kits-3400-ARM-MCU-/270763021855?pt=LH_DefaultDomain_0&hash=item3f0abbd61f

I don’t know what are the different ?
I want the arduinos to send a short messages to each other, radius about 100 meter, and low power consumer.

what do you suggest to choose ?
is there a different if i connect the RF to a “mini pro” or “nana” arduino?

Thanks again!
:slight_smile:

The 2nd and 3rd operate at different frequencies. Whether that makes a difference, or not, depends on what else is in YOUR area.

100 meters is asking a lot from those little, low-power radios.

according to this:

the radius is "up to 152.4 Meters". :~

so it doesn't matters what RF I take,all the same?
or maybe the expensive one has a better connection?

what do you mean YOUR area?
all the radio stations in my country are broadcasting at 88-108FM
so 315-433 seems to be fine.

thanks again!

the radius is "up to 152.4 Meters".

It's on the internet, so it must be true.

what do you mean YOUR area?

The 315 and 433 MHz bands are unregulated, so lots of things operate on those frequencies. Baby monitors (common), cordless phones (rarely anymore), etc. If you have any of these devices nearby, they can interfere.

the radius is "up to 152.4 Meters".

So if it only worked reliably to say 10 meters, it would still meet that specification. "Up to" is a marketing wimpy way of saying your mileage may vary.

I can't believe they list the decimal point value also. Does it mean it could never work at 152.5 meters? :smiley:

Lefty

152.4 meters = 500 feet.

PaulS:
152.4 meters = 500 feet.

So it won't work at 501 feet? :roll_eyes:

So it won't work at 501 feet?

Not even at 500.1.

PaulS:
You can make each Arduino continue to send its message until it got an acknowledgement that the message was received. That's how the XBees do it.

Of course, you must then acknowledge any message that is received that is for you.

If you take this approach, you will probably want to include a backoff. If they all start to transmit at the same time, no one will hear each other. If they just keep trying over and over, you'll be stuck forever. So each one should add more time between each try. Eventually the traffic (data) gets through and you don't have the problem. You need to figure out how much data you need to send and at what rate, and decide if you can sustain it.

I was thinking may be when 2 arduinos send a msg at the same time they would wait a randomly time before trying to send it again(let say 2-5 seconds), that will avoid sending the msg simultaneously forever like you've said.

ok, I've just ordered 2 arduino nano for it,
and now I really don't know which RF to choose.

the cheap one cost 5.5$ and the expensive cost 9.5$

I don't know what "superheterodyne" means... :~

what do you suggest?
:slight_smile:

The 315 and 433 MHz bands are unregulated, so lots of things operate on those frequencies. Baby monitors (common), cordless phones (rarely anymore), etc. If you have any of these devices nearby, they can interfere.

No, they are definitely regulated! All RF bandwidth is regulated worldwide. These ISM (Industrial/scientific/medical) bands can be used without a license so long as you use approved hardware and stick to the power and duty-cycle limits that apply to various parts of each band.

I don't know what "superheterodyne" means... smiley-confuse

Its a technique for high-quality radio signal generation and reception - it is far superior to (but more complex than) "direct conversion". You basically take your signal, modulate it onto a fixed intermediate frequency (IF) and then mix with a local oscillator to boost to the (variable) on-air frequency (or reverse this to receive). The trick is that its far easier to filter and amplify a signal at a fixed "intermediate" frequency (and particularly to filter out unwanted frequencies) than in a broadband circuit. All high performance radio systems are superheterodyne. For low power levels and local networks this kind of performance is less critical, so silicon radio chips for ISM are often direct conversion for simplicity. "Direct conversion" means the signal is directly modulated onto the final RF carrier generated by the local oscillator.

For more RF circuit design theory, I suggest google :wink:

Anyway back to the original posting - when connecting several nodes by radio (this is the original meaning of "networking", BTW) is it typical to use packet-based techniques, not continous radio links. The poster has kind of re-invented carrier-sense-multiple-access with collision detection (CSMA/CD) which is the essence of ethernet and most radio mesh networking. There was a very influential system in Hawaii called "Aloha" developed in 1970 that was the prototype for packet-based radio networks.

In the late 70's and 80's radio amateurs developed what they call "packet radio", a flexible set of packet-based radio network techniques - basically none of this technology is new, its just that the hardware is now cheap enough for it to become pervasive.

There's an interesting cheap ISM radio node based on Arduino-compatible hardware called the JeeNode - http://jeelabs.net/ which might be one of the cheapest ways to get into Arduino RF networks (but perhaps a steeper learning curve than the ZigBee based plug&play modules like the XBee.)

So each one should add more time between each try.

Add a random amount of time. If everyone talks at once, hears the confusion, and says "OK, I'll wait three seconds and try again", the result is exactly the same confusion.

Another technique is exponential backoff, where each device first waits say 10ms, then 100ms, then 1000ms...

Are they all set up to transmit & receive?
If so, prugram them to listen for the previous transmitter before they transmist.
So if 2 hears 1, then he knows to go.
If 3 hears 2,
if 4 hears 3,
if 1 hears 4.

If x does not hear, don't send.
If 1 does not hear 4 for a while, then start the sequence again.

Or 1 can restart when base unit tells it to restart.