hello, i been messing around with circuits for a few years now, but im still a noob at all the calculations and techniques.
i started a new project and its going to require rf communication. im working off of [this page.
basically i want to have 1 main module, this will house the rx board with a 40 pin pic and 18 solenoid valves. then there will be 6 additional modules that house 1 tx board and 3 buttons each (which correspond to 3 specified valves). i don’t want to build 6 separate systems so i was thinking i could buy [this, along with 5 more transmitter modules, and then program id’s for each transmitter? (im still learning c to program the pic so im not sure if this would work) [here is a link to the modified circuit im working on.
i was reading [here that there might be issues with running multiple transmitters in the same location. is my id approach valid? or would i still run into problems? its just going to be random on off control of the valves.
thank you for the help
seesoe](RF Link Transmitter - 434MHz - WRL-08946 - SparkFun Electronics)](ImageShack - Best place for all of your image hosting and image sharing needs)](http://www.robotshop.com/433mhz-transmitter-receiver-pair.html)](http://www.coolcircuit.com/project/rf_remote/)
simply arrange it so two transmitters rarely transmit simultaneously.
and have each transmit redundant messages at different times, as a crude form of error correction.
Otherwise, you can use transceivers with listen-before-transmitting, to reduce the chances.
Or put pairs of transmitters and receivers on different frequencies.
each of the six transmitters will be operated by different people when ever they feel like it.
seesoe:
each of the six transmitters will be operated by different people when ever they feel like it.
Then you’ll definitely have collision issues unless you do something to avoid them. What you can do depends on how much $$ you want to spend, how much range you need, what kind of RF inteference might there be, how reliable must the connection be and what response time you need. By the latter I mean what’s the longest acceptable time from remote button push to solenoid activation ?
The RF modules you linked to seem to be the [same as these @ SF. If so then all the transmitter does is transmit in pulses (RF on and RF off) depending on whether it’s getting a logic 1 or 0 at the input pin. Other RF from other sources (including other RF x-mitters of the same type) will all be “seen” by the receiver.
One simple way, to not avoid collisions, but to handle them is have each remote transmit a burst of transmissions when one of their buttons is pushed (I think this what stevech was referring to). Each remote has a different burst rate such that if any 2 or 3 remotes are active and interfering with each other, they will eventually become desynchronized so that a good, un-collided transmission occurs. It just may take a bit of time (? say a few tenths of a second ?) for that to happen. This kind of technique is used by the cheapo RF remote controlled planes you find for $30. It allows 2 or 3 to be flown together. They say it’s different “channels” but channel does not mean a different frequency in this case.
As an example each remote will have it’s own ID and transmit that plus the buttons pushed as some encoded RF stream. 6 remotes plus 3 buttons means at least 5 bits of data. Lets make a transmission be 8 bits, 1 byte. At 4800 bps, each transmission needs 1.666 msec. Let’s call it 2 msec. Let’s allow time (no RF) for 5 other such transmissions between each of these blocks of RF/data, so that’s 12 msec (2 msec of RF + 10 msec of dead air) between each block … for this remote. Another remote might have a period of 10 msec or 14 msec or XXX between RF blocks. You get the idea. Each burst will consist of 10 such blocks so that every time a button is pushed, the RF bursting lasts 120 msec, give or take, depending on the remote. If 2 or 3 remotes are activated simultaneously there will be times when their RF blocks overlap (collide) and times when they don’t because of the different timing between the blocks for each remote. The trick is then to detect collisions (invalid data) at the receiver end. So you’ll have to add some extra encoding bits (like a CRC) to each block and have the receiver check for validity before activating the “requested” solenoid. Perhaps have it mandate 2 (or more) valid blocks in time period T before activation.
Anyway it’s an idea to think about.
EDIT : BTW is there any desire to have the remote know that it’s command has been received and acted upon ? If so then there are other methods, to avoid collisions, that can make use of the back channel and receiver that each remote would then have to have. The already mentioned “listen before x-mit” is one and implementing a polling or synchronizing scheme is another.](RF Link Transmitter - 434MHz - WRL-08946 - SparkFun Electronics)