Haga clic para más productos.
No se encontraron productos.

Comunicación Inalámbrica con módulos de RF de 433Mhz

324412

En este tutorial vamos a realizar una comunicación inalámbrica entre dos Arduino usando módulos de radiofrecuencia de bajo costo.

Los módulos RF de 433Mhz son muy populares por su bajo costo y fácil uso. Vienen en pareja, emisor (FS1000A) y receptor (XY-MK-5V), el tipo de comunicación es simplex, es decir en un solo canal y unidireccional, son de baja velocidad de transmisión pero para  aplicaciones básicas son muy útiles.

 Módulo RF 433MHz TX y RX

 

La frecuencia de trabajo es de 433MHz, debido a que es una banda de libre uso. Para utilizar estos módulos basta con alimentarlos y conectar el pin de datos por un lado del Transmisor (TX) y en otro el Receptor (RX). Para la programación no es necesario agregar ningún tipo de librería, ya que es un proceso "transparente", por lo que el programa sería igual a usar una comunicación serial (UART) entre 2 MCUs , sin embargo existen algunas librerías que nos ofrecen ciertas ventajas como: verificación de errores, mejor transmisión, Direccionamiento, Enrutamiento, mallas, etc.

Antena para módulos de 433Mhz

La antena tiene una gran influencia sobre todo en el módulo receptor, por lo que se recomienda conectar un cable de cobre de unos 17cm de largo para alcanzar la frecuencia de 433MHz.Tambien son muy comunes y eficientes antenas helicoidales de 5mm de diámetro y 3.4cm de longitud. La posición de la antena también afecta la recepción de datos.

medidas de antena modulo RF 433Mz

Para este tutorial se está usando antenas helicoidales.

Antena elicoidal

 

Comunicación Serial con módulos RF

Para este tipo de comunicación solo basta con conectar el módulo RF al  Pin RX o TX del Arduino dependiendo si es transmisor y receptor.

Para este ejemplo usaremos un Arduino el cual transmitirá seriamente información a través del RF transmisor, el módulo receptor está conectado a un conversor USB serial (Puedes usar otro Arduino en lugar del conversor) y visualizaremos los datos des de la pc.

La conexión es la siguiente:

Conexiones del emisor:

Conexion RF emisor Serial

Conexiones del receptor

 Conexion receptor rf conversor usb serialCon respecto al programa se trabaja como si se tratase de una comunicación serial (UART) normal, con el inconveniente que no existe validación o seguridad para saber si los datos son transmitidos correctamente. Pero se puede usar para visualizar mensajes o datos que sean redundantes o que no sean necesarios validar.

Para lograr  una mejor transferencia se recomienda usar velocidades de 1200 o 2400 baudios o inferiores.

A continuación se muestra un código de ejemplo para testear nuestros módulos.

 

void setup() {
   // Inicializamos la comunicación serial a 2400 baudios
  Serial.begin(2400);

}

void loop() {
  Serial.print("Hola mundo ... ");
  Serial.print(millis()); // enviamos  los ms transcurridos
  Serial.println("ms");
  delay(10);    
}

Para visualizar los datos recibidos, en herramientas cambiamos al puerto COM al del conversor,  abrimos el Monitor serial y cambiamos la velocidad a 2400 baudios, debemos recibir los datos como se muestra en la siguiente imagen

 comunicacion serial RF

  

Existen varios métodos para validar información, una de las más fácil de implementar es en enviar el mismo dato varias veces, por ejemplo 3 veces y en el receptor se debe validar verificando que se reciba 3 veces el mismo dato. Otros métodos son la paridad, agregar tramas de validación, sumar los bytes trasmitidos, etc.

 

Comunicación inalámbrica RF entre Arduinos usando librerías

Una de las librería más comunes y eficientes es VirtualWire desarrollada por Mike McCauley, con esta librería vamos a trabajar los próximos ejemplos del tutorial

Necesitamos descargar la librera VirtualWire e importarla a nuestro IDE Arduino.

A continuación explicamos  las funciones principales  de la librería:

void vw_setup(uint16_t speed)

Inicializar el software VirtualWire, como parámetro hay que indicarle la velocidad de operación, que representa los bits por segundo para la transmisión RF

void vw_set_tx_pin(uint8_t pin)

Estable el pin IO digital por donde se va a transmitir los datos

void vw_set_rx_pin(uint8_t pin)

Estable el pin digital IO por donde se va a recibir datos.               

void vw_rx_start()

Empieza a escuchar los datos provenientes por el pin_rx, es necesario llamar a esta función para poder recibir los datos

uint8_t vw_send(uint8_t * buf,uint8_t len )

Enviar un mensaje con la longitud dada. La función termina rápido pero mensaje será enviado en el momento adecuado establecido por las interrupciones.  Dónde: buf , es el puntero al vector para trasmitir. Y len es el número de bytes a transmitir

void vw_wait_tx()

Hace una pausa hasta que se trasmitan todos los datos.

uint8_t vw_get_message(uint8_t * buf, uint8_t * len )             

Si un mensaje está disponible (con buena suma de comprobación o no), almacena el mensaje en buf , devuelve true si la comprobación es correcta. buf es puntero a la ubicación para guardar los datos de lectura y leng es un puntero a la cantidad de bytes disponibles de buf.

Conexiones entre el modulo RF y Arduino.

Antes de empezar a programar necesitamos hacer las siguientes conexiones:

Conexiones del Emisor:

Conexion RF emisor y arduino

 

Conexiones del receptor:

 

Conexion RF receptor y Arduino

 

Ej.1 Encender y apagar una Led de forma inalámbrica:

En este ejemplo se encenderá un led conectado al pin 13 del Arduino, para apagar y prender se lo hará de forma remota desde otro Arduino, para enviar la orden lo haremos desde la PC pero se lo puede hacer a través de un pulsador.

El código del Emisor es el siguiente: 

#include <VirtualWire.h>

void setup()
{
    Serial.begin(9600);	  
    Serial.println("Emisor RF");

    // Se inicializa el RF
    vw_setup(2000); // velocidad: Bits per segundo
    vw_set_tx_pin(2); //Pin 2 como salida para el RF 
}

void loop()
{

    
    while (Serial.available() > 0) 
    {
      char dato[1];
      dato[0] = Serial.read();
      //Enviamos el carácter recibido al RF
      vw_send((uint8_t*)dato,sizeof(dato));
      vw_wait_tx();         
    }
    delay(200);
}

Como se observa el programa envía inalámbricamente el dato que recibe por el puerto serie.

EL código del receptor se muestra a continuación:

#include <VirtualWire.h>

void setup()
{
    Serial.begin(9600);	// Debugging only
    Serial.println("setup");

    // Se inicializa el RF
    vw_setup(2000);	 // velocidad: Bits per segundo
    vw_set_rx_pin(2);  //Pin 2 como entrada del RF
    vw_rx_start();       // Se inicia como receptor
    
    pinMode(13, OUTPUT);    //Configuramos el pin del Led como entrada
    digitalWrite(13, false);
}

void loop()
{
    uint8_t dato;
    uint8_t datoleng=1;
    //verificamos si hay un dato valido en el RF
    if (vw_get_message(&dato,&datoleng))
    {
        if((char)dato=='a')
        {
            digitalWrite(13, true); //Encendemos el Led
        }
        else if((char)dato=='b')
        {
            digitalWrite(13, false); //Apagamos el Led
        }            
    }
}

Para encender el led es necesario abrir el monitor serial del trasmisor y enviar una “a” o “b” para encender o apagar el Led respectivamente

  

Ej.2 Enviando Mensajes Entre módulos RF

En este ejemplo un Arduino envía una mensaje  “Hola mundo” hacia otro Arduino receptor, para visualizar el mensaje recibido usaremos el monitor serial.

Código del Emisor:

 

#include <VirtualWire.h>

void setup()
{
    Serial.begin(9600);	
    Serial.println("Emisor: Setup");

    // Se inicializa el RF
    vw_setup(2000);	// velocidad: Bits per segundo
    vw_set_tx_pin(2); //Pin 2 como salida para el RF 
}

void loop()
{
    const char *msg = "Hola mundo";

    digitalWrite(13, true); // Parpadeamos  el led al enviar 
    vw_send((uint8_t *)msg, strlen(msg));
    vw_wait_tx(); //Esperamos hasta que el mensaje se envie
    digitalWrite(13, false);
    delay(200);
}

  

Código del receptor:

#include <VirtualWire.h>

void setup()
{
    Serial.begin(9600);	// Debugging only
    Serial.println("Emisor: Setup");

    // Se inicializa el RF
    vw_setup(2000);	 // velocidad: Bits per segundo
    vw_set_rx_pin(2);    //Pin 2 como entrada del RF
    vw_rx_start();       // Se inicia como receptor
}

void loop()
{
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;
    //verificamos si hay un dato valido en el RF
    if (vw_get_message(buf, &buflen)) 
    {
	int i;

        digitalWrite(13, true); // Parpadeamos  el led al recibir
	//verificamos si hay un dato valido en el RF
	Serial.print("Mensaje: ");
	
	for (i = 0; i < buflen; i++)
	{
	    Serial.print((char)buf[i]);
	}
	Serial.println("");
        digitalWrite(13, false);
    }
}

Para visualizar los datos es necesario abrir el monitor serial del receptor.

Mensaje Hola mundo RF

  

Ej.3 Enviando datos y variables con los módulos RF

La librería principalmente trasmite cadenas de bytes, que pueden ser una cadena de texto o un dato convertido en cadena, pero cuando se necesitan enviar varios datos hay dos formas de hacerlo, un método es empaquetar todo en una sola trama y enviarlo, el receptor debe de desempaquetar y obtener los datos.

Otra forma más sencilla es enviar un inicio de trama diferente para cada dato, el cual indicara al receptor que dato es el que se está enviando, el siguiente ejemplo lo hacemos de esta forma, enviaremos dos  datos, cada uno con un inicio de trama diferente.

Código del emisor:

#include <VirtualWire.h>

void setup()
{
    Serial.begin(9600);	  // Debugging only
    Serial.println("setup");

    // Se inicializa el RF
    vw_setup(2000); // velocidad: Bits per segundo
    vw_set_tx_pin(2); //Pin 2 como salida para el RF 
}

void loop()
{
    char buf[VW_MAX_MESSAGE_LEN]; // Cadena para enviar
    int dato1=millis()/1000; //variable con el tiempo en segundos
    float dato2=3.14;   //segundo dato para enviar
    String str="";  
    
    str="i"+String(dato1); //convertimos el entero a String y agramos un inicio de trama
    str.toCharArray(buf,sizeof(buf)); //convertimos el String en un array
    vw_send((uint8_t *)buf, strlen(buf)); //Enviamos el array
    vw_wait_tx(); //Esperamos hasta que el mensaje se envie
    
    str="f"+String(dato2); //convertimos el float a String y agramos un inicio de trama
    str.toCharArray(buf,sizeof(buf)); //convertimos el String en un array
    vw_send((uint8_t *)buf, strlen(buf)); ////Enviamos el array
    vw_wait_tx(); //Esperamos hasta que el mensaje se envie
    
    delay(200);
}

   

Código del Receptor

#include <VirtualWire.h>

void setup()
{
    Serial.begin(9600);	// Debugging only
    Serial.println("Receptor: setup");

    // Se inicializa el RF
    vw_setup(2000);	 // velocidad: Bits per segundo
    vw_set_rx_pin(2);    //Pin 2 como entrada del RF
    vw_rx_start();       // Se inicia como receptor
}

void loop()
{
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;
    int dato1=0;
    float dato2=0.0;
    //verificamos si hay un dato valido en el RF
    if (vw_get_message((uint8_t *)buf,&buflen))
    {
	int i;
	String  DatoCadena="";
        if((char)buf[0]=='i') //verificamos el inicio de trama
        {
            for (i = 1; i < buflen; i++)
            {
        	DatoCadena.concat((char)buf[i]);
            }
            dato1=DatoCadena.toInt();
            Serial.print("Dato1 recibido: ");
            Serial.println(dato1);
        }
        else if((char)buf[0]=='f') //verificamos el inicio de trama
        {
            for (i = 1; i < buflen; i++)
            {
        	DatoCadena.concat((char)buf[i]);
            }
            dato2=DatoCadena.toFloat();
            Serial.print("Dato2 recibido: ");
            Serial.println(dato2);
        }
    }
}

Los datos lo visualizaremos  en el monitor serial del receptor

 

 Transmision de datos por RF

   

Productos relacionados
Artículos relacionados
112 Comentarios
  • Ad****  ******* *****ez

    Ad**** ******* *****ez 16/08/2022 Responder

    Hola en Argentina la banda de 430 a 440 mc está reservada para radioaficionados no es de uso libre
    • Ju** ****os

      Ju** ****os 03/03/2023 Responder

      La frecuencia de 433,92MHz es de uso libre según el plan de bandas de la IARU a muy baja potencia.
  • VI****

    VI**** 07/08/2022 Responder

    Hola a tod@s,

    Me gustaría mostrar el código en una pantalla LCD o en el "monitor serial" de los datos qué se reciben en un módulo de RF, (por ejemplo el de un mando a distancia de un garaje o un coche) alguien hizo algo parecido?

    Gracias de antemano.
  • Ma***** ***ha

    Ma***** ***ha 27/12/2021 Responder

    Hola excelente trabajo, solo quiero compartirles un control que realice con microcontrolador PIC aca les dejo la informacion para que la utilicen como bien les plasca, gracias.
    https://pastebin.com/FYtH7hXF
  • Ju** ****** *****ez

    Ju** ****** *****ez 28/11/2021 Responder

    ¿Cómo sería el código para una transmitir un mensaje de texto sin librerías a través de los pines TX y RX?
    Muchas gracias!
  • Jo** ** ****** ****** *****ga

    Jo** ** ****** ****** *****ga 17/06/2021 Responder

    Hola que tal muy buen día , espero y me puedan ayudar , estuve revisando el producto y al parecer me puede funcionar , cuento con 5 persianas motorizadas , las cuales únicamente obedecen al control remoto individual a una frecuencia de 433 MHZ y en mi hogar cuento con un sistema de domótica de la marca bticino de muy home up , la intención es la siguiente poder mandar desde un comando subir o bajar las persianas de manera individual a través de los actuadores con relei y mandarle la señal con Arduino de manera individual ya sea subir o bajar , me servirá el producto para realizar dicha función , gracias de antemano les agradezco su aportación
  • Mi**

    Mi** 05/05/2021 Responder

    Hola, he estado investigando y creo que ando mal, quiero expandir la señal de un control remoto para encender un motor(433mhz HT6P20D), que estan a aproximadamente 700mts, pero la idea es que llegue con la misma codificacion, ya que este motor tiene ademas un panel, el cual me indica que control remoto lo activo. Por lo que necesito repetir la misma señal. como se podria hacer? gracias
  • Lu**

    Lu** 01/01/2021 Responder

    Hola. Mi idea es usar un mando de garage 433 para q al pulsar sume un punto en una pantalla de LEDs a modo de marcador. ¿Como podría hacer esto? Entiendo que ahora el emisor es el mando no? No tengo muy claro como hacerlo agradecería que me ayudaras. Gracias. Un saludo.
  • Me**

    Me** 09/12/2020 Responder

    Buenas:

    Con ese módulo. Teniendo dos Arduinos con sus LCD 20x4.
    ¿Se puede hacer un mini chat?

    Por lo que veo, es cierto que conecta dos Arduino, envías comandos al segundo y te devuelve un mensaje por ejemplo, que ha encendido un Led.

    Lo que quiero saber si otra persona del segundo Arduino, puede responder un mensae escrito por el propio usario. Tal como se hace entre dos PC.

    Saludos.
  • Wi**** ***** ******* *******ez

    Wi**** ***** ******* *******ez 20/06/2020 Responder

    Buenas tades!.
    Como puedo comunicar dos arduinos a una distancias de km
  • Wi**** ***** ******* *******ez

    Wi**** ***** ******* *******ez 20/06/2020 Responder

    Buenas tardes!.
    como puedo realizar la comunicación entre dos arduinos, la distancia es de 2.5 km Gracias de antemano!.
  • Pa***

    Pa*** 09/05/2020 Responder

    Se pueden untilizar estos componentes con otro tipo de antena? una antena yagi o direccional?
  • Ja*****

    Ja***** 28/04/2020 Responder

    Hola
    tengo que hacer un circuito en proteus con radio frecuencia controlando motores , pero no tengo ni la menor idea de hacerlo , podrian ayudarme ?
  • ji***

    ji*** 23/04/2020 Responder

    Buenas tardes, muy buen trabajo, sin embargo tengo una duda, por que usas 9600 bds cuando recomendaste que lo apropiado seria de 1200 a 2400 bds, Esa conversion la hace la libreria?
  • Ab***

    Ab*** 25/11/2019 Responder

    Disculpe como puedo enviar los datos que me entrega un giroscopio ya sea en x,y,z del emisor para poder leerlos en el receptor.
  • Ju**

    Ju** 19/11/2019 Responder

    Buenas noches alguien me puede colaborar como hacer para que pueda enviar cualquier mensaje
  • Lu** ****el

    Lu** ****el 29/10/2019 Responder

    Buenas, me gustaría saber que código puedo usar para asignarle un ID a cada modulo receptor, es decir yo pretendo usar un emisor y varios receptores. Como podría hace eso? es para darle ordenes por separado a cada receptor ya que transmiten en la misma frecuencia, gracias de antemano.
  • Fr** *****no

    Fr** *****no 13/10/2019 Responder

    Hola,
    Soy amater en este campo, estoy pensando en hacer un pequeño proyecto y querida saber si con esta tecnología puedo hacer lo siguiente.
    ¿Seria posible al activar un modulo enviar ubicación, mensaje de texto y paquetes cortos con sonido de audio a otro modulo?
    Gracias por su tiempo.
  • jo** ******ez

    jo** ******ez 09/09/2019 Responder

    buen dia, si tengo un medidor de flujo que trabaja por medio de pulsaciones, que se necesita para emitir datos desde el medidor a un celular, aparte de los enlaces de rf.
  • mi***** ***iz

    mi***** ***iz 30/06/2019 Responder

    tengo un pequeño problema necesito mandar los datos del rf a archivo de text y lo estoy intentado hacer por processing y no me funciona alguien que me ayude, por favor
  • Br***

    Br*** 24/06/2019 Responder

    Alguien sabe cuanta es la distancia maxima de comunicacion de estos modulos?
  • jh**

    jh** 16/06/2019 Responder

    Ayudenme porfa como puedo enviar la señal analogica de un potenciometro de un arduino a otro arduino para aumentar el brillo de un led
  • Fe****** C

    Fe****** C 03/06/2019 Responder

    Estimado, soy principiante en este mundo, estoy intentando la comunicación entre Arduino Uno y otro Arduino R3 , tengo los módulos, y mi primera intención es encender un led con un pulsador, mi segunda intención es que el led pueda parpadear 5 veces y parar, y por último, mi intención final es reemplazar el botón pulsador emisor, por un módulo de ultrasonido, realmente estoy frustrado porque no he podido realizar la comunicación, los módulos tienen las antenas correspondientes, pero no puedo lograr la comunicación,
    Solamente me conformo con encender un led, receptor, desde el botón pulsador y que pueda parpadear 5 veces y parar hasta repetir la operación, ojalá pudieras graficarme bien los pines con exactitud,
    Un cordial saludo y espero tu favorable respuesta.
  • mi*****

    mi***** 31/05/2019 Responder

    como puedo mandar un archivo excel por rf es posible o no
  • Ca****

    Ca**** 08/05/2019 Responder

    Hola, como se hace para hacer que a medida que se acerque el emisor vaya sonando más fuerte, así como un buscador de metales pero buscador del receptor.
  • DD*

    DD* 28/04/2019 Responder

    Buenas Tardes

    Quisiera saber si me puede orientar con un proyecto, tengo que enviar un archivo de imagen de un arduino transmisor a un arduino receptor, pero no se como hacer para ponerlo en el codigo, tengo que utlizar un arduino mega y un arduino UNO R3, modulos de RF 433MHz-

    Por favor de verdad necesito su ayuda
    Es urgente

    Feliz Tardes
    espero su pronto respuesta
  • Ja*** ****** ********** *******da

    Ja*** ****** ********** *******da 02/04/2019 Responder

    Buen dia.

    HE tratado de hacer funcionar este para apagar y encender un led, no he podido... veo que el transmisor transmite pero no pasa nada en el receptor que podrá ser....

    Muchas gracias.

    Transmisor

    #include

    //const int dataPin=9;
    char estado=0;


    void setup() {
    Serial.begin(9600);
    vw_setup(2000);
    vw_set_tx_pin(9);

    }

    void loop() {
    while(Serial.available()>0)
    {
    estado = Serial.read();
    Serial.println(estado);

    char data[1];
    data[0]=Serial.read();
    Serial.println(data[0]);
    vw_send((uint8_t *)data,sizeof(data));
    vw_wait_tx();
    }
    delay(200);

    }

    Receptor

    #include

    const int dataPin=9;
    const int ledPin=12;


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

    vw_set_rx_pin(dataPin);
    vw_setup(2000);
    vw_rx_start();

    pinMode(ledPin,OUTPUT);
    digitalWrite(ledPin,true);
    delay(1000);
    digitalWrite(ledPin,false);

    }

    void loop() {
    uint8_t data;
    uint8_t datalength=1;

    if(vw_get_message(&data,&datalength))
    {
    if((char)data=='a')
    {
    digitalWrite(ledPin,true);

    }
    else if((char)data=='b')
    {
    digitalWrite(ledPin,false);
    }
    }

    }
  • ag**

    ag** 19/03/2019 Responder

    quien me ayuda #include con la libreria de arduino no me compila
  • je*** ****** *****ra

    je*** ****** *****ra 15/03/2019 Responder

    Hola que tal, como puedo enviar un dato o (datos) mediante RF y que el código de programación me devuelva el tiempo que tardaron en transferirse del emisor al receptor. gracias
  • Gi*

    Gi* 13/03/2019 Responder

    Donde encuentro las librerias?
  • Ja******

    Ja****** 15/11/2018 Responder

    Hola, me podrías ayudar con algo por favor. Voy a controlar un carro a RF con un control de PS3, entonces la idea es utilizar este modulo RF y conectarlo al control, pero no se como hacerlo, si podrías colaborarme con eso te agradecería mucho.
  • Cl***** ******ña

    Cl***** ******ña 29/10/2018 Responder

    Estimado, hay alguna posibilidad de conectar sin usar Arduino, la señal la daría un rele conectado a un sensor de movimiento
  • Da*** ******va

    Da*** ******va 08/09/2018 Responder

    reciba un saludo afectuoso por el aporte desinteresado y muy valioso;
    necesito ayuda, he armado el circuito de comunicacion, funciona muy bien la comunicacion entre los pic via RF en proteus, la interconecion con el PC con USB-TTL tambien hasta 4800 mbps; aparentemente tambien funciona en protoboar, con la coneccion directa de señal entre los pic, pero cuando trato de realizar con la señal de recepcion RX433 al pic 16f628a por el pin B1 (RX) no funciona, he probado el voltaje promedio de emision que va desde 2.4v a 2.7v pero a la salida del receptor promedia la señal de solo 1.3v a 1.6v como hago para compensar esta diferencia para que el receptor del pic me decodifique la señal.
    desde ya muchisimas gracias y bendiciones por tu trabajo, gracias.
  • Da**** ******as

    Da**** ******as 28/08/2018 Responder

    Buenas, me podrian proporcionar algunos datos de esta publicacion?
    Estoy participando en una Feria de ciencias e ingenierias, necesito llenar unos datos en las fuentes bibliograficas. Nombre del autor, año de publicación, y lugar de publicación.
    Les agradesco por tener todos estos tutoriales tambien explicados.
  • mi***** ***iz

    mi***** ***iz 14/07/2018 Responder

    buenas, necesito saber como usar el modulo controlandolo con el pic16f877A
  • JC

    JC 30/05/2018 Responder

    Buen tutorial! Te consulto sobre el alcance de estos modulos. Cuantos metros es el alcance? Gracias!
  • An*

    An* 21/05/2018 Responder

    Hola! muchas gracias por la información. Soy principiante en el tema. estoy tratando de hacer el ejemplo 1 con un momentary pushbutton como de arcade. El código del emisor va así: #include
    const int buttonPin = 13; //red button pin
    void setup()
    {
    pinMode(buttonPin, INPUT);
    Serial.begin(9600);
    Serial.println("Emisor RF");

    // Se inicializa el RF
    vw_setup(2000); // velocidad: Bits per segundo
    vw_set_tx_pin(2); //Pin 2 como salida para el RF

    }

    void loop(){

    while (Serial.available() > 0)
    {
    char dato[1];
    if (digitalRead(buttonPin) == HIGH) {dato[0] ='a';}
    else {dato[0] ='b';}
    vw_send((uint8_t*)dato,sizeof(dato));
    vw_wait_tx();
    }
    delay(200);
    }

    ... el problema es que no he logrado hacer que encienda y apague el led que esta en el otro arduino (receptor), con el código así me esta apagando el led L en el arduino emisor mientras esta pulsado el botón, pero lo que quiero es que apague y prenda el otro led. He mirado varias paginas y tutoriales pero no logro encontrar algo queme guíe.Intente usar un código simple de apagar y prender un led pero no lo pude hacer funcionar. Agradecería mucho su ayuda. Buena noche
  • Jo**

    Jo** 18/05/2018 Responder

    Un buen tutorial sobre todo teórico, pues en la práctica es tanta la basura que llega al módulo receptor que imposibilia mucho el funcionamiento.
    Por ejemplo, si usted vive en una ciudad con mucho ruido en esta frecuencia, casi seguro que no podrá usar este tipo de módulo.
    Yo particularmente he optado por abandonar mis proyectos con estos módulos por el ruido que llega al recpetor.
    Saludos y espero que antes de comprarlos se planteen si les va a funcionar, porque de una cosa es la teoría y simulación con Proteus y otra muy diferenta ; la realidad.
    • Da***

      Da*** 08/09/2018 Responder

      Saludos Joan
      Al inicio también pensaba lo mismo, hasta que encontré esta página, que me ayudo a despejar muchos errores; los datos basura que recepciones, es el tiempo que pierdes de comunicación entre el modulo transmisor y el modulo receptor, en consecuencias, agotas la energía del receptor, obligando a este a tratar de captar algo más (por diseño), la solución a este inconveniente, solo es darle información constante, para que los espacios en blanco (sin señal enviada) también deban ser transmitidos y recibidos (señal de no hacer nada) y mantener una comunicación llamémosles sincrónica, para tener la atención del receptor respecto al transmisor.
      Espero te pueda servir.
      Atte David.
  • ma**** *******ez

    ma**** *******ez 16/05/2018 Responder

    Todo esta bien solo que "Recivido" no es asi, es asi "Recibido"
  • lu** **go

    lu** **go 14/05/2018 Responder

    hoja, de bogota, colombia
    necesito una tarjeta que me conecte via lan a mi pc y esta al enviar un dato especifio haga la apertura de una puerta
    o simplemente me de un impulso seco para abir una puerta

    gracias

    espero sus comentarios
    • Jo**

      Jo** 18/05/2018 Responder

      Amigo Luis,
      Esta entrada no es sobre peticiones, pero si usted busca a través de "San Google", encontrará varios modelos que posiblemente se adapte a lo que usted necesita.

      Además deberá indicar si la lan es interna o a través de Internet.

      Saludos desde Medellín.
  • lu** **az

    lu** **az 23/04/2018 Responder

    Buenas Tardes.

    Excelente tutorial. Tengo una pregunta: ¿como envio un vector, en el cual solo he guardado datos de tipo entero , a un receptor, para que los numeros o datos que estan en el vector (array) se viusalicen en el monitor serial de arduino? Obviamente, el vector me va a manejar solo numeros. ¿como se hace?

    Espero su pronta respuesta.
  • Ja**** ***la

    Ja**** ***la 27/03/2018 Responder

    Hola muy bueno el post lo estoy probando pero en cuanto a la seguridad en los datos trasmitidos tienen algún mecanismo de encriptacion? O va en texto plano
  • fa**** ******ow

    fa**** ******ow 28/01/2018 Responder

    una duda puedo usar solo el transmisor para hacer funcionar un dron de los comerciales? o tengo q colocar el receptor en el dron?
  • Fr*******

    Fr******* 16/01/2018 Responder

    Hola, me gustaría saber si se puede usar este código en un Arduino Due en vez de un Arduino Uno.
    El Due lo usaría como receptor.
    Al compilar el código del receptor para el Due me da el siguiente error:

    "Error compilando para la tarjeta Arduino Due (Native USB Port)."

    No sé si es problema de que el Arduino Due no es compatible con la librería o que he hecho algo mal...
    El emisor me compila y carga bien en un Arduino Nano.
    Saludos!
  • Ca**** ****el

    Ca**** ****el 08/01/2018 Responder

    BUENAS NOCHES QUISIERA SABER EXACTAMENTE A QUE DISTANCIA TRABAJAN LAS TARJETAS RF ??
    • Da****

      Da**** 18/10/2018 Responder

      Todo es relativo, nada es exacto mi amigo. Recuerde que se trata de radio frecuencia, tantas variables externas que puede perturbar que es imposible calcular la exactitud que Ud requiere. Cada fabricante da un estimado de distancia máxima obviamente con un + ó - muy grande por las variables tales como ruido, obstáculos, etc. Le recomiendo que haga ensayo y error en el lugar que quiere que trabaje dicho dispositivo.
  • ed***

    ed*** 12/12/2017 Responder

    necesito 10 emisores y un solo receptor es posible?? en cada emisor envio una letra y de acuerdo a eso detecto cual emisor envio el dato....es posible??
    • Da****

      Da**** 18/10/2018 Responder

      Si lo imaginas, es posible. Suerte!!!!
  • Ga**

    Ga** 21/11/2017 Responder

    Donde descargo las librerías (´・_・`)
  • Yo****

    Yo**** 25/10/2017 Responder

    hola, es posible con los modulos RF enviar una imagen bmp, de no ser asi que elementos deberia obtener para la transmision y recepcion de la imagen inalambricamente + el codigo en arduino? gracias
  • Al** *****no

    Al** *****no 18/10/2017 Responder

    Es posible enviar sonido o audio con estos elementos?..Si es afirmativo, como lo hago? Gracias...
  • se*******

    se******* 05/10/2017 Responder

    Hola, super buen aporte, pero tengo problema con el codigo de receptor, he intentado muchas veces realizar un esquema desde core (ya que soy un novato en esto de la programacion) y siempre me da el mismo error:
    Arduino: 1.8.5 (Windows 10), Board: "Arduino Nano, ATmega328P"

    C:UserschinaAppDataLocalTempccnp2rKK.ltrans0.ltrans.o: In function `loop':

    C:UserschinaDesktopProgramaciones arduinoreceptor_conexion_inalambricareceptor/receptor.ino:22: undefined reference to `vw_get_message'

    collect2.exe: error: ld returned 1 exit status

    exit status 1
    Error compiling for board Arduino Nano.

    Si alguien puede iluminar que pasa lo agradeceria.
  • Eu*****

    Eu***** 30/09/2017 Responder

    hola que tal, gracias por tu blog,
    he usado tus códigos y modificado, solo utilizo el receptor y 2 mandos a distancias de 4 botones
    funciona muy bien, sin antena, una distancia de 30-50 centimetros,
    despues de soldar la antena (un hilo de 16.5cm de un cable de pruebas ) consigo una distancia maxima de 70cm
    pudiera ser que a mayor distancia , mayor ruido? como puedo eliminar el ruido si es el problema?

    gracias
  • ta***

    ta*** 05/09/2017 Responder

    hola me gustaria saber si con este mando que tengo de 15 canales
    mas arduino y los módulos de rf 433 podria cerrar y abrir un toldo con su correspondiente motor

    http://greutor.com/producto/ohe15-mando-a-distancia-de-15-canales/
    • Na*****

      Na***** 23/09/2017 Responder

      Hola Tazma, primero tendrías que averiguar si la comunicación del mando es unidireccional o bidireccional, en caso solo sea en una sola dirección te quedaría en descifrar e implementar el protocolo de comunicación, lo último sería lo más complicado
  • Ju**

    Ju** 05/09/2017 Responder


    Hola, tengo un pequeño problema. Tengo modulo receptor y emisor. El receptor tiene un led solamente y el emisor (a fines de prueba) tiene un led y 3 switch button. Uso el código para transmisión y recepción según los tutos, ni más ni menos. El funcionamiento es, cuando pulso uno de los switch, el receptor recibe el dato y enciendo 1 seg el led, nada más. El problema esta que con el primer switch que transmite los caracteres "sw1" llega bien, enciende el led. Cuando pulso el segundo switch llamado "sw2" no pasa nada y cuando lo hago con el 3 llamado "sw3" tampoco. Luego si intento varias veces por ahí si o por ahi no pero si pulso "sw1" si funciona. Es medio raro este error, primero pensé que fuera la antenas porque no las uso, tengo los modulos casí pegados pero llegué a la conclusión que no es el problema porque revisando el led de recepción veo que no recibe nada , no es que sea baja la señal o algo. Bueno, espero que alguien me cuente de su experiencia. Todo sirve.

    Por el momento voy a instalar las antenas correspondientes pero mis expectativas de solución con esto son bajas porque estoy haciendo prueba de código, no de alcance por el momento.

    Saludos y el artículo muy bueno como siempre.
    • Na*****

      Na***** 23/09/2017 Responder

      Hola Juan, prueba los ejemplos del tutorial, si te funcionan si problemas, significa que en tu aplicación solo es problema de programación o de tu algoritmo.
  • Ar*** *******rg

    Ar*** *******rg 14/08/2017 Responder

    Hola Naylam,

    Pude hacer funcionar y replicar la señal de un control remoto RF. El problema que tengo es que la función de la alarma que quiero controlar se activa si uno pulsa el control remoto por 3 segundos. Como se puede simular ese comportamiento ? El receptor de señal me imprime en el puerto serie varias lecturas durante los 3 segundos cuando presiono el boton, tendría que hacer un for (loop) para simular dicho comportamiento ? Se que la emisión dura 298 ms (el receptor me dio esa info), tendría que transmitir 11 ciclos para simular los 3 segundos ? Gracias.
    • Na*****

      Na***** 22/08/2017 Responder

      Hola Ariel, implementando el bucle para simular los 298ms te debería funcionar, solo ten en cuenta que tienes que transmitir los mismos datos que el transmisor original envía.
  • ED***** ****** ***DA

    ED***** ****** ***DA 30/07/2017 Responder

    HOLA NAYLAM....COMO ES POSIBLE HACER ESTO CON INTEGRADOS.......HT12E Y HT12D NO LO HE PODIDO HACER....NO HE PODIDO ENCONTAR EL ERROR...GRACIAS
    • Na*****

      Na***** 22/08/2017 Responder

      Hola Edinson, la librería solo trabaja para una conexión directa de los RF, si usas codificadores ya no necesitarías usar la librería, pero solo podrás trasmitir 4 bits.
  • ro*****

    ro***** 19/07/2017 Responder

    Hola, una pregunta con los modulos RF se podria medir distancia entre un emisor y un receptor ? muchas gracias
    • Na*****

      Na***** 30/07/2017 Responder

      Hola Rodrigo, con estos módulos no es posible.
      • wi****

        wi**** 12/10/2019 Responder

        que módulos son necesarios para ese propósito
  • Ib**

    Ib** 01/07/2017 Responder

    Buenas noches ,
    el módulo emisor sigue ocupando la frecuencia de 433MHZ aunque no le estemos ordenando enviar nada por el pin DATA? o debería asegurarme de quitarle alimentación al módulo emisor mientras no estoy en el proceso de envío para así asegurar que no interfiere con ningún otro dispositivo en esa frecuencia?
    Muchas gracias
    • Na*****

      Na***** 17/07/2017 Responder

      Hola, Lo recomendable es deshabilitar el modulo, tendrías que conmutar con un transistor el VCC del módulo, otra opción es invertir la lógica pero la libraría no soporta eso, solo permite invertir el RX.
  • er***

    er*** 27/06/2017 Responder

    porque los codigos funcionan en algunos arduino uno y otros no pense que era mi arduino pero no era .si era el codigo.
    • Na*****

      Na***** 17/07/2017 Responder

      Hola Erick, los programas deben funcionar en cualquier arduino.
  • Ma**** ****ra

    Ma**** ****ra 14/06/2017 Responder

    hola, quiero que me ayudes, he probado la comunicación y la máxima distancia que tengo es de máximo 5 metros, pero este equipo lo quiero comunicar hasta 200 metros, que debo hacer que se comunique. o tengo que comprar otro tipo de tarjeta de radio frecuencia
    • Na*****

      Na***** 18/06/2017 Responder

      Hola Manuel, estos módulos son económicos sensibles a ruido y de poco alcance, para llegar a los 200 metros tienes que tener diseñado una buena antena y trabajar a velocidades de trasmisión bajas.
  • dc****

    dc**** 29/05/2017 Responder


    Hola, Naylamp excelente trabajo.
    Soy estudiante de ingeniería electrónica y estoy algo atascado con lo que pretendo hacer
    tengo un código de emisión, este emite los datos que escribo por el monitor serie, el receptor toma esos datos y los manda a un display lcd 16*2..EL problema consiste en que solo se pueden trasmitir hasta 27 caracteres y necesito mandar más, lo que me planteo hacer mandar una cadena de 27 caracteres, el numero 27 va a ser un 1 o un 0.
    cuando reciba estos caracteres los debe recorrer y mirar el ultimo, si es un 1 debe guardar esto en una variable y esperar ah que le llegue el siguiente mensaje, cuando reciba el siguiente mensaje lo recorre y verifica si es un "1 o un 0" si es un 1 hace el mismo procedimiento de guardar y esperar, si es un 0 debe guardar la información y mandar al lcd cada mensaje recibido en un intervalo de tiempo por ejemplo 15 seg.

    El 1 significa que entran mas mensajes.

    El 0 significa que ya no va a mandar mas mensajes y que debe mostrar todo



    EMISOR


    // Librerias:

    #include

    //FUNCIONA

    // Variables globales

    char cad[100];

    int i=0;




    void setup()

    {

    Serial.begin(9600); // Abre el puerto serie a 9600 bps

    vw_setup(2000); // Abre el puerto RF a 200 bps

    Serial.print("Finalice con "." cada envio de datos.");

    vw_set_tx_pin(9);

    }




    void loop()

    {

    // Indica cuantos caracteres hay en el buffer:

    if( Serial.available() > 0)

    {

    cad[i] = Serial.read(); // Cada vez que se lee un carácter se guarda en nuestro array y se descuenta del buffer.

    i++;

    }


    // Cuando escribamos un punto, se enviara todo el texto por el emisor RF:

    if( cad[i-1] == '.')

    {

    cad[i] = ''; // Se añade fin de linea al array (string)

    i=0;

    vw_send((byte *)cad, strlen(cad)); // Se envía el texto.

    delay(400);

    }

    }




    RECEPTOR CON LCD



    //LiquidCrystal lcd(10, 9, 5, 4, 3, 6);

    #include

    #include


    // Instanciacion del LCD:

    LiquidCrystal lcd(10, 9, 5, 4, 3, 6);


    // Variables globales:

    char cad[100];

    int pos = 30;


    void setup()

    {

    lcd.begin(16, 2); // Configuración del LCD, 2 líneas de 16 caracteres cada una.

    lcd.setCursor(0, 0); // Se pone el cursor en la primera posición de la pantalla.


    vw_setup(2000); // Se indica los bits por segundo (baudios) para la comunicacion.

    vw_rx_start(); // Se inicia la recepción.

    vw_set_rx_pin(2); // Pin de trasmicion


    }



    void loop()

    {

    byte buf[VW_MAX_MESSAGE_LEN]; // Se crea una array de tipo byte de 30 componentes (Es el valor que tiene la constante VW_MAX_MESSAGE_LEN en la libreria)

    byte buflen = VW_MAX_MESSAGE_LEN; // Se indica que por defecto el tamaño sera de hasta 30 caracteres.


    int i;


    // Si se recibe un mensaje desde el Arduino emisor, la función vw_get_message devolverá por valor un true y por referencia el mensaje y si tamaño.

    if( vw_get_message(buf, &buflen) )

    {

    if(pos < 3)

    lcd.setCursor(3, pos);

    else

    {

    pos=3;

    lcd.clear();

    }


    // Se imprime por pantalla componente a componente del array hasta que se llegue al final.

    for (i = 0; i < buflen; i++)

    {

    //lcd.print(buf[i]);

    // Otras formas de imprimir:

    //lcd.write(buf[i]);

    // lcd.print(buf[i], byte);

    lcd.print((char)buf[i]);

    pos++;


    }

    }


    //MOVIMIENTO DE IZQUIERDA A DERECHA


    for (int positionCounter = 3; positionCounter < 16; positionCounter++) {

    // scroll one position left:

    lcd.scrollDisplayLeft();

    // wait a bit:

    delay(300);

    }

    }

  • Ya** ***as

    Ya** ***as 15/04/2017 Responder

    Necesito alambre para hacer bobinas o simple cable
    • Na*****

      Na***** 30/04/2017 Responder

      Hola Yair, puedes usar cualquier cable, si es esmaltado o con aislante es mejor, evitará que se oxide.
  • Ca**** ******ra

    Ca**** ******ra 11/04/2017 Responder

    Hola Naylamp, te felicito por tu aporte, es meritorio lo que haces, te pido me apoyes en este proyecto, tengo 20 emisores (pulsador), en un radio de 50 metros y 01 receptor conectado al PC que sea capaz de identificar quien pulsó el boton para enviarlo a una app y este asu vez enviará un mensaje a otro dispositivo. Que me podrias aconsejar. Gracias de antemano.
    • Na*****

      Na***** 30/04/2017 Responder

      Hola Carlos, en cada emisor envía un identificador, como un inicio de trama para poder diferenciar quien envió la cadena, el receptor con el identificador podrá saber en que Arduino se presionó el pulsador. Tienes que enviar la cadena varias veces, pues si se presionan dos pulsadores a la vez, ambos emisores funcionaran a la vez provocando interferencia entre ellos
  • ru***

    ru*** 15/03/2017 Responder

    Hola , me gustaría saber si mediante estos módulos y arduino puedo transmitir audio (obviamente en una sola direccion)
    • Na*****

      Na***** 31/03/2017 Responder

      Hola Rubén, No es posible transmitir audio, estos módulos solo aceptan estados digitales, y trasmiten a baja velocidad.
  • Ca****

    Ca**** 06/03/2017 Responder

    Buena tarde Naylamp, te pregunto, fui a descargar la libreria y me sale que fue actualizada y ahora no es VirtualWire sino RadioHead, ahora pregunto, cual es la nueva sintaxis que se utiliza con esta nueva libreria? realmente he buscado pero no he podido encontrar como cambia. Por favor colaborame. Gracias.
    • Na*****

      Na***** 07/03/2017 Responder

      Hola Carlos, aun no revisamos la actualización a RadioHead, pero se debe usar la clase RH_ASK y sus funciones que son similares a las de VirtualWire, Pero aun esta disponible la versión de VirtualWire te recomendamos trabajar con esa hasta que haya documentación suficiente.
  • ar****

    ar**** 13/02/2017 Responder

    Hola Naylamp. Una duda. los modulos RF vienen programados para funcionar unicamente con su pareja?, algo asi como que manejen una codificacion interna que no permita que el modulo receptor reciba una señal de un modulo emisor diferente a la pareja con el cual viene. no se si me explico bien.
    Quiero colocarlo para manejar una cantonera eléctrica de una puerta y usar el emisor como una especie de control remoto que le genere la señal al receptor que activara la cantonera y abriría la puerta y no me gustaría que alguien con un modulo de los mismos, al emitir una señal, sea recibida por mi modulo receptor y active la cantonera eléctrica.
    Hay seguridad respecto a la señal que recibe?
    • To**

      To** 06/06/2018 Responder

      También podrías utilizar una codificación basada en cadenas de texto y que el receptor valide que la cadena enviada por el emisor cumpla con algún patrón, por ejemplo "1a2b3c:ENCENDER" (ver ejemplo 3 inicio de trama), saludos.
    • Na*****

      Na***** 13/02/2017 Responder

      Hola Arturo, estos modulo RF no vienen emparejado, con respecto a seguridad no son una buena opción, cualquiera que tenga programado otro módulo con la misma librería y velocidad puedes trasmitir o recibir datos. Existen chips codificadores como el SC2272 que tienen una dirección de 8 bits para el emparejamiento, pero para muchas aplicaciones esto aún es inseguro.
  • Na*****

    Na***** 14/12/2016 Responder

    Hola, Justamente esa es la limitación de estos módulos, que trabajan en un solo sentido, y solo puede haber un emisor activo, si hubieran más de un emisor habría interferencia entre ellos. Lo que podrías hacer es usar módulos de diferente frecuencia. Por ejemplo para transmitir en un sentido 433MHZ y para el sentido contrario 315Mhz. Otra Opción es apagar el modulo transmisor después de enviar. Para que el otro transmisor pueda responder. De igual manera tendrías que pagar el receptor sino estaría recibiendo lo que el mismo arduino envía.
  • Ar***** *****ar

    Ar***** *****ar 03/12/2016 Responder

    Disculpe, cree usted que podria ser posible utilizar el mismo arduino como emisor y receptor? y que este reciba y mande señales a otro arduino emisor-receptor?
    • Na*****

      Na***** 14/12/2016 Responder

      Hola, Justamente esa es la limitación de estos módulos, que trabajan en un solo sentido, y solo puede haber un emisor activo, si hubieran más de un emisor habría interferencia entre ellos. Lo que podrías hacer es usar módulos de diferente frecuencia. Por ejemplo para transmitir en un sentido 433MHZ y para el sentido contrario 315Mhz. Otra Opción es apagar el modulo transmisor después de enviar. Para que el otro transmisor pueda responder. De igual manera tendrías que pagar el receptor sino estaría recibiendo lo que el mismo arduino envía.
      • Os***

        Os*** 02/04/2019 Responder

        Hola me gustaria algun especialista en rf pra un proyecto a distancia interesados escribir , logicamente. Es remunerado a convenir precio y condiciones
        Oscar@4tre.com

        Saludos
  • Gi****** **sa

    Gi****** **sa 24/11/2016 Responder

    Tengo una duda, es necesaria la antena para que funcione? Realice todo tal y como esta, con los modulos a 2 cm de distancia sin antena pero no funciona, no se si sea necesaria la antena porque estan casi pegados y aun asi nada :/
    • Na*****

      Na***** 26/11/2016 Responder

      Hola Giovanni, en una comunicación serial podría fallar, pero usando librerías a esa distancia si debería transmitir. Pero ponle una antena, si es distancias cortas puedes trabajar con cualquier trozo alambre como antena.
      • Da****

        Da**** 07/12/2016 Responder

        hice el ejemplo numero 1. sin antena y funciona a la perfección a una distancia de unos 5 cm uno del otro.
  • Fe**** *******

    Fe**** ******* 24/11/2016 Responder

    Oye en que cambiaría el programa para ponerle un pulsador
    • Na*****

      Na***** 26/11/2016 Responder

      Hola Felipe, En el ejemplo 1, el emisor seria así:

      void loop() {

      char dato[1];

      if (digitalRead(buttonPin) == HIGH) {dato[0] ='a';}

      else {dato[0] ='b';}

      vw_send((uint8_t*)dato,sizeof(dato));

      vw_wait_tx();

      }
  • Fe**** *******

    Fe**** ******* 24/11/2016 Responder

    Oye en que cambiaría el programa para ponerle un pulsador
  • Iv**

    Iv** 15/11/2016 Responder

    Buenas tardes, quería hacerte una pregunta. Podrías ayudarme a realizar un programa para manejar un motor, variando su velocidad con un potenciómetro o a través del monitor serial? Soy estudiante de secundaria y estoy en proyecto para construir un Drone. Te agradecería mucho si me ayudaras. Saludos.
    • Na*****

      Na***** 16/11/2016 Responder

      Estimado Iván, Para la parte de radiofrecuencia puedes usar el ejemplo 3, aquí envías la velocidad como una variable int dato1=analogRead(A0); y en A0 estaría tu potenciómetro. En el receptor después de leer la velocidad envíalo al PWM de tu motor, esto en caso sea un motor DC.
      • Ju***** ******* ********** ********

        Ju***** ******* ********** ******** 03/10/2020 Responder

        hola amigo estoy haciendo el proceso con el pwm, efectivamente en el monitor serie me aparecen los valores pero al crear una variable a un pin pwm el programa se cuelga y no da mas hatsa reiniciar

        dato1=DatoCadena.toInt();
        Serial.print("Dato1 recivido: ");
        Serial.println(dato1/4);
        analogWrite(led,dato1/4);
        delay(15);

        podrias ayudarme con el problema
  • os*****

    os***** 02/11/2016 Responder

    Hola y si lo que quiero es transmitir datos en tiempo real es decir enviarlos desde el monitor serial y como puedo hacerle asi mismo como puedo agregarle una activación mediante una señal de otro sensor
    • Na*****

      Na***** 05/11/2016 Responder

      Estimado Osvaldo, los ejemplos que mostramos son la base para que implementes sobre ellos cualquier aplicativo, por ejemplo si quieres enviar desde el monitor serial, los datos recibidos desde la PC puedes almacenarlos en un string y posteriormente enviarlo como un solo mensaje al receptor. O también leer carácter por carácter e enviarlo de como variable tipo char.
  • En** ******ni

    En** ******ni 12/10/2016 Responder

    Hola, me gustaría saber como debería modificar la programación si quiero hacerlo con un interruptor nada mas, sin PC. Voy a alimentar las placas con fuentes de computadora a 5v y quiero que empiecen a transmitir en el momento en que enciendo la fuente del Emisor. Muchas gracias.
    • Na*****

      Na***** 14/10/2016 Responder

      Hola Enzo, va a depender de lo que quieres transmitir, nuestro tutorial se los ha separado en tres ejemplos. El primero para enviar un solo dato, el segundo para enviar texto, y el tercero para enviar varios tipos de datos. En los ejemplos 2 y 3 el emisor trabaja sin PC, solo basta con alimentar y empezaran a transmitir, en los receptores solo usamos la PC para mostrar los datos recibidos.
  • Al*****

    Al***** 02/10/2016 Responder

    Muchas Gracias, es el primer tutorial, de este módulo, que encuentro claro, fácil y que funciona.
    Es frustrante empezar en este mundo y nada más que encontrar basura por la red.
    Voy a ver si soy capaz de modificar tu código para encender el led con un botón.
    Una vez más gracias, estaba completamente desanimado.
  • Jo****** ******io

    Jo****** ******io 27/09/2016 Responder

    Existe algún módulo o que componentes requiero que me permita comunicar varios dispositivos a la vez. Por ejemplo tengo 5 focos (llamemos cliente) que están con un rele y arduino y quiero controlar su encendido y apagado desde un arduino principal (llamemos servidor). Es posible y que módulos o componentes de comunicación requiero,
    Gracias.
    • Na*****

      Na***** 30/09/2016 Responder

      Hola Jonathan, Si solo existe un Emisor y varios receptores si es posible trabajar con estos módulos. Desde el emisor aparte del dato que deseas enviar también tienes que enviar un variable con el ID del receptor con el que quieres comunicarte, en el receptor tienes que validar si el ID es el que le corresponde para aceptar los datos que recibe. En cambio sí más de un arduino va a trasmitir tienes que usar módulos RF de varios canales, para que no haya interferencia entre ellos. Para este caso puedes usar el NRF24L01.
  • Fe****** ****eu

    Fe****** ****eu 27/07/2016 Responder

    Buenas tardes, consulta, si quisiera tener comunicacion entre tres arduinos es posible codificar las señales de los transmisores y receptores?.-

    Gracias.-
    • Do**

      Do** 24/04/2017 Responder

      en los datos que transmitas le puedes agregar una identificación para que el dispositivo descarte la información que no esta dirigida a él
      • An****

        An**** 29/10/2019 Responder

        como puedo hacer eso? podrías darme un ejemplo?
      • Ca****

        Ca**** 16/11/2018 Responder

        No es tan sencillo, se debe controlar que los transmisores no emitan al mismo tiempo, si por ejemplo uno manda un uno lógico cuando el que estoy escuchando manda un cero, voy a estar leyendo un uno. Podría resolverlo usando ventanas de tiempo o que todos emitan y reciban de forma de establecer alguna señal de sincronismo
      • TO**

        TO** 20/12/2017 Responder

        Doen, se puede hacer eso del identificador para que solo el receptor reciba lo que le pertenece?
        me podrian explicar como podria ser eso posible...
        Gracias.
    • Na*****

      Na***** 28/07/2016 Responder

      Con estos módulos RF no se pueden trasmitir más de uno a la vez, estos módulos básicamente trabajan con modulación ASK, con ausencia y presencia de señal que definen los 1 y 0 lógicos, por eso cualquier otra señal de la misma frecuencia interfiere en la transmisión. Si quieres conectar más de un Arduino tu algoritmo debe asegurar que solo uno transmita a la vez.
  • cr******

    cr****** 17/07/2016 Responder

    como puedo hacer la antena helicoidal. que calibre de cobre y cuanto necesito?
    • Na*****

      Na***** 20/07/2016 Responder

      Cristian, prueba con un cable calibre AWG 20 y has un espiral con diámetro 5mm y 3.5 cm de longitud, las espiras no deben de tocarse entre sí, como se muestra en la imagen del tutorial. Saludos
Dejar un comentario
Deja su comentario

Menú

Ajustes

Crear una cuenta gratuita para usar listas de deseos.

Registrarse