Friday, 27 December 2013

Golden rules when buying a RF receiver

RF receivers
I have played quite a bit with RF receivers I purchased from eBay (coming from china). The range you can expect to get from one of these depends highly from the model you purchase.

Although I am not equipped to scientifically test and explain my conclusions, the results of my experimentations led me to draw the following conclusions:
  • You need an antenna. If yours does not come with one, just solder a piece of wire. The wire length is going to depend on your frequency (google it)
  • You want a receiver with a crystal: those without (see picture, the two modules on the right) have none and have a terrible range (a 3 to 4 meters at most), I believe they calibrate their oscillations in the factory with a potentiometer variable inductor (red dot in the middle, thanks John RC for the correction), how can that be accurate?
  • Buy a shielded circuit if possible (bottom row, middle one on the picture), you are less likely to be disturbed by noise.
  • There are two types of RF receivers: 
    • The ones that send raw RF signal to the micro-controller (e.g. if you want to tap in a RF transmission), you will however have to decode the message by software. The ones pictured above are working like this. When searching for these, you can simply type RF OOK (ASK or FSK: amplitude or frequency modulation, more info here) as keywords which are different modulation techniques.
    • RF receivers that already convert the received signal into bytes ready to be used. This is much easier to implement but you need to use compatible receivers/transmitters if you want to transmit data (since there are many ways the data can be encoded/decoded). 
  • Pinout: most come with a four pin configuration VCC-SIGNAL-SIGNAL-GND which is handy as you can easily swap them (both signal pin are connected). The antenna is usally located somewhere else.
  • Output voltage... make sure it matches your micro-controller's. There are many models available and I would not want to bother with level converters for this. 
You usually get what you pay for... well in this case, it is not always so. You should however stay away from the models without crystal and with a potentiometer variable inductor.

You can here see the (green) potentiometer variable inductor
in the middle. Don't buy one like this !

7 comments:

  1. Interesting, I was just testing out one of these Chinese modules I ordered a few weeks ago. My question is in reference to your comment "covert to bytes".. I noticed when I'm sending data I get a solid digital signal but when the TX is off I get a lot of digital noise. Do any of the ASK devices you tested squelch themselves when they're not receiving?

    ReplyDelete
  2. From what I've read, this is typical. To compensate for the noise, you generally have to use an encode/decode scheme with error checking, message ACK/NAK, redundant transmissions, etc.

    See also: http://mchr3k.github.io/arduino-libs-manchester/
    and in particular: http://mchr3k-arduino.blogspot.com/2012/01/wireless-sensor-node-part-3.html

    ReplyDelete
    Replies
    1. Thanks for the tip. I started working that direction, thought it might have been worth the inquiry.

      Delete
  3. That looks more like a variable inductor than a potentiometer.

    ReplyDelete
  4. would a variable inductor be expected to be as accurate as a crystal, or is crystal still the better way to go

    ReplyDelete
  5. I've used a number of these modules. The recommendations in the article are pretty good. They are cheap and they *do* work but if you're expecting to just wire one up to your microcontroller's UART it won't work unless you've got a more expensive module which isn't taking the transmit line and using it to modulate the carrier.

    ReplyDelete