Go Down

Topic: RF Link problem (Read 913 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