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.
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.
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 ?
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.
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?
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$
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
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.
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.