multiple 433.92 MHz RF transmitter/receiver sets

Has anyone tried to use multiple "sets" of these RF transmitter/receiver pairs?

Brief specs:
ASK modulation
4800 baud
transmitter +2-12VDC
receiver +5VDC

What I'm trying to do is this: I have five DIY arduinos, and I need all of them to communicate with each other through a wireless serial interface.

The test setup I have now is two identically-wired arduinos, each wired to a pair of the 4800 baud Sparkfun Rx/Tx transmitter/receiver modules through the Rx/Tx pins - a pretty straightforward connection. Here's a description of the test I have put together:

I rigged up a button to each Arduino so that when it is pressed, each Arduino will send out a serial string ("arduino").

LEDs are connected to two digital pins (9 and 13), and coded on the Arduinos for me to observe Rx and Tx activity.

The setup 'works' partially – the 'communication' occurs only on each Arduino, i.e. when the Tx pin pumps out the string (at 4800 baud), only the Rx receiver on the same Arduino receives it – the receiver module on the second Arduino does not. What I want is to have that Tx signal reach the second Arduino (and eventually all of the other four), all of which are wired in the exact same way as the first.

What is interesting, though, is that if I pull out the connection between the DATA pin on the transmitter module (on the second Arduino) and the Tx pin (also on the second Arduino), therefore cutting out the second Arduino's Tx ability, the first Arduino's Tx RF signal will actually reach the receiver module on the second Arduino. That is partially what I want, but that will mean that the communication will be more of a single-broadcaster/multiple-receiver model. I want each Arduino module to be able to both send and receive to every other Arduino. Tackling the serial protocol for the proper transmission will come in later, but I need to nail this hardware issue first.

I hope this description is sufficient enough for anyone out here who can point me in the right direction. Can a multiple-broadcaster/multiple-receiver model work with what I have? Is this even possible? Or am I going the wrong way?

Thanks for your help!

Those transmitters just switch between "on" and "off". I wonder if your transmitters are all on in their default state? Maybe the the transmitter can talk to its own receiver because the signal is so much stronger. Make sure you have the transmitter pins programmed as outputs and forced... um.. low I think is the off state.

A bit of a long shot, I believe those transmitter receiver pairs are hand tuned. They might be on slightly different frequencies. Swapping around the transmitter and receivers should tell you that. But from your test of severing the transmit connection on the second unit, I like the first hypothesis better.

I kinda doubt those transmitters are capable of much. I didn't see any parts to tune. Looks like they're meant for a single one-way pipe and that's it.

If you only needed two nodes in your network you could use a 433MHz pair and a 315MHz pair, with a 433 TX and 315 RX on one, and vice versa on the other.

If you could get them all on the same frequency, you could then work out some sort of CSMA scheme (and even add CD, if you're adventurous).

I'm betting something like this SparkFun Trace Antenna Transceiver - nRF2401A - WRL-00153 - SparkFun Electronics would be more likely to work. The data sheet talks about addressing schemes and so forth, so it looks like it's intended to build a network. Not as simple, but more capable.

-j

There weren't any tunable parts, although the older revisions of the modules had trimpot-like stubs to do that. In any case, tuning was not the issue, as I have tried shuffling and swapping the various transmitter and receiver modules with one another.

The whole setup works pretty well in this scenario: with only one transmitter/receiver pair module connected to one arduino, and the other arduinos attached with only the receiver module, every broadcast from the transmitter-equipped Arduino gets picked up by everyone, including the broadcasting Arduino.

The introduction of the transmitter modules into the other Arduinos will mess everything up, and I have also noticed that with multiple transmitters some receivers on the Arduinos will start to 'babble' - which is to be expected as the discussions on the sparkfun forums have reported on this issue with RF noise.

jims, what do you mean by forcing the transmitter pins low? Do I constantly send out a Serial.write("0") character on the Tx pin? I'm sorry if this sounds too silly, but this serial communication thing is new to me.

I too now have a sinking feeling that these modules are for a straight one-way pipe, kind of like the direct replacement of a pair of Rx/Tx wires. I have considered the use of different frequency pairs, but I do need 5 Arduinos to talk to each other, which means 25 (or perhaps 50 in both directions?) possible combinations in which they can reach one another. I guess I can always code a message relay system that will route the message from one Arduino to another but it will be a messy affair. Maybe this is the only way, but I'd appreciate any advice out here.

CRC checks are way over the edge for me at the moment, but I'm also interested as to how implementing it will help the situation.

Thanks for the link on the other RF module, I did a quick read on the datasheet and the module mentioned that it is capable of up to 2 channels of input, 8MHz from each other. I'm not too sure if it will work for me, but I'll do some reading/asking around in the sparkfun forums.

hi

have you considered Bluetooth or a mesh-networking radio technology?

To me it sounds like the problem you are having is that once two TX modules start up, the receiver sees them as the same transmitter. The TX modules you have can't differentiate themselves from other modules, nor can the receivers differentiate the transmission of one TX from another, so you are out of luck on using identical TX modules that transmit at the same time. Tuning is not likely to help a lot, unless you can tune the TX carrier frequency more than the IF of the receiver, to avoid the receiver detecting the difference in TX frequencies as an independent signal.

The whole idea of identical TX's on identical frequencies, with identical modulation techniques is just not going to work. Consider what would happen if two or three truckers all talked on the same CB radio channel at the same time: if you happened to be listening, you would hear a terrible jumble.

You might ocnsider the Arduino BT Module (and more specifically the Bluegiga module it uses), as it has the capacity to differentiate dozens of different transmitters and receivers.. although no one has written the tutorial or code for this yet.

D

I am considering using the XBee ZigBee-based modules – I have a couple ordered and on the way, but yes, I think I understand what you are saying about the Tx modules being unable to differentiate one from the other. That explains the crazy malfunctions the moment I pop another Tx module in.

When the XBee modules come in I'll hook them up (based on the Arduino Playground) and see if I can get this to work. The Arduino BT is out for me, as it is too expensive, and also I am making small-sized arduinos (they need to fit into containers slightly larger than the size of a pepper shaker). The mini's an option, but it's still cheaper to go the DIY way for now.

I'll keep this post updated as I go along.

Thanks for all of your feedback!

hi

the BT would work size-wise, as the BlueGiga module itself is about the size and thickness of the mini. The schematic should be around somewhere.

D

The whole idea of identical TX's on identical frequencies, with identical modulation techniques is just not going to work.

Wrong; there are lots of such networks. I operate on a ham radio network in just such a mode every time my vehicle starts. The original ethernet is a wire version of the same thing. Those characteristics simply must be taken into account when designing the network.

The advantage to using a smarter device (Nordic, Bluetooth, etc) is that the work of channel access, retries, etc has been done for you. The disadvantage is that they are more expensive.

I mentioned tuning so that all the modules could be on precisely the same frequency so that such a network could be built.

For US$5 difference, though, I'd go with the nordic instead of the cheapest device available. Bluetooth would probably work fine, but the price is obscene, IMO.

-j

Those modules should work. Anything a transmitter sends should arrive all all of the receivers. I've mentioned elsewhere, but I'll repeat here. The receivers babble in the absence of a transmission, so expect garbage when idle. It also helps to send a couple throwaway characters before the ones you care about to get the receiver gain adjusted.

I wonder if it is possible that some of those modules transmit a pattern even when sending zeros? (Mine don't, but maybe that's why they babble.) That would explain it working when you disconnected the second transmitter. You'd be very close to the minimum supply voltage, but you could drive the +5v line of the transmitter from an Arduino output and only power up the transmitter when you intended to transmit. You'd need to double check your part, but it looks like 20mA for the transmitter and 40mA from the Arduino. Give it a few milliseconds to settle down after you power it up and before transmitting.

I have tried manually disconnecting the +5V to the transmitters that are not supposed to be 'active', and that works, but reconnecting the power back to the transmitters will not bring them back to life again, and the Arduinos need to be reset in order to 'wake' the transmitters up. I have since given up on those as I'm running out of time and went with the XBee Zigbee modules, which work really good, and like kg4wsv mentioned they take care and maintain all of the connections.

Thanks for all of your input and feedback, it is very much appreciated!

@KG4

yes I know what you are saying about transmitters on the same frequency, but ... the reason transmitters on the same frequency work on something like 2 Meteres is not technical at all-- it's decorum! People know not to talk at the same time.
The technology suggested by the OP above does not have the chance to identify itself as such.

I forgot about the Nordic units, they are a great suggestion. I saw an artwork this summer that used a hundred or more of them at ISEA.

D

the reason transmitters on the same frequency work on something like 2 Meteres is not technical at all-- it's decorum!

For voice maybe, but not data. Data networks with many nodes operate on the same frequency without an operator listening for a clear channel. The radio (or TNC in the case of "software DCD") determines wether the channel is in use, and software protocols at higher network layers provide mechanisms for retries inthe case of collisions or other data corruption.

Go look at the original Aloha network - a bunch of transmitters sending blind on the same frequency and it worked well enough to be the basis for ethernet and packet radio.

The receivers in question may be so dumb as to make building such a network more difficult, but if all TX and TX units were on the same frequency it is very possible to create a network with them.

Having said all that, if you aren't looking for a reasonably serious communications project, you should probably pick a different device.

-j

Littlebannas, would you be able to post the details of the 433 rx tx code and a photo of the connections. I've had not luck getting the two devices to talk to each other using basic serial prints and reads.