Antenna for 315MHz RF

Hi. I'm working on a project which involves 8 slave devices communicating with a master device, using the small cheap RF eBay modules and the VirtualWire library. I have the 315MHz variant.

I have begun testing with two slaves and one master (each run by a separate Uno) and have it working in principle. The master is polling each of the slave devices, which then transmit a response if the received message matches their unique ID.

Leaving it running on my desk with the devices a few inches apart, I am experiencing about a 25% drop out rate (ie. either the slave wouldn't collect the message sent from the master or the master wouldn't read the response from a slave). This isn't a massive problem as I can compensate with my software. However, I figured by adding an antenna to each device I would increase reliability but found it to be much much worse (almost 100%drop out).

The antennas I made were 25cm lengths of single-core bell wire, coiled quite tightly (diameter about 4-5mm), all point upwards from the RF modules which are currently in breadboards. Interestingly, if I touch the TX antenna on the master with my finger, the receive rate on the slave increases to almost 100%

I'm finding conflicting information about how long these antennas should be - some say 32cm, some say 24-25cm, some 17cm on the RX and longer on the TX.

My intention is to ultimately house these inside a bunch of small wooden boxes, so any antenna I use will have to be compact. Also, the range doesn't really have to be any more than 10ft or so, with a clear line of sight.

Any advice greatly appreciated.

Use 23.8cm straight wires (1/4 wavelength) - as soon as you coil an antenna it will
change tuning and unless you have a VSWR meter there’s no way to get the tuning
correct. To transmit efficiently an antenna must be tuned (ie resonating).

An essential part of a quarter wave antenna like this is a flat ground plane at least 1/4
wave in radius.

Alternatively you can run a 23.8cm ground wire in the opposite direction from the antenna,
be sure to route all other wires at right angles to both antenna wires.

You may need to slightly adjust the wire lengths for the ultimate in efficiency, but that
again requires some measuring apparatus.

But your main issue is that you have the units far too close to each other, causing the
input section of the RX to overload. Separate them by a meter or so.

BTW 17cm is for 433MHz systems. 1/4 wave antenna length in m is 75 / freq (MHz)

Thanks, that's very helpful.

Bearing in mind they will always be placed in close proximity (this will become a multiplayer game played around a table), is using these devices without an antenna a better idea, or is that out of the question?

That seems like very poor range. Are you sure your drop out is hardware related and not software related, i.e. could it be your code missing incoming packets?

If it really is the hardware then you may find you only need a higher gain antenna on the master device, rather than all your slaves. That will give you better receive and transmit gain, without having to equip every device.

I use nRF24L01+ devices (2.4Ghz) and they get across the house with just the onboard trace antennas, and the wavelength is shorter. With just the base device with antenna, I get about 100ft range from devices with low power units and PCB trace antennas.

You could actually find that having them too close can be detrimental. Have you tried with them further apart. If a 1/4 wave (@ 315Mhz) is 23.8cm then you need around 4 inches for a single wavelength separation even.

I have faced the similar situation. In my case my TX module data sheet says, operating voltage range is 3 to 12 V. When I powered the TX module with 5V source, range was much less compared to attached to a 12 V source. Not sure its the same case with you?

By way of an update...

I removed all my home-brew antennas and separated the master unit from the slaves, so they're at least a couple of feet apart. The reliability has increased massively – I think I'm only losing about 10% of messages now, which I can easily deal with in software. I would never have thought of this myself, so thanks for that suggestion.

That gave me some fresh problems in the opposite direction (slaves broadcasting back to master) where no messages were getting through. This confused me at first, but eventually I realised the timing on the call and subsequent response is critical. I have changed my software so the master now polls a slave every 100ms, and each slave responds 50ms after it's received a message - this works very reliably.

I may try and speed this is up but worst case the status of all 8 slave units will be read and updated accordingly slightly more than once a second which is perfectly workable.

Glad the suggestions helped.

Another reason I use the nRF is that they have FIFO buffers and interrupt pin. It will receive into the input buffer and then you periodically check and read any packets, rather than have to have your sketch worry too much about the criticiality of timing for send and receive.