Si quieres comunicar dos Arduinos de manera inalambrica usando modulos de radio frecuencia la librería Virtual Wire te ayudará enormemente a la hora establecer la comunicación.
Lo primero que necesitas es descargar la librería, puedes hacerlo desde nuestra sección de descargas e instalarla. Si no tienes claro como hacer esto ultimo puedes consultar nuestro tutorial Instalar librerías para Arduino.
Esta librería nos provee de una serie de funciones que nos serán muy útiles a la hora de crear nuestros proyectos:
Veamos un ejemplo de como usar esta librería:
![]() | ![]() |
| Receptor | Emisor |
|---|
Código del Arduino receptor.
#include <VirtualWire.h>
const int led_pin = 13;
const int transmit_pin = 12;
const int receive_pin = 11;
const int transmit_en_pin = 3;
void setup(){
delay(1000);
Serial.begin(9600);
Serial.println("setup");
// Initialise the IO and ISR
vw_set_tx_pin(transmit_pin);
vw_set_rx_pin(receive_pin);
vw_set_ptt_pin(transmit_en_pin);
vw_set_ptt_inverted(true);
vw_setup(2000); // Bits per sec
vw_rx_start(); // iniciamos la recepcion
pinMode(led_pin, OUTPUT);
}
void loop(){
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen)){
int i;
digitalWrite(led_pin, HIGH); // encendemos el led cuando recibimos
Serial.print("mensaje: ");
//bucle que muestra el contenido del array recibido
for (i = 0; i < buflen; i++){
Serial.print(buf[i],DEC);
Serial.print(' ');
}
Serial.println();
digitalWrite(led_pin, LOW);
}
}
Código del Arduino emisor.
#include <VirtualWire.h>
const int sensor = 6;
const int led_pin = 11;
const int transmit_pin = 12;
const int receive_pin = 2;
const int transmit_en_pin = 3;
void setup(){
// Initialise the IO and ISR
vw_set_tx_pin(transmit_pin);
vw_set_rx_pin(receive_pin);
vw_set_ptt_pin(transmit_en_pin);
vw_set_ptt_inverted(true); // Required for DR3100
vw_setup(2000); // Bits per sec
pinMode(led_pin, OUTPUT);
}
byte count = 1; //inicializamos el contador de envios
void loop(){
int msg[1] = {1,2,3,4,5,6}; //Creamos un array de numeros que enviaremos
msg[6] = count;//Colocamos el contador de envios en la posicion 6 del array
digitalWrite(led_pin, HIGH); // Encendemos el Led mientras transmitimos
vw_send((uint8_t *)msg, 7); //Enviamos el array
vw_wait_tx(); // Esperamosa a que el mensaje se envie
digitalWrite(led_pin, LOW); //Apagamos el led una vez el envio esta completo
delay(1000); //Esperamos antes de volver a emitir
count = count + 1; //sumamos uno al contador de envios
}