433MHz RF Communication

For this project I used two Arduino Duemilanove, a 433MHz RF kit, and six short wires to connect it together.

To send a message, I used this code

#include <VirtualWire.h>
#undef int
#undef abs
#undef double
#undef float
#undef round
void setup()
{
  // Initialise the IO and ISR
  vw_set_ptt_inverted(true);               // Required for RF Link module
  vw_setup(2000);                          // Bits per sec
  vw_set_tx_pin(3);                        // pin 3 is used as the transmit data out into the TX Link module, change this to suit your needs.
}

void loop()
{
  const char *msg = "RF is up";             // this is your message to send

  vw_send((uint8_t *)msg, strlen(msg));
  vw_wait_tx();                          // Wait for message to finish
  delay(200);
}

The sender is connected to digital pin 3, VIN (12V for better range), and GND.

To receive I used this code

#include <VirtualWire.h>
#undef int
#undef abs
#undef double
#undef float
#undef round

#define rxPin 2

void setup()
{
  Serial.begin(9600);

  // Initialise the IO and ISR
  vw_set_ptt_inverted(true);          // Required for RX Link Module
  vw_setup(2000);                     // Bits per sec
  vw_set_rx_pin(rxPin);               // We will be receiving on pin 2 ie the RX pin from the module connects to this pin.
  vw_rx_start();                      // Start the receiver
}

void loop()
{
  uint8_t buf[VW_MAX_MESSAGE_LEN];
  uint8_t buflen = VW_MAX_MESSAGE_LEN;

  if (vw_get_message(buf, &buflen))   // check to see if anything has been received
  {
    int i;
                                      // Message with a good checksum received.

    for (i = 0; i < buflen; i++)
    {
      Serial.print(buf[i]);          // the received data is stored in buffer
    }
    Serial.println("");
  }
}

The reciever is connected to the digital pin 2, +5V and GND

You will also need VirtualWire 1.3, download it here and unzip it to your library folder.
Download: VirtualWire 1.3

Leave a Reply