Q: How to avoid clash of multiple RF modules [315/433 Mhz]? I am working on a project which requires multiple RF working together (around 100). This will be one way communication from TX -> RX.
I will be setting up multiple cheap 433/315 Mhz in one particular area. How can I make sure that particular pair of RF doesn't clash/interfere with other pair. For every transmitter, there will receiver. No central receiver there.
I will add 8 bit Microcontroller on Transmitter side which will be connected to RF Transmitter and send data when required.
On receiver side I will add another micro controller to decode the packet and perform task accordingly.
I have read that upto 500 different channels can be selected which will avoid the interference, but couldn't find much info on that.
How can I solve the problem? Cost is a big factor or else I would have used HopeRF module in which network ID can be set and works with particular network.

A: 
How can I make sure that particular pair of RF doesn't clash/interfere
  with other pair.

Send as little data as possible in as short a time as possible and live with inevitable transmission clashes by making timing gaps between transmissions pseudo random. Else put a receiver with the transmitter and use a single-master to multiple-slave topology.

I have read that upto 500 different channels can be selected which
  will avoid the interference, but couldn't find much info on that.

Those modules you have selected are not capable of being reliably used with different carrier frequencies.
Will it work? It all boils down to how little data needs to be sent and how often you can live with corruption due to statistical clashes.

A: As this is quite an old thread, you may not be interested in an answer anymore, either you have resolved or abandoned the the problem. Anyway, I have a very similar problem, that's why I found this thread.
IMO the only solution to the interference problem is make sure that no single transmitter transmits at the same time as any other. As the 433MHz RF sensors all transmit an ASK modulated carrier on the same frequency, contemporaneous sending any data makes them unreadable. There are basically 2 ways to avoid jamming:


*

*have all tx synchronised to a central clock and each tx having a precise time slot when they can transmit. 

*a variation of this could consist in each tx unit having also an rx module and it will only transmit after the rx has been addressed with its individual address code. The central "clock" may be one central tx that sends sequential address codes to each of the tx-rx combinations in a certain rhythm. Once a tx-rx module receives its address code, it sends its data which will be received by all receivers but used only by the one that is paired with this particular tx. The central clock tx may also be paired with its own receiver which will also receive the acknowledgement transmission and thus knows that the receiving module has been addressed successfully. If this module does not reply at all, this shows that it may be missing or not have received the request correctly. The "clock" tx may then try again for a number of times and eventually mark this model as missing. The advantage of this system is that no module will ever jam any other. The disadvantage is that the complete cycle may be quite long, depending on the duration of each request-acknowledge-data transmission interval and the number of modules. If most of the modules have no data to send, this is quite a waste of time. This could be avoided with another variation of this idea:

*again, add an rx to each tx module. If this module wants to send data, it will first check if any other module is sending. If not, send a request addressing the central "clock" module. There is still the possibility that two or more modules make the same request at the same time, but these requests will not be readable due to the interference. If the central module receives an identifiable (not jammed) request from any module,it will send an "allowed" code to the requesting module (including the address and a certain data code). All modules will receive this string but only the one addressed will know that it may start to transmit now. All others have to wait a determined amount of time to make sure no one jams this transmission. Only when all modules see that this transmission has ended they may try and send their own allowance request.


This is just a possible solution but not necessarily a practical one as you need to ad a small processor like attiny85 and a rx to each tx module.

A: Problem can be solved by adding a flip-flop circuit to the water pump loop. Instead of sending a continuous signal (temporary mode) it would send one signal for switching pump on and on for switching pump off.

A: I am doing something like this now, actually.  And yes, I know this is an old thread, but for anyone else who stumbles upon it, this may be useful.

*

*Definitely get rid of the regenerative receivers that often come with those little ASK 433 MHz transmitters.  Get the superheterodyne type.  If you do a web search for 433 MHz superhet receiver, you'll find plenty of inexpensive ones that will work on a microcontroller.


*Other answers in here have suggested randomization and other schemes to make this work.  Here's what I did.  Have your transmitter code send every message at least 5 times, randomly spaced apart in time, and include an ID number in the message.  Both the receiver and transmitter code have to have a way to set this ID code that that particular pair.  I am using a rotary DIP with a resistor network that forms a voltage divider that the microcontroller reads on one of its ADC pins (I am using an Arduino).  Depending on the voltage, it knows what position on the DIP is selected and that's your ID number. You could do something as simple as just having a 2-resistor divider where you plug in a different resistor on each Tx and Rx board to get a different voltage for the ADC to sense.


*The receivers can now just ignore any messages that come in with the wrong ID, and since you are transmitting 5 times, randomly spaced, you have pretty good odds that the message will get through.  I don't know what your application is or how often you need to send messages, but it if is only occasionally, you could send the message 20 times or 50 times at random spacings, if you really want to make sure it gets through.
