How 433MHz RF Module Works & Interfacing With Arduino

If you're keen about Arduino you must also learn about RF modules. In this we will look over the 433Hz module and its interfacing with Arduino.

Introduction:

Wireless Communication in any form has become an essential part of human life whether it may be short distance T.V Remote or long-distance radio communication. Wireless communication is the wireless transmission of data without the use of wires or direct contact with the device itself.

One of the easiest and cheapest ways to implement wireless communication is using RF Module (Radio Frequency Module). In this blog, we will be seeing, how you can interface the 433MHz RF module with Arduino and transmit the data from one place and receive it at the other place wirelessly.

What is RF in Arduino?

RF stands for Radiofrequency. The Arduino can be made to communicate data with other microcontrollers via RF. This can be done by interfacing an RF module with an Arduino to send and receive data wirelessly.

What is RF 433MHz?

RF 433MHz is a pair of electronic RF transmitters and receiver modules used to send and receive radio signals between any two devices. The data is sent by the transmitter module from the transmitter end, and it is received by the receiver module at the receiver end. This RF signal will have a frequency of 433MHz.

Components required for interfacing 433MHz RF module with Arduino:

  1. Arduino UNO  -  2.
  2. 433MHz RF Transceiver module  -  1
  3. Breadboard  -  2
  4. LED (Any color)  -  1
  5. Push Button  -  1
  6. Male to male jumper cable  -  As required

How does the 433 MHz RF module work?

How does the 433 MHz RF module work

The block diagram above depicts the entire workflow of the RF Module. We'll look at how the RF transmitter and receiver module works in detail.

Transmitter working:

This radio frequency (RF) transmitter module operates at 434MHz and employs Amplitude Shift Keying (ASK). The transmitter module receives serial input from a microcontroller and transmits it via RF. The transmitted signals are then received by the receiver module, which is located at the opposite end of the transmission path.

RF 433MHz transmitter working

When the Arduino's DATA input pin is set to logic HIGH, the oscillator begins generating a constant RF output carrier wave at 434 MHz, and when the DATA is set to logic LOW, the oscillator stops producing the RF wave. Amplitude Shift Keying is the name given to this technique.

Receiver Working:

RF 433MHz Receiver working

The receiver module receives the data in the form of a signal and sends it to the data pin. The data received by the module is always encoded and can be decoded using either the microcontroller or the decoder.

The RF receiver module comprises an RF tuned circuit and a couple of Operational Amplifiers to amplify the received carrier wave from the transmitter. The amplified signal is then further fed to a PLL (Phase Lock Loop) later it is received by the decoder which decodes the output stream and gives better noise immunity.

What is ASK?

As previously stated, these modules use a technique known as Amplitude Shift Keying (ASK) to send data over radio frequency signals. The amplitude (i.e., the level) of the carrier wave (in our case, a 433MHz signal) is changed in response to the incoming data signal in Amplitude Shift Keying. This is similar to the analog technique of amplitude modulation, which you may be familiar with if you listen to AM radio. Because there are only two levels to consider, it is sometimes referred to as binary amplitude shift keying. Consider it a toggle switch.

  • For Digital 1 ‚Äď This drives the carrier at full strength.
  • For Digital 0 ‚Äď This cuts the carrier off completely.

This is what the Amplitude modulation looks like:

Interfacing 433Mhz RF Module with Arduino

The advantage of Amplitude Shift keying is that it is very simple to implement. The decoder circuitry is quite simple to design. Furthermore, ASK requires less bandwidth than other modulation techniques such as FSK (Frequency Shift Keying). This is one of the reasons for the low price.

Interfacing 433Mhz RF Module with Arduino

The components listed in the components required section are required for interfacing a 433MHz Rf Module with an Arduino.

The following is the Arduino UNO connection diagram for the transmitter and receiver modules

Transmitter module with Arduino UNO:

RF 433MHz Transmitter

The connection for the transmitter side has to be made as per the above diagram. You can use any Arduino board for this project.

VCC pin of the Transmitter module

5V pin of Arduino

GND pin of the Transmitter module

GND pin of Arduino 

DATA pin of the Transmitter module

GPIO 12 of Arduino 

Pin 1 of the push-button 

GPIO 6 fo Arduino 

Pin 2 of the push-button

GND pin of Arduino 

Receiver module with Arduino UNO:

RF 433MHz Receiver

The connection for the receiver side must be made as shown in the diagram above. For connecting the transmitter module, we will be using the second Arduino UNO board.

Both the VDD pins of the Receiver module

5V pin of Arduino

3 GND pins of the Receiver module

GND pin of Arduino 

DATA pin of the Receiver module

GPIO 11 of Arduino 

Positive terminal of LED via a 330-ohm resistor in series

GPIO 6 fo Arduino 

Negative pin of LED

GND pin of Arduino 

Source code for Transmitter module:

#include <VirtualWire.h>
#define button 6

char *data;
int val;
int value = 0;

void setup()
{
vw_set_tx_pin(12);
vw_setup(2000);
pinMode(button, INPUT_PULLUP);
}
void loop()
{
val = digitalRead(button);
if(val == LOW && value == 0)
{
data="a";
vw_send((uint8_t *)data, strlen(data));
vw_wait_tx();
delay(500);
value = 1;
}
else if(val == LOW && value == 1)
{
data="b";
vw_send((uint8_t *)data, strlen(data));
vw_wait_tx();
delay(500);
value = 0;
}
delay(200);
}
           

 

We used a library called VirtualWire.h in the preceding code. In this code, we call functions from the VirtualWire.h library, pass the PIN to which the transmitter module's DATA pin is connected, and send data from the transmitter to the receiver via RF signal. We have used an if, else statement in the code. We specified in this if, else statement that when the pushbutton is pressed for the first time, the character’s data must be transmitted to the receiver. When the button is pressed a second time, the character 'b' must be sent to the receiver.

Source code for Receiver module:


#include <VirtualWire.h>
#define ledPin 6

void setup()
{
vw_set_rx_pin(11);
vw_setup(2000);
pinMode(ledPin, OUTPUT);
vw_rx_start();
}
void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen))
{
if(buf[0]=='a')
{
digitalWrite(ledPin,HIGH);
}
else if(buf[0]=='b')
{
digitalWrite(ledPin,LOW);
}
}
}
           

 

The above code is used for receiver module. In the code, we have passed the pin number to which the DATA pin of the receiver is connected. And we have declared a pin for connecting LED. The if, else statement is used to check the condition of the received data. If the character ‚Äėa‚Äô data is received, then the LED will be turned ON. And when the character ‚Äėb‚Äô is received, then the LED will be turned OFF.

Procedure:

  1. Make connections as per the circuit diagram on the transmitter and the receiver side.
  2. Upload the respective code to both the Arduino boards. (Transmitter code on transmitter Arduino and Receiver code on receiver Arduino)
  3. Once the connections and the programming are done, it's time to see the output.
  4. Turn ON both the Arduino and place it a distance below 3 meters in indoors.
  5. Next, press the push-button on the transmitter side, the LED on the receiver side should turn ON. Again when you press the push button for the second time, the LED on the receiver side will be turned OFF.  
  6. Hence, we have successfully established a communication link between the transmitter and the receiver wirelessly through RF signals and transmit data from the transmitter to the receiver.

Conclusion:

In this blog, we have learned about RF technology and how to use the RF technology using Arduino and RF modules. We have seen, what is RF in Arduino? What is a 433MHz RF module? The working principle of RF modules, as well as the components required, connections, source code, and how to interface it with Arduino and wirelessly communicate data between transmitter and receiver.

Frequently Asked Questions

1. What is RF in Arduino?

RF in Arduino means, Interfacing of RF module with Arduino and enabling Arduino to communicate with other microcontrollers via RF signals. For doing this we will require an RF module such as a 433MHz RF transmitter and receiver module.

 

2. How do I know if an RF module is working?

TO check the RF module, make the connection as given in the connections section in the above blog, upload the source code to both the Arduino, and press the push button on the transmitter side. If the LED on the receiver side turns ON then your RF module is working fine.


 

Frequently Asked Questions

1. What is RF in Arduino?

RF in Arduino means, Interfacing of RF module with Arduino and enabling Arduino to communicate with other microcontrollers via RF signals. For doing this we will require an RF module such as a 433MHz RF transmitter and receiver module.

 

2. How do I know if an RF module is working?

TO check the RF module, make the connection as given in the connections section in the above blog, upload the source code to both the Arduino, and press the push button on the transmitter side. If the LED on the receiver side turns ON then your RF module is working fine.


 

Leave a comment

Please note, comments must be approved before they are published