testing 433 MHz reciever

i have one uno and 433MHz Wireless Modules MX-FS-03V & MX-05.


I have added library rc-switch, and up loaded ReceiveDemo_Simple (and subsequently Receive_Advanced). the receiver data pin is connected to digital pin#2 on the uno.

Using a homeeasy.eu remote and pressing buttons nothing is outputted to the serial monitor. I have soldiered on a 17.2mm antenna. and no matter how close or far i have the remote from the receiver no output.

I'm suspecting the receiver is DOA... Is there any way to test the receiver with only one uno board?

(tested the transmitter with the homeeasy library and can turn on/off homeeasy socket no prob using both 3.3v and 5v pin)

What makes you think that your handset and the receiver are compatable? As well as the exact frequency ( not just the band ) the modulation method and protocol must be the same. It sounds like a long shot to me.

I don't know the intricacies of RF at all, but had seen 433 MHz power sockets with rc-switch, Arduino or Raspberry Pi - Dobrica Pavlinušić's Weblog / Blog, and was following that, and have got stuck at part of receiving the signal from the 433 remote.

My end goal is to control homeEasy sockets using a Arduino or RPi...

but the purpose of this post was primarily to a find a way to test if the receiver is functioning with one uno.. I have found some methods using 2 unos, but none with one.

You can only test the recieve functionality if you have a compatable transmitter and can give it something to recieve. The Arduino can not generate such a signal no matter how many you have.
Can you post the some methods using two Arduinos?

You can do some really simple tests which may help to determine whether the receiver is completely dead, but
wont conclusively indicate its working properly.
A multimeter connected to the receivers data pin should read some arbitrary voltage between 0 and Vcc.
The voltage may wander around a bit.
This will test the receivers basically functionality.
Another test is to connect the transmitters data pin to its Vcc pin, and power it up.
Do the same test with the receiver, and it should now show a constant voltage on its data pin close to its Vcc.

The only real way to test the receiver is to use a dual channel CRO and feed data from an Arduino or any data source
into the transmitter and then check the receivers data line , which should show a very similar data waveform to what is being sent.
You cant test the receiver with just 1 Arduino.

Thanks for you help.. I have achieved my end goal of controlling homeEasy sockets via a rPi (which only needs the transmitter)

re testing receive and transmits via 433 MHz, using 2 arduinos.. I was led to believe the sketches in the following would do the job:- 433MHz Wireless Modules MX-FS-03V & MX-05 (HCMODU0007) - forum.hobbycomponents.com.

Yes, thats the most common method of using them.
The virtualwire library does all the hard work , so that the connection looks like a hardwired connection.

Hi, I have the same RF modules and appear to be having the same problem in that I can’t seem to get my receiver to work correctly.
I have the following code and my final goal is to receive a signal from an IR remote and use that to turn on/off my RF lights.
I can’t get any result to appear in the serial monitor when I press a button on the RF remote so it appears the if(vw_get_message…) condition isn’t being met.

If I connect an LED across the Vcc and Data pins on the receiver the LED lights and when I press a button on the RF remote the LED flashes as if it is registering something being collected although I don’t appear to be able to acknowledge this in code.
If I read the RX pin from the RF module and write that to the serial monitor then I get a constant stream of 0’s whether I am pressing a button or not.
Can anyone give any guidance whatsoever as to why this may not be working? I only want to be able to read the data being sent from the RF remote so I know what to then send using the RF transmitter, unforunately I don’t have an oscilloscope (or the funds to buy one) and don’t know of another way to see what the RF remote is sending.

#include <IRremote.h>
#include <VirtualWire.h>

// Buttons on IR remote assigned to control RF devices
long rf_devAOn = 12606576;     // RF Device A Power On
long rf_devAOff = 0;           // RF Device A Power Off
long rf_devBOn = 0;            // RF Device B Power On
long rf_devBOff = 0;           // RF Device B Power Off
long rf_AllOn = 0;             // All RF Devices On
long rf_AllOff = 0;            // All RF Devices Off

// Store RX'd codes and codes for TXing
long receivedCode_IR;          // Code received from the IR remote            
long receivedCode_RF;          // Code received from the RF remote
long transmitCode_IR;          // Code to be transmitted via IR
long transmitCode_RF;          // Code to be transmitted via RF

// For testing purposes only
long redCode = 12606573;       
long greenCode = 12606574;     
long yellowCode = 12606575;    
long stopCode = 12606527;      

int redPin = 11;
int greenPin = 10;
int yellowPin = 9;
int lastPin = 10;          //Arbitrary value to initialise
int RECV_PIN = 3;          //Receive IR signal on this pin
int RX_RF_PIN = 12;         //Receive RF Signal on this pin
int TX_RF_PIN = 8;         //Transmit RF signal on this pin

//Setup IR 
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup(){
  irrecv.enableIRIn(); // Start the receiver
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(yellowPin, OUTPUT);
  pinMode(TX_RF_PIN, OUTPUT);
  vw_set_tx_pin(TX_RF_PIN); //RF Transmit Pin configuration
  vw_set_rx_pin(RX_RF_PIN); //RF Receive Pin configuration
  vw_rx_start(); //Activate the receiver process. All pins must be configured before this.

void loop() {
  uint8_t buf[VW_MAX_MESSAGE_LEN];
  uint8_t buflen = VW_MAX_MESSAGE_LEN;
  //If there are code received on the RF receiver pin
  if(vw_get_message(buf, &buflen)) {
    Serial.println("Attempting to call receivedRF function");
  //If there are codes received on the IR receiver pin
    Serial.println("Attempting to call receivedIR function");
void receivedRF(){
    Serial.println("Successfully called receivedRF function");
    digitalWrite(redPin, HIGH);
    digitalWrite(greenPin, HIGH);
    digitalWrite(yellowPin, HIGH);
    Serial.print("Received: ");
   // for (i=0; i<buflen; i++){
   //    Serial.print(buf[i], HEX);
   //    Serial.print(' '); 
   // }
    digitalWrite(redPin, LOW);
    digitalWrite(greenPin, LOW);
    digitalWrite(yellowPin, LOW); 
void receivedIR(){
    Serial.println("Successfully called receivedIR function");
    receivedCode_IR = results.value;
    if(receivedCode_IR != rf_devAOn){
      digitalWrite(lastPin, LOW); //Turn off current light first if the last code isn't related to the RF work
    if(receivedCode_IR == redCode){      
      digitalWrite(redPin, HIGH);
      lastPin = redPin;
    if(receivedCode_IR == greenCode){      
      digitalWrite(greenPin, HIGH);
      lastPin = greenPin;
    if(receivedCode_IR == yellowCode){      
      digitalWrite(yellowPin, HIGH);
      lastPin = yellowPin;
    if(receivedCode_IR == rf_devAOn){      
      digitalWrite(TX_RF_PIN, HIGH);
      Serial.println("RF Testing Part 1 - This is the pin we will be transmitting RF on in future");
    if(receivedCode_IR == stopCode){      
      digitalWrite(lastPin, LOW);
      digitalWrite(TX_RF_PIN, LOW);
    irrecv.resume(); //Receive the next value