Optimizing antennae for 433mhz transmitter/receivers?

Hello! I am trying to build a remote controller, and have a pair of 433mhz transmitter/receivers.

According to various guides I've found, I should be getting roughly 1m range without external antennae, but I couldn't get any response no matter what. So I tried to solder a pair of 17.3 cm 23awg (I figured I'd get a better signal with thicker wires, is this wrong?) wires to each unit, and now I am able to get a signal. However, they still have to be so close that they are practically touching, any tips on what I can improve?

Since everything is currently in the breadboarding stage, I haven't done anything fancy, just hooked it up and see if I can get things working. Could noise from the joystick connected to the same ground and 5v reference as the transmitter be the culprit? It's basically just a bunch of potentiometers though.
Or perhaps all the jumpers?

I'm also struggling with the message being garbled on the receivers end.
Also, do RF transmitters/receivers really need up to 2 seconds to fully receive even simple messages? Don't RC toys use RF with nearly instant response?

Any wire will work as an antenna, but it should be stiff enough that you can have it point straight up. All electrical connections to the modules should be cleanly soldered.

Receiver and transmitter antennas need to be parallel for best range, and that should be at least 20-30 meters for the cheapest modules.

Since NOTHING seems to be working at the moment, start over by using the VirtualWire library and just the simplest example that comes with it (receiver.pde and transmitter.pde, renamed to .ino), before adding anything else.

Hi,
Can you please post a copy of your circuit, in CAD or a picture of a hand drawn circuit in jpg, png?

Can you post a copy of your project so we can see your component layout?

Thanks.. Tom... :slight_smile:

There are a few reasons that this is so slow:
First, the bit rate is likely on the order of 1-2kbit/s - it's bloody slow.
Second, RF is unreliable, particularly this kind - so the message gets sent a bunch of times in succession, often 5 to 20, and of course needs a checksum to know when it got through.
Third, libraries will often send a "training burst" at the start of each packet - a period of 50% duty cycle to get the AGC to adjust itself appropriately. This adds overhead.

Automatic Gain Correction (AGC) - this makes it possible for dirt cheap receivers and cluttered radio spectrum to produce decent results - it continuously monitors the strength of the signal (or noise) received at 433MHz, and adjusts the gain and threshold to get approximately 50% duty cycle output. This is why, when transmitter is off or on continuously, they output random noise - they crank the gain up until the noise gives a 50% duty cycle, and why these libraries that look strange and bizzare under the hood are needed - the receiver needs to be able to recognize the signal and pick it out against a background of continuous gibberish. This is also why a training burst and repetition are used (sometimes the transmitter will just repeat the message more times).

Also, with most RC toys, you've got functions like "right" "left" "forward" "back" etc, that run for as long as the button is held down. The transmitter transmits the appropriate pattern continuously. I'm not sure most RF toys use the same sort of 433MHz/315MHz OOK modulation scheme with AGC that the cheap 433MHz RF stuff uses - I know most of them are on different frequencies. 433MHz is typical for car door remotes, garage door openers, doorbells, etc

That sort of mode, continuously transmitting a single pattern, would indeed get a much faster response (you'd need your own library though, VW does things that aren't appropriate for this use case) with 433/315MHz OOK modules too - the continuous transmitting keeps the AGC locked on, and since you're not repeating each message plus training burst a ton of times, you check the buttons (assuming a RC-toy type use case) between each copy of the message.

Finally, don't use those awful green receivers - the green ones with that little thing with visible coil in the middle which seem to be the most common online and which I suspect you're using. Put them straight in the trash. Not only is their range lousy, I've seen them get into a state where the range falls off to a few inches (after unplugging and letting them sit a while, they work again - it's wacky). Get the RXB12 receivers on ebay (or RXB14) - they are under $2 shipped, get way the hell better range, and work on 3.3v with barely any loss of range (compared to almost complete loss of range with the shitty green ones) - they use a superheterodyne topology based on the SYN470 or SYN480 receiver, instead of the primitive superregenerative receiver in the green ones. Excellent performance - they beat the other typical cheap ebay receivers, even the $7 ones.

The green transmitters that usually come with them are fine though. There isn't much difference between the common OOK transmitters. Not even 2:1 in my testing, vs like 20:1 between RXB12 and the green receivers.

DrAzzy:
Finally, don't use those awful green receivers - the green ones with that little thing with visible coil in the middle which seem to be the most common online and which I suspect you're using.

Welp! You hit the nail on the head there. I got some better ones on the way at least.

I was using the ones you suspected, and had just tried to add a pair of antennas made out of stiff aluminum to them, and I am lucky to get half a meter range, depending on if my hands are close and in certain positions.

But it appears that this standard perhaps isn't really suitable for my needs if I want near instant control? I am trying to build a RC robot, so quick response time is preferable.

I also have a pair of NRF24L01's, but my project is 5volt and has a 14v unregulated circuit as well (for the motors), and I was hoping to avoid having to tack on 3.3v as an afterthought. But as it grows, I see more and more sensors and transceivers are 3.3v rather than 5v. Do you think I should just bite the bullet and add 3.3v as well? Are 3.3v and 5v interchangeable as a high signal for a MPU running at 5v? Or will I have to do some work to get 3.3v modules to communicate with my project?

Graylord:
Are 3.3v and 5v interchangeable as a high signal for a MPU running at 5v?

Depends on the MCU - an Arduino with ATmega MCU will detect >3V as HIGH (actually >0.6Vcc). Other chips may need 0.7Vcc (see datasheet for details) to detect a HIGH which is 3.5V if Vcc=5V.

Or will I have to do some work to get 3.3v modules to communicate with my project?

Voltage dividers on the 3.3V inputs, so a 5V signal won't destroy it. Or if you use I2C add bidirectional level shifters.

Finally, don't use those awful green receivers

They work fine. DrAzzy has evidently had an unfortunate experience.

I get 300 meters line of sight range, using them with a balanced dipole antenna, as shown below. Connect one inner end to the antenna to ANT, the other to GND. 33 cm from tip to tip.

Could something on mine be bust? I'm not convinced I'm getting a good connection with my antennas then, I get 30cm maximum.

jremington:
They work fine. DrAzzy has evidently had an unfortunate experience.

I get 300 meters line of sight range, using them with a balanced dipole antenna, as shown below. Connect one inner end to the antenna to ANT, the other to GND. 33 cm from tip to tip.

One of the key issues with these receivers (and super regenerative receivers in general) is poor selectivity, that is, the ability to reject interference from radio frequency energy within a few MHz of the intended (433.92 MHz) frequency. As a result they may work perfectly well in one environment and not at all in another. Superheterodyne receivers (e.g. rx12b12) are much much better in this regard.

That said, antennas matter.

Antennas matter a great deal. Good ones add frequency selectivity. But I agree, for a slightly higher cost, the superheterodyne receivers have better performance.

Beware, though, on eBay some receivers that are advertised to be superheterodyne are not. This one is a superhet, this one is not.