Calificación:
  • 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:


resim


Empleo estas placas para montar todo el circuito


resim





CONEXIONES

Lo conecto todo de la siguiente manera:

resim

resim

resim

resim

resim


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
Citar
#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
Citar
#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.
Citar
#4
El invento que monté yo, transmite/recibe en unos 4 metros atravesando una pared (con puerta). Con antenas.

Saludos.
Citar
#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
Citar


Temas similares...
Tema Autor Respuestas Vistas Último mensaje
  PROBLEMA CARGANDO DRIVERS ARDUINO NANO ELEGOO Alvaro Braca 9 429 04-09-2018, 03:15 AM
Último mensaje: youngsaturn
  Módulos Sonoff manejados con Virtuino ormaina 0 656 26-06-2017, 07:26 AM
Último mensaje: ormaina
  problema con shield para arduino para cargar el codigo homer32 6 1,586 17-10-2016, 07:49 AM
Último mensaje: homer32
  Problemas al cargar programa an arduina nano atmega328 ALTOVER 1 731 23-08-2016, 03:27 PM
Último mensaje: jagvalles
  [Problema] Arduino y servo antoniobeta 6 5,415 20-07-2016, 11:07 AM
Último mensaje: tazma