This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Problema con arduino NANO y modulos transmisores 433mhz
#1
Buenas gente:

Resulta que quiero empezar con una tareita simple para avanzar con un proyecto que tengo (empleo placas chinas (arduino nano) pero con arduino en general) y se me resisten los transmisores de la siguiente foto:


[Imagen: xy_mk_5v.jpg]


Empleo estas placas para montar todo el circuito


[Imagen: Captura_de_pantalla_2016_03_19_a_las_21_11_55.png]





CONEXIONES

Lo conecto todo de la siguiente manera:

[Imagen: P80626_195650.jpg]

[Imagen: P80626_200705.jpg]

[Imagen: P80626_195643.jpg]

[Imagen: P80626_195717.jpg]

[Imagen: P80626_195709.jpg]


CODIGO

El siguiente codigo lo cargo en el emisor:

Código:
// EMISOR (Chip pequeño)
#include <VirtualWire.h>

char dato = 'a';

void setup()
{
   Serial.begin(9600);
   Serial.println("enviando");
   // Se inicializa el RF
   vw_setup(4000); // velocidad: Bits per segundo
   vw_set_tx_pin(12); //Pin 2 como salida para el RF
    pinMode(13, OUTPUT);    //Configuramos el pin del Led como entrada
}

void loop()
{
  if(dato == 'a')dato = 'b';
  else dato = 'a';
   //Enviamos el carácter recibido al RF
   vw_send((uint8_t *)dato, strlen(dato));
   vw_wait_tx(); // Wait until the whole message is gone    
   if((char)dato=='a')
     {
         digitalWrite(13, true); //Encendemos el Led
     }
     else if((char)dato=='b')
     {
         digitalWrite(13, false); //Apagamos el Led
     }        
   delay(2000);
}

y el siguiente va en el receptor:

Código:
// RECEPTOR (Chip grande)
#include <VirtualWire.h>

uint8_t dato;
uint8_t datoleng=1;
   
void setup()
{
   Serial.begin(9600);  // Debugging only
   Serial.println("setup");

   // Se inicializa el RF
   vw_setup(4000);     // velocidad: Bits per segundo
   vw_set_rx_pin(11);  // Pin 11 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()
{
   if (vw_get_message(&dato,&datoleng))
   {
       Serial.println((char)dato);
       if((char)dato == 'a')
       {
           digitalWrite(13, true); //Encendemos el Led
           delay(1800);
       }
       else if((char)dato != 'a')
       {
           digitalWrite(13, false); //Apagamos el Led
       }            
   }
   delay(200);
}


En resumen: Hago que el emisor emita una "a" i una "b" intermitentemente y el receptor cuando recibe una "a" se enciende el led y cuando recibe una "b" apaga el mismo led.



PROBLEMA:

El codigo explicado antes a la practica no sale igual , me explico:

El emisor parece que si que emite ya que la luz se enciende y se apaga, dando a entender que la funciónion de transmisión de datos acaba y transmite los datos, pero el receptor ni se inmuta, no se enciende ni una vez el led. He comprobado a ver si era por algun cable cortado o razones fisicas o incluso cambiando y alimentado al receptor con 5v pero no , parece todo correctamente conectado pero el sistema sigue sin funcionar. Alguien tiene alguna idea?.

Gracias de antemano  Rolleyes
  Responder
#2
Hola,

hace tiempo hice un invento parecido. Te paso código de ambos por si te puede servir de ayuda (adaptado a tu proyecto).

Emisor:

Código:
#include <VirtualWire.h> //incluimos la libreria virtualwire

const int transmit_pin = 12;

void setup()
{
 
 Serial.begin(9600); //Iniciamos la comunicacion serial
 
 vw_set_tx_pin(transmit_pin);
 
 vw_setup(2000);  //Iniciamos la comunicacion con el modulo RF

 pinMode(13, OUTPUT);    //Configuramos el pin del Led como salida
 

}


void loop()
{

send("a"); //Enviamos "a"
digitalWrite (13,HIGH); // Encendemos led
Serial.println("enviando a"); // Mensaje en monitor serial

delay(2000);  //Pausa 2 segundos

send("b"); //Enviamos "b"
digitalWrite (13,LOW); // Apagamos led
Serial.println("enviando b"); // Mensaje en monitor serial

delay(2000);  //Pausa 2 segundos

}

 

//Funcion para enviar el mensaje por RF

void send (char *message)
{
 vw_send((uint8_t *)message, strlen(message)); //Envia el mensaje
 vw_wait_tx(); //Espera hasta que se envien los datos
}

Receptor:

Código:
#include <VirtualWire.h>


//Creamos un mensaje
//La constante VW_MAX_MESSAGE_LEN viene definida en la libreria
byte message[VW_MAX_MESSAGE_LEN];
byte messageLength = VW_MAX_MESSAGE_LEN;
const int receive_pin = 11;
 
void setup()
{
 
 pinMode(13, OUTPUT); //Configuramos el pin 13 como salida
   
 
vw_set_rx_pin(receive_pin);
 vw_setup(2000);
 vw_rx_start();

}
void loop()
{
 if (vw_get_message(message, &messageLength))
 {
     if(comparar("a") == 0){

      digitalWrite(13,HIGH);// Encendemos led
      delay(1800); //Pausa de 1,8 segundos
     }
     
     else if(comparar("b") == 0)
     {
       digitalWrite(13,LOW);// Apagamos led
      delay(1800); //Pausa de 1,8 segundos

     }
 
 }
}

char comparar(char* cadena) {
 //Esta funcion compara el string cadena con el mensaje recibido.
 //Si son iguales, devuelve 1. Si no, devuelve 0.
 
 for(int i = 0; i<messageLength; i++)
 {
   if(message[i] != cadena[i])
   {
     return 1;
   }
 }

   return 0;
}

Saludos
  Responder
#3
Esos modulitos trabajan en una frecuencia altamente ocupada, si bien es cierto que si están muy próximos, no deberías tener problemas de interferencias.
  Responder
#4
El invento que monté yo, transmite/recibe en unos 4 metros atravesando una pared (con puerta). Con antenas.

Saludos.
  Responder
#5
Buenas gente:

Gracias por la ayuda Sonrisa , he implementado el codigo que me ha compartido Drow y con unos cuantos retoques en el cableado lo he hecho funcionar Gran sonrisa , es una pequeña victoria asi que espero que dentro de poco pueda terminar el proyecto Sonrisa.


Gracias a todos por ayudarme! Gran sonrisa
  Responder


Posibles temas similares…
Tema Autor Respuestas Vistas Último mensaje
  CONSULTA Problema con librerias Nextion Arduino Astrojohan 1 153 27-02-2023, 02:25 PM
Último mensaje: asesorplaza1
  Arduino nano y servo de rotación continua Bear 2 299 04-03-2022, 08:07 PM
Último mensaje: Bear
  problemas arduino nano generico Lejisan 2 699 12-07-2021, 01:25 PM
Último mensaje: asesorplaza1
  CONSULTA arduino nano electronica914 2 2,684 31-07-2019, 03:25 PM
Último mensaje: Iván
Pregunta Circuito de carga para Arduino Nano Electromecánico 8 3,617 18-06-2019, 03:29 PM
Último mensaje: Popeye