Quiero transmitir una cadena de datos utilizando Arduino y un conjunto emisor receptor en 433 MHz Realmente es una trama de GPS determinada, pero para simplificar, la defino como cadena.
Una primera intentona ha sido con el modulo baratito de 433 (emisor y receptor) para Arduino; ahí va todo bien, dio problemas de velocidad de transmisión, pero corregido. Recibe los caracteres que emite.
Estos módulos tienen alimentación y una entrada/salida de datos, no dan problema.
Para pasar a una distancia de transmisión teórica de 2km, (yo necesito aproximadamente 1,5km), he comprado el modelo LONG RANGE, emisor PCF 20, y receptor R08A. Estos modulos llevan un encoder/decoder basado en un chip PT2272
El código está basado en la librería Virtual Wire. Pero la entrada de datos al emisor y la salida en el receptor vienen en 4 pines D0 D1 D2 D3. (Si he entendido bien la data sheet en mi “perfecto ingles”, por ahí se activan niveles lógicos, High=1 Low=0 que activan puertas lógicas)
Pero quiero transmitir una cadena de datos!!! He probado con todos los pines, el emisor me dice transmitiendo datos; el receptor me dice listo para recibir… y no recibe nada que yo pueda leer. He puesto interrupciones en el código y puedo ver en el monitor serial que el sketch corre perfectamente, simplemente no recibe nada.
Como puedo transmitir mi cadena de caracteres? Estoy perdido y no encuentro nada en la red … Muchas gracias
Buenos dias
Perdon me faltó por enviar los codigos
CODIGO PARA EMISOR
#include <VirtualWire.h>
void setup()
{
Serial.begin(9600);
Serial.println("Emisor en espera");
// Se inicializa el RF
vw_setup(2000); // velocidad: Bits per segundo
vw_set_tx_pin(12); //Pin1 2 como salida para el RF
vw_tx_start(); //Se inicia como transmisor
}
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);
}
CODIGO PARA RECEPTOR
#include <VirtualWire.h>
void setup()
{
Serial.begin(9600); // Debugging only
Serial.println("Receptor en espera");
// Se inicializa el RF
vw_setup(2000); // velocidad: Bits per segundo
vw_set_rx_pin(12); //Pin 12 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*);*
}
Serial.println("");
- digitalWrite(13, false);*
- }*
}
Usa tags para insertar códigos, editas, seleccionas y luego </>
//CODIGO PARA EMISOR
#include <VirtualWire.h>
void setup()
{
Serial.begin(9600);
Serial.println("Emisor en espera");
// Se inicializa el RF
vw_setup(2000); // velocidad: Bits per segundo
vw_set_tx_pin(12); //Pin 12 como salida para el RF
}
void loop()
{
const char *msg = "Transmitiendo a todos";
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);
}