Problema con el transmisor / receptor de RF y VirtualWire

4

Estoy intentando obtener un par de transmisor / receptor de RF de digikey para trabajar con mi Arduino Uno / Mega ADK. Pero parece que ni el transmisor ni el receptor están trabajando con ninguno de mis Arduinos. Por el momento me he centrado en el transmisor por ahora (conectado a la UNO) ya que es más obvio saber cuándo está funcionando o no. Estoy usando Arduino IDE 1.0.1 con VirtualWire 1.9 (el que viene con 1.0.1 no se compiló).

Ahora, cuando entiendo el boceto correctamente, esto debería enviar "hola" en un bucle infinito y parpadear el LED a bordo cada vez. Cuando reinicio el Arduino UNO puedo ver el parpadeo del LED TX una vez durante un período muy corto de tiempo (que es la impresión de serie. Supongo) y después de eso, el LED integrado se ilumina constantemente. Sinceramente, no tengo idea de por qué esto no funciona. Todo me parece correcto.

El nombre del modelo del transmisor es QAM-TX2-433-ND, pero supongo que es más un código que un problema de hardware. Aunque aquí está la hoja de datos del transmisor, si es de alguna ayuda: enlace

Este es el código del ejemplo de transmisor de la biblioteca de VirtualWire

#include <VirtualWire.h>

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

    // Initialise the IO and ISR
    //vw_set_ptt_inverted(true); // Required for DR3100
    vw_setup(2000);  // Bits per sec
}

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

    digitalWrite(13, HIGH); // Flash a light to show transmitting
    vw_send((uint8_t *)msg, strlen(msg));
    vw_wait_tx(); // Wait until the whole message is gone
    digitalWrite(13, LOW);
    delay(200);
}

Y aquí hay dos fotos del gancho hasta el arduino:

EDITAR: Ok, entonces el problema del LED fue super simple, simplemente no especifiqué PIN13 como salida. Aunque todavía no sé si el transmisor está enviando algo en forma aguda, tengo mi ADK conectado al receptor y está ejecutando el ejemplo del receptor desde la biblioteca VirtualWire. Debería parpadear e imprimir el mensaje "hola" a través de una serie, pero no lo hace. Ahora es difícil decir si este es un problema de receptor o transmisor ahora.

Bosquejo del receptor:

#include <VirtualWire.h>

void setup()
{
    Serial.begin(9600); // Debugging only
    Serial.println("setup");
    pinMode(13,OUTPUT);
    // Initialise the IO and ISR
    //vw_set_ptt_inverted(true); // Required for DR3100
    vw_setup(2000);  // Bits per sec

    vw_rx_start();       // Start the receiver PLL running
}

void loop()
{
    //Serial.println("Recieving...");
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // Non-blocking
    {
    int i;

        digitalWrite(13, HIGH); // Flash a light to show received good message
    // Message with a good checksum received, dump it.
    Serial.print("Got: ");

    for (i = 0; i < buflen; i++)
    {
        Serial.print(buf[i], HEX);
        Serial.print(" ");
    }
    Serial.println("");
        digitalWrite(13, LOW);
    }
}

Eliminar la declaración if (vw_get_message (buf, & buflen)) me da mucha basura en el monitor de serie, por lo que puedo recibir al menos algo.

Y aquí, nuevamente, dos imágenes del circuito (se olvidó de insertar el cable de datos para la foto, se conectó al segundo pin de la izquierda al receptor y al pin 0 en el arduino):

Y la hoja de datos: enlace

    
pregunta PTS

1 respuesta

5

El problema parece ser bastante banal.

Olvidaste establecer correctamente:

pinMode(13,OUTPUT);

en la función setup() .

Por cierto, su código debería estar funcionando, con la excepción de que el estado del LED probablemente sea constante. Debería estar transmitiendo de todos modos.

Edición adicional:

Bien, he buscado un poco más en la biblioteca virtualwire y creo que veo el problema

Principalmente, la configuración predeterminada para el pin de TX de la biblioteca VirtualWire es el pin 12.

Básicamente, has conectado el transmisor al pin incorrecto (en las imágenes, lo tienes conectado al pin 1).

Agregar un LED de actividad de TX al módulo:

Tenga en cuenta que esto solo funcionará correctamente con vw_set_ptt_inverted(true); comentado.

    
respondido por el Connor Wolf

Lea otras preguntas en las etiquetas