RF Wireless Tx & Rx Module 433Mhz


RF modules are widely used for wireless data transfers and remote control applications. These days, cost of RF modules are very low and are compact in size. Most of these RF modules are operating around 433MHz. Amplitude Shift Keying (ASK) or Frequency Shift Keying (FSK) are mainly used for wireless data transfers.

Technical parameters of the transmitter head

  • Product Model: MX-FS-03V
  • Launch distance :20-200 meters (different voltagedifferent results)
  • Operating voltage :3.5-12V
  • Dimensions: 19 * 19mm
  • Operating mode: AM
  • Transfer rate: 4KB / S
  • Transmitting power: 10mW
  • Transmitting frequency: 433M
  • Pinout from left → right: (DATA; VCC; GND)

Receiver module parameters:-

  • Operating mode: AM
  • Operating voltage: DC5V
  • Quiescent Current: 4mA
  • Receiver sensitivity:-105DB
  • Receivieng frequency: 433M
  • Size: 30 * 14 * 7mm

  here a circuit example for interfacing RF module using HT12E/D encoder decoder pair. The circuit attached here can be used to transfer data using the RF module. As I have explained earlier RF module mentioned here is having a single channel. So we can use only serial data transfers. This example uses HT12E/D encoder-decoder pair for converting the parallel data to serial and back.


If you are looking into wireless communication between two Arduino modules, this project might be helpful. It uses low costs RF transmitter and receiver from Electronics-DIY.com to establish radio link between two Arduino boards up to 500 ft. Data can be transferred serially at the maximum rate of 2400 bps. The schematic shows how receiver and transmitter is hooked up to two different Arduino boards. When wiring the receiver / transmitter you only need to give them power / ground and then a pin for the TX (serial transmit) or RX (serial receive) pin. I also wired a button to the Arduino doing the transmitting, and used the LED on pin 13 that is built into my Arduino boards on the receiver so I could test this setup. The test app just flashes LED on the receiving board when a button is pressed on the transmitting board.

I was looking for a way to handle wireless communications between two Arduino boards. Then I found inexpensive RF transmitter and receiver modules at Electronics-DIY.com. 

Here are some things to consider while using RF solution: 

- Communications is only one way. If you wanted two way communications you’d need to buy two receivers and two transmitters. 

- The variable gain on the receiver causes it to pick up lots of background noise. I had to do some processing with the Arduino to filter out this noise. More details about this below in the code section. 

- Bandwidth maxes out at 2400 bps, but there is a version with 4800 bps. A large portion of this bandwidth is used for network protocol I wrote that handles error detection. 

- Range is limited to a max of 500 feet. 

The advantages are that it is cheap and it is pretty easy to use. 


Since the receiver is constantly picking up random noise I add a few extra bytes to every data packet. I add two bytes to signify the start of a data packet. Then I send the a byte address. This address allows multiple devices to work in the same area without interfering with each other. Next is the data (in my example code it’s an unsigned int (2 bytes). Lastly I send a checksum which is a simple xor of all the data bytes to make sure the data got received without being corrupted. 

I broke the Arduino code into two files. If you’ve never used two files before with Arduino all you need to to is keep both files in the same directory and the Arduino IDE merges them for you. 

Code 1*
code 2 *

Kit include:

  • 1 x Receiver module parameters
    1 x Technical parameters of the transmitter head

Mikroelectron Code:

Here is the full code for the main application

code 1 *

// Used Arduino 0017

// This is a simple test app for cheap RF transmitter and receiver hardware.

// 433MHz RF Transmitter: http://electronics-diy.com/product_details.php?pid=250

// 433MHz RF Receiver:    http://electronics-diy.com/product_details.php?pid=251

//This says whether you are building the transmistor or reciever.

// Only one of these should be defined.


#define RECEIVER

// Arduino digital pins

#define BUTTON_PIN  2

#define LED_PIN     13

// Button hardware is setup so the button goes LOW when pressed



void setup() {


  pinMode(LED_PIN, OUTPUT);

  digitalWrite(LED_PIN, LOW);

  Serial.begin(1200);  // Hardware supports up to 2400, but 1200 gives longer range



void loop() {

  static int prev_button = BUTTON_NOT_PRESSED;  // Previous button press value

  int        cur_button;                        // Current button press value

  cur_button = digitalRead(BUTTON_PIN);

  if ((prev_button == BUTTON_NOT_PRESSED) && (cur_button == BUTTON_PRESSED))  {

    writeUInt(271); // Put any number you want to send here (71 is just a test)


  delay(50); // Debounce button

  prev_button = cur_button;




void loop() {

  boolean light_led = false;

  if (readUInt(true) == 271) // Check to see if we got the 71 test number


    light_led = true;


  if (light_led)


    digitalWrite(LED_PIN, HIGH);


    digitalWrite(LED_PIN, LOW);



#endif //RECEIVER

0.9 JD
2 JD
In stock

Related Products

subscribe to our weekly newsletter