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