I am new to arduino and electronics so please bear with me :)

I would like to build a 433 MHz receiver which output I would later feed to a RPi (that will be the easier part for me). I bought a set of receiver/transmitter branded XD-RF-5V and XD-FST. I found several pages explaining how to use them with an Arduiono (here and here for instance, the second link has pictures of the exact parts I have) -- they are very clear.

After doing the wiring I have some doubts about whether the receiver works: I put next to it a Oregon Scientific temperature sensor which emits on 433 MHz (THN128 model) and I have no readout ever.

What would be the simplest arduino code to check if the receiver works (actually receives signal)? I have wired DATA on the receiver to PIN 2 (in addition to GND and 5V)and so far have used the simplest code I could find (from rc-switch, Advanced Demo script):

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
  mySwitch.enableReceive(0);  // Receiver on inerrupt 0 => that is pin #2

void loop() {
  if (mySwitch.available()) {
    output(mySwitch.getReceivedValue(), mySwitch.getReceivedBitlength(), mySwitch.getReceivedDelay(), mySwitch.getReceivedRawdata(),mySwitch.getReceivedProtocol());

EDIT: Following up on a post describing a similar issue, I ran the following code which output noise (0 and 1) on the serial monitor. I am not sure this is a proof, though.

#include <VirtualWire.h>

void setup()
    Serial.begin(9600);          // Configure the serial connection to the computer
    vw_set_ptt_inverted(true);  // Required by the RF module
    vw_setup(2000);            // bps connection speed
    vw_set_rx_pin(2);         // Arduino pin to connect the receiver data pin
    vw_rx_start();           // Start the receiver

void loop()
  int val=0;
  val = digitalRead(2);
  • \$\begingroup\$ The pictures on the 2nd link are described as 315MHz parts not 433MHz parts. \$\endgroup\$ – Andy aka Feb 12 '14 at 12:54
  • \$\begingroup\$ @Andyaka: yes, but if you click on the description on the same page (the link which says FS1000) the frequencies are stated as Working frequency: 315MHz~433.92MHz (Special frequency can be customized). It also says 433 MHz on the board. \$\endgroup\$ – WoJ Feb 12 '14 at 14:38

Redirect input of RF module to LED. The LED will blink randomly or turn on with RF noise.

void loop() { int val=0; val = digitalRead(2); digitalWrite(led, val); }

  • \$\begingroup\$ Isn't it what I already get on the serial port (see my edit)? I get a random string of 0s and 1s. Is this evidence that the sensor is working? (even if it does not sense anything? Sorry if the question is obvious but I avoided electronics at school (and now I regret that :)) \$\endgroup\$ – WoJ Feb 12 '14 at 18:26
  • \$\begingroup\$ Yes! This is evidence that the sensor is working and arduino gets random bits from the "ether". \$\endgroup\$ – user19978 Mar 26 '14 at 22:12

I see this is 2 years old, but...

You young folks do forget your ears. The output of the receiver is an analog Audio output (definitely limited to something like 4 kHz.) There your ears are sensitive! Take a headphone, look for a high-ohm one (the impendance), but still add a series resistor of some kohms, and connect that to the receiver output (between GND and OUTPUT).

And then listen. Without Transmitting signal you should hear random noise, With transmitter ... the transmitted signal, whatever it is like.

Good luck!

  • \$\begingroup\$ Just add a piezo to the data output and can hear the noise! Great tip. Now I know it is working (but something else is still wrong). \$\endgroup\$ – Codebeat Nov 30 '17 at 9:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.