Go Down

Topic: RF Link problem (Read 951 times) previous topic - next topic

xqtm

Hi,
i just bought a pair of RF link from sparkfun ( RX433 TX433), now i'm testing a quite simple scatch :

on Arduino 1 (pro mini 5v) :
Code: [Select]

void setup(){
Serial.begin(2400);
}

void loop(){
Serial.print("1");
}


on arduino 2 (MEGA)
Code: [Select]

void setup(){
  //2400 baud for the 434 model
  Serial1.begin(2400);
  Serial.begin(9600);
  Serial.println("connesso");
}
void loop(){

  if (Serial1.available() > 0) {
     Serial.println(Serial1.read());
   
  }
}



i'm expecting to have an output like this from mega


49
49
49
49
49

what i got ?
127
0
127
0
127
0
127
0
127
0
127



IDEA?HELP?EXPLANATION?

:D

even tested http://www.sparkfun.com/datasheets/RF/KLP_Walkthrough.pdf but they dont tell you what u have to read from the RX :D

CrashingDutchman

Google for the VirtualWire library. Take on of the examples from that library and it will/should work instantly.

Good luck!

xqtm

found the library, but i still got problems :S

i cant recive any message ... i'm trying this with rx on duemilanove pin 11, tx on mega pin 40 :
Code: [Select]

#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

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

void loop()
{
   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, true); // 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, false);
   }
}



and this on mega
Code: [Select]
#include <VirtualWire.h>

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

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

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

   digitalWrite(13, true); // 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, false);
   delay(200);
}


hari

My thoughts:

1. Have you tried NOT calling vw_set_ptt_inverted()?
I have used that RF pair successfully and I did not call vw_set_ptt_inverted() on either my transmitter nor on my receiver.

2. Have you tried NOT calling vw_set_tx_pin() on the transmitter and using the default pin 12?  I don't have a Mega, but I believe PWM (needed by VirtualWire) is only supported on pins 0 thru 13.

See PWM under Input and Output on this page:
http://arduino.cc/en/Main/ArduinoBoardMega



xqtm

yes i tried not calling the inverted function and no luck, and for the tx pin i thought he need a digital pin as in doc it said :

Code: [Select]
4.1vw_set_tx_pin
extern void vw_set_tx_pin(uint8_t pin);
Set the digital IO pin to use for transmit data. Defaults to 12.


so i placed my connection on digital IO pin 40. i didnt know that he need a PWM out, i thought the library would make the correct frequency and interput.

ill give it a try in a few minutes and let you know :)

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy