Se afișează postările cu eticheta 433MHz. Afișați toate postările
Se afișează postările cu eticheta 433MHz. Afișați toate postările

joi, 10 octombrie 2013

Module de transmisie/receptie radio si... Arduino (V)

2 temperaturi citite cu LM335 transmise prin radio la un afisaj LCD cu 16 coloane si 2 randuri conectat clasic la Arduino


   Deoarece m-am gandit ca nu toata lumea foloseste comanda afisajului LCD pe 2 fire (i2c), adica nu are acea interfata, m-am apucat sa conectez afisajul clasic, cu 6 fire utile (si 2 alimentare):
   Schema de conectare a modulului de emisie si a celor 2 senzori de temperatura LM335Z la placa Arduino este aceeasi ca cea din articolul anterior:
   La partea de receptor, se schimba modul de conectare:


   Initial, am incercat sa folosesc configuratia din exemplele Arduino, adica asta:
si sa conectez receptorul la pinul 7.. am constatat ca se bloc ca activare apartii de receptor, am conectat si la alti pini si aceeasi eroare, asa ca m-am ami uitat pe documentatia librariei WirtualWre (vezi explicatiile de la skyduino.wordpress.com si mi-am dat seama ca foloseam pinul D11 (digital 11), asa ca am modificat configuratia cum e prezentat mai sus...
   Sketch-ul pentru receptor devine:
  
/*.............................................................
Sending Multiple Variables Using VirtualWire. Receiver
Author: Rodrigo Mompo Redoli
For http://controlrobotics.rodrigomompo.com
adapted sketch by niq_ro (Nicu FLORICA) from http://nicuflorica.blogspot.com
version 5.1
..............................................................*/

#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
/*                                    -------------------
                                      |  LCD  | Arduino |
                                      -------------------
 LCD RS pin to digital pin 7          |  RS   |   D7    |
 LCD Enable pin to digital pin 6      |  E    |   D6    |
 LCD D4 pin to digital pin 5          |  D4   |   D5    |
 LCD D5 pin to digital pin 4          |  D5   |   D4    |
 LCD D6 pin to digital pin 3          |  D6   |   D3    |
 LCD D7 pin to digital pin 2          |  D7   |   D2    |
 LCD R/W pin to ground                |  R/W  |   GND   |
                                      -------------------
*/
#include <VirtualWire.h> // use Virtual library for decode signal from Rx module
#include <Time.h> // use Time library for control the time between data from receiver

// Sensors 
int Sensor1Data;
int Sensor2Data;
int t1, t2;
float t10, t20;
 
char StringReceived[21]; 

// other  
int led = 13; //pin for LED
int j=1; // count the messages
int timp1, timp2, dt; // times  

void setup() {

  lcd.begin(16, 2); // set up the LCD's number of columns and rows: 
  
   // set the time for record time and value
   setTime(0,0,0,25,9,13); // set time to Saturday 8:29:00am Jan 1 2011

pinMode(led, OUTPUT); 
 lcd.print("Arduino is ready"); // print a text
// VirtualWire 
    // Bits per sec
    vw_setup(2000);
    // set pin for connect receiver module 
    vw_set_rx_pin(11);  
    // Start the receiver PLL running
    vw_rx_start();
    
 delay (500);
 lcd.clear(); // clear the screen
 lcd.setCursor(1, 0); // put cursor at colon 2 and row 0 = left/up
 lcd.print("niq_ro's rx is"); // print a text
 lcd.setCursor(1, 1); // put cursor at colon 0 and row 0 = left/down
 lcd.print("ready on 433MHz"); // print a text
 delay (2000);
 lcd.clear(); // clear the screen
 lcd.setCursor(14, 0); 
 lcd.print("0/");
timp2 = 0; 
} // END void setup
  
void loop(){
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;
      
//Taking the data from the control base
    if (vw_get_message(buf, &buflen)) 
    {
      digitalWrite(led, HIGH);
// put the data number from begin
   lcd.clear(); // clear the screen
if (j<10) lcd.setCursor(14, 0); // put cursor at colon 14 and row 1
if ((j>=10) and (j<100)) lcd.setCursor(13, 0); // put cursor at colon 13 and row 1
if ((j>=100) and (j<1000)) lcd.setCursor(12, 0); // put cursor at colon 12 and row 1
if ((j>=1000) and (j<10000)) lcd.setCursor(11, 0); // put cursor at colon 11 and row 1  
   lcd.print(j);
   lcd.print("/");
   
 int i;
        // Message with a good checksum received, dump it. 
        for (i = 0; i < buflen; i++)
 {            
          // Fill Sensor1CharMsg Char array with corresponding 
          // chars from buffer.   
          StringReceived[i] = char(buf[i]);
     //     Serial.print(StringReceived[i]);
 }
  
      sscanf(StringReceived, "%d,%d",&Sensor1Data, &Sensor2Data); // Converts a string to an array
digitalWrite(led, LOW);        
t1 = Sensor1Data;
t2 = Sensor2Data;

t10 = (100.0*(5.0*t1/1023.0-2.980)+25.0)-1.0;
t20 = (100.0*(5.0*t2/1023.0-2.980)+25.0);


    lcd.setCursor(0, 0);
    lcd.print("t1="); 
    if (t10<10) lcd.print(" "); 
    if (t10>0.0) lcd.print("+"); 
    lcd.print(t10,1);
    lcd.write(0b11011111);
    lcd.print("C");
    lcd.setCursor(0, 1);
    lcd.print("t2="); 
    if (t20<10) lcd.print(" "); 
    if (t20>0.0) lcd.print("+"); 
    lcd.print(t20,1);
    lcd.write(0b11011111);
    lcd.print("C");


timp2 = timp1; // new time replace olt time;
j=j++; // count the message         

 memset( StringReceived, 0, sizeof( StringReceived));// This line is for reset the StringReceived

}


// calculate time from last data received
timp1 = hour()*3600 + minute()*60 + second();
dt = timp1-timp2;

if (dt<10) lcd.setCursor(14, 1); // put cursor at colon 14 and row 1
if ((dt>=10) and (dt<100)) lcd.setCursor(13, 1); // put cursor at colon 13 and row 1
if ((dt>=100) and (dt<1000)) lcd.setCursor(12, 1); // put cursor at colon 12 and row 1
if ((dt>=1000) and (dt<10000)) lcd.setCursor(11, 1); // put cursor at colon 11 and row 1
  lcd.print(dt);
  lcd.print("s");
}
   
   Am facut is un mic filmulet, numit two LM335 temperature transmission to a display wirelessly using Arduino (II):


miercuri, 9 octombrie 2013

Module de transmisie/receptie radio si... Arduino (IV)

2 temperaturi citite cu LM335 transmise prin radio la un afisaj LCD cu 16 coloane si 2 randuri conectat prin adaptor i2c la Arduino

   Fata de precedentele articole, voi conecta 2 senzori de temperatura LM335 (pe care i-am prezentat aici) la o placa Arduino si sa transmit datele cu ajutorul unui modul de emisie pe frecventa de 433MHz, apoi voi receptiona datele cu ajutorul altei placi Arduino si voi afisa datele pe un ecran LCD cu 16 coloane si 2 randuri, conectat prin adaptor i2c. 
   Schema de conectare este:
   Un senzor este conectat la intrarea analogica 0, iar celalalt la intrarea analogica 1. Pentru a conecta usor si emitatorul si senzorii, am facut un mic montaj, un "brick":
   Poate parea ciudata schema asta, dar in mare are o bareta mama cu 8 pini, o bareta tata cu 2 pini pentru masa (gnd), o bareta tata cu 3 pini pentru +5V, 2 senzori LM335, unul conectat prin cablu de 1m, iar celalalt pus in bareta mama (pentru a putea testa si alte LM-uri 335)...
   Modulul conectat la placa Arduiono arata asa:
   Am scos un senzor pe fereastra si am alimentat placa Arduino cu un alimentator extern (nu apare in poza):
   Receptorul cu Arduino si afisaj LCD cu adaptor i2c:
   Am facut un filmulet explicativ, care se numeste two LM335 temperature transmission to a display wirelessly using Arduino (I):

   Programul (sketch-ul) pentru emitator este: 
/*.............................................................
Sending Multiple Variables Using VirtualWire. Transmitter
Author: Rodrigo Mompo Redoli
For controlrobotics.rodrigomompo.com
adapted sketch by niq_ro (Nicu FLORICA) from http://nicuflorica.blogspot.com  
..............................................................*/
#include <VirtualWire.h>

int t10 = 0; // initial temperature no.1 value;
int t20 = 0; // initial temperature no.2 value;
int t1 = 0.00; // initial calculated temperature no.1 value; 
int t2 = 0.00; // initial calculated temperature no.2 value; 

int temperaturePin1 = A0; // output from first LM335 is put at analog input no.0
int temperaturePin2 = A1; // output from second LM335 is put at analog input no.1

int ledPin = 13;
char Sensor1CharMsg[21];// The string that we are going to send trought rf 
 
void setup() {

 
 // LED 
 pinMode(ledPin,OUTPUT);
  
 
 // VirtualWire setup
 vw_setup(2000); // Bits per sec
 vw_set_tx_pin(12);// Set the Tx pin. Default is 12
 
}
 
void loop() {
  digitalWrite(ledPin, HIGH);  

  // Read and store Sensor Data

int t11 = 0;
int t21 = 0;
  for (int x=1; x <= 5; x++)
  {
// calculate the value  
t1 = analogRead(temperaturePin1); // read value from temperature from first sensor (LM335);
// t10 = 100.0*(5.0*t1/1023.0-2.980)+25.0;
//t11 = t10 + t1;
t11 = t11 + t1;

t2 = analogRead(temperaturePin2); // read value from temperature from second sensor (LM335);
//t20 = 100.0*(5.0*t1/1023.0-2.980)+25.0;
//t21 = t20 + t2;
t21 = t21 + t2;

delay (200);
  }   

int Sensor1Data = t11/5.0 ; // average and corrected temperature  
int Sensor2Data = t21/5.0;  // average and corrected temperature  

   
  sprintf(Sensor1CharMsg, "%d,%d", Sensor1Data, Sensor2Data);
  
 // Turn on a light to show transmitting
 vw_send((uint8_t *)Sensor1CharMsg, strlen(Sensor1CharMsg));
 vw_wait_tx(); // Wait until the whole message is gone

 // Turn off a light after transmission
 delay(100);
 digitalWrite(ledPin, LOW); 
 delay(3000);
 }
iar sketch-ul de receptor este:
/*.............................................................
Sending Multiple Variables Using VirtualWire. Receiver
Author: Rodrigo Mompo Redoli
For http://controlrobotics.rodrigomompo.com
adapted sketch by niq_ro (Nicu FLORICA) from http://nicuflorica.blogspot.com
..............................................................*/

#include <Wire.h> // use Wire library for protocol i2c (A4 = SDA & A5 = SCL)
#include <LiquidCrystal_I2C.h> // use LiquidCrystal_I2C library for control LCD on i2c protocol
LiquidCrystal_I2C lcd(0x20,16,2); // 0x20 is adresss for LCC 16x2

#include <VirtualWire.h> // use Virtual library for decode signal from Rx module
#include <Time.h> // use Time library for control the time between data from receiver

// Sensors 
int Sensor1Data;
int Sensor2Data;
int t1, t2;
float t10, t20;
 
char StringReceived[21]; 

// other  
int led = 13; //pin for LED
int j=1; // count the messages
int timp1, timp2, dt; // times  

void setup() {
  lcd.init(); // initialing the LCD display
  lcd.backlight(); //backlight is now ON
  lcd.begin(16, 2); // set up the LCD's number of columns and rows: 
  
   // set the time for record time and value
   setTime(0,0,0,25,9,13); // set time to Saturday 8:29:00am Jan 1 2011

pinMode(led, OUTPUT); 

// VirtualWire 
    // Bits per sec
    vw_setup(2000);
    // set pin for connect receiver module 
    vw_set_rx_pin(7);  
    // Start the receiver PLL running
    vw_rx_start();       

 lcd.setCursor(1, 0); // put cursor at colon 2 and row 0 = left/up
 lcd.print("niq_ro's rx is"); // print a text
 lcd.setCursor(1, 1); // put cursor at colon 0 and row 0 = left/down
 lcd.print("ready on 433MHz"); // print a text
 delay (2000);
 lcd.clear(); // clear the screen
 lcd.setCursor(14, 0); 
 lcd.print("0/");
timp2 = 0; 
} // END void setup
  
void loop(){
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;
      
//Taking the data from the control base
    if (vw_get_message(buf, &buflen)) 
    {
      digitalWrite(led, HIGH);
// put the data number from begin
   lcd.clear(); // clear the screen
if (j<10) lcd.setCursor(14, 0); // put cursor at colon 14 and row 1
if ((j>=10) and (j<100)) lcd.setCursor(13, 0); // put cursor at colon 13 and row 1
if ((j>=100) and (j<1000)) lcd.setCursor(12, 0); // put cursor at colon 12 and row 1
if ((j>=1000) and (j<10000)) lcd.setCursor(11, 0); // put cursor at colon 11 and row 1  
   lcd.print(j);
   lcd.print("/");
   
 int i;
        // Message with a good checksum received, dump it. 
        for (i = 0; i < buflen; i++)
 {            
          // Fill Sensor1CharMsg Char array with corresponding 
          // chars from buffer.   
          StringReceived[i] = char(buf[i]);
     //     Serial.print(StringReceived[i]);
 }
  
      sscanf(StringReceived, "%d,%d",&Sensor1Data, &Sensor2Data); // Converts a string to an array
digitalWrite(led, LOW);        
t1 = Sensor1Data;
t2 = Sensor2Data;

t10 = (100.0*(5.0*t1/1023.0-2.980)+25.0)-1.0;
t20 = (100.0*(5.0*t2/1023.0-2.980)+25.0);


    lcd.setCursor(0, 0);
    lcd.print("t1="); 
    if (t10<10) lcd.print(" "); 
    if (t10>0.0) lcd.print("+"); 
    lcd.print(t10,1);
    lcd.write(0b11011111);
    lcd.print("C");
    lcd.setCursor(0, 1);
    lcd.print("t2="); 
    if (t20<10) lcd.print(" "); 
    if (t20>0.0) lcd.print("+"); 
    lcd.print(t20,1);
    lcd.write(0b11011111);
    lcd.print("C");


timp2 = timp1; // new time replace olt time;
j=j++; // count the message         

 memset( StringReceived, 0, sizeof( StringReceived));// This line is for reset the StringReceived

}


// calculate time from last data received
timp1 = hour()*3600 + minute()*60 + second();
dt = timp1-timp2;

if (dt<10) lcd.setCursor(14, 1); // put cursor at colon 14 and row 1
if ((dt>=10) and (dt<100)) lcd.setCursor(13, 1); // put cursor at colon 13 and row 1
if ((dt>=100) and (dt<1000)) lcd.setCursor(12, 1); // put cursor at colon 12 and row 1
if ((dt>=1000) and (dt<10000)) lcd.setCursor(11, 1); // put cursor at colon 11 and row 1
  lcd.print(dt);
  lcd.print("s");
}

   - va urma -

marți, 1 octombrie 2013

Module de transmisie/receptie radio si... Arduino (II)

date numerice transmise prin radio memorate pe card SD folosind 2 placi Arduino

   Fata de primul articol, am conectat si un modul de scriere/citire pe card SD pastrand partea cu 4 valori transmise de catre emitator:
   Pe ecranul de monitorizare seriala avem informatiile urmatoare:
iar pe cardul SD in documentul fisier.txt sunt scrise aceleasi informatii...

   Sketch-ul de receptor este:
/*.............................................................
Sending Multiple Variables Using VirtualWire. Receiver
Author: Rodrigo Mompo Redoli
For http://controlrobotics.rodrigomompo.com

The SD circuit:
 * SD card attached to SPI bus as follows:
 ** MOSI - pin 11
 ** MISO - pin 12
 ** CLK - pin 13
 ** CS - pin 4

 created   Nov 2010
 by David A. Mellis
 modified 9 Apr 2012
 by Tom Igoe

alse, I use SD example from http://www.roroid.ro
adapted sketch by niq_ro (Nicu FLORICA) from http://nicuflorica.blogspot.com
..............................................................*/

#include <VirtualWire.h> // use Virtual library for decode signal from Rx module
#include <Time.h> // use Time library for control the time between data from receiver
#include <SD.h> // use SD library
File fisier;

// Sensors 
int Sensor1Data;
int Sensor2Data;
int Sensor3Data;
int Sensor4Data;

int suma;
  
char StringReceived[22]; 

// other  
int led = 13; //pin for LED
int j=1; // count the messages
  
void setup() {
  // set the time for record time and value
   setTime(0,0,0,25,9,13); // set time to Saturday 8:29:00am Jan 1 2011

pinMode(led, OUTPUT); 

// VirtualWire 
    // Initialise the IO and ISR
    // Required for DR3100
   
    // Bits per sec
    vw_setup(2000);
  
    // set pin for connect receiver module 
    vw_set_rx_pin(7);  
      
    // Start the receiver PLL running
    vw_rx_start();       

Serial.begin(9600);
Serial.println("Receptorul lui niq_ro e pregatit sa primeasca mesaje, "); 
Serial.print("pregatesc si cardul de memorie SD...");
  // On the Ethernet Shield, CS is pin 4. It's set as an output by default.
  // Note that even if it's not used as the CS pin, the hardware SS pin 
  // (10 on most Arduino boards, 53 on the Mega) must be left as an output 
  // or the SD library functions will not work. 
  pinMode(10, OUTPUT);

 if (!SD.begin(4)) {
    Serial.println("dar a aparut o eroare...");
    return;
  }
  Serial.println("care este si el gata.");

   File fisier = SD.open("niq_ro.txt", FILE_WRITE); // open a new file
if (fisier) { //daca fisierul este disponibil vom scrie in el
    fisier.println("www.tehnic.go.ro");
    fisier.println("o noua sesiune de teste de receptie cu module RF");
    fisier.close();
   Serial.println("www.tehnic.go.ro");
   Serial.println("o noua sesiune de teste de receptie cu module RF");
   Serial.println("---------------------------------------------------");
  }  
  // if is an error
  else {
    Serial.println("Nu am putut deschide fisierul niq_ro.txt");
  }

  
} // END void setup
  
void loop(){
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;
      
//Taking the data from the control base
    if (vw_get_message(buf, &buflen)) 
    {
      digitalWrite(led, HIGH);
Serial.print("Pachet date nr. "); // print a message
Serial.print(j); // number of message
Serial.print(": ");
 int i;
        // Message with a good checksum received, dump it. 
        for (i = 0; i < buflen; i++)
 {            
          // Fill Sensor1CharMsg Char array with corresponding 
          // chars from buffer.   
          StringReceived[i] = char(buf[i]);
     //     Serial.print(StringReceived[i]);
 }
  
      sscanf(StringReceived, "%d,%d,%d,%d,%d,%d",&Sensor1Data, &Sensor2Data,&Sensor3Data,&Sensor4Data); // Converts a string to an array
//Serial.print();
  if (hour()<10) Serial.print("0");
  Serial.print(hour());
  Serial.print(":");
  if (minute()<10) Serial.print("0");
  Serial.print(minute());
  Serial.print(":");
  if (second()<10) Serial.print("0");
  Serial.print(second());
Serial.print(" : ");
digitalWrite(led, LOW);        
Serial.print(Sensor1Data);
Serial.print(" + ");
Serial.print(Sensor2Data);
Serial.print(" + ");
Serial.print(Sensor3Data);
Serial.print(" + ");
Serial.print(Sensor4Data);
Serial.print(" = ");
suma = Sensor1Data + Sensor2Data + Sensor3Data + Sensor4Data;
Serial.println(suma);


// write on SD card
   
  if (hour()<10) fisier.print("0");
  fisier.print(hour());
  fisier.print(":");
  if (minute()<10) fisier.print("0");
  fisier.print(minute());
  fisier.print(":");
  if (second()<10) fisier.print("0");
  fisier.print(second());
fisier.print(" : ");
//digitalWrite(led, LOW);        
fisier.print(Sensor1Data);
fisier.print(" + ");
fisier.print(Sensor2Data);
fisier.print(" + ");
fisier.print(Sensor3Data);
fisier.print(" + ");
fisier.print(Sensor4Data);
fisier.print(" = ");
fisier.println(suma);

 
        // Turn off light to and await next message 
j=j++; // count the message         
    }

 memset( StringReceived, 0, sizeof( StringReceived));// This line is for reset the StringReceived
}
   Sketch-ul de emitator este ultimul din prima parte.
   Pentru a putea conecta modulul SD, care folosea pinul D11, a trebuit sa conectez receptorul la alt pin liber si am ales pe D7.
   Mesajul de pe monitorizarea seriala, respectiv din fisierul text creat sunt:




miercuri, 25 septembrie 2013

Module de transmisie/receptie radio si... Arduino

    Desi am achizitionat de ceva timp o pereche de emitator/receptor pentru frecventa de 433MHz, abia acum am reusit sa fac niste teste.
   Emitatorul are codul MX-FS-03V, iar receptorul MX-05...
   Libraria care se foloseste uzual se numeste VirtualWire.
Eu m-am inspirat din 2 articol despre care unul se gaseste la pjrc.com:
iar celalalt la buildcircuit.com.
   Am folosit 2 placi Arduino, una chinezeasca pe post de receptor si una facuta de mine (Arduiniq sau Arduino de casa), pe post de emitator:
   Schema de conectare este:
   Trebuie retinut ca placa care este conectata cu modul de emisie transmite pe pinul digital 12 (D12), iar cea care este conectata cu modulul receptor primeste datele pe pinul digital 11 (D11).
   In primele teste am costatat ca modulele fara antena pot comunica pe distanta foarte mica (de ordinul centimetrilor), asa ca am improvizat cate o antena din agrafe de birou, distanta de comunicare stabila crescand la cca. 9m:
   Pentru emitator am folosit sketch-ul:
 /*  
 SimpleSend  
 This sketch transmits a short text message using the VirtualWire library  
 connect the Transmitter data pin to Arduino pin 12  
 See more at: http://www.buildcircuit.com/how-to-use-rf-module-with-arduino/#sthash.cUJ8ndxT.dpuf  
 adapted sketch by niq_ro from http://nicuflorica.blogspot.com  
 */  
 #include <VirtualWire.h>  
 const int led_pin = 13;  
 void setup()  
 {  
 // Initialize the IO and ISR  
 vw_setup(2000); // Bits per sec  
 }  
 void loop()  
 {  
 digitalWrite(led_pin, HIGH); // Flash a light to show transmitting  
 send("Salut, Nicu!");  
 delay(1000);  
 }  
 void send (char *message)  
 {  
 vw_send((uint8_t *)message, strlen(message));  
 vw_wait_tx(); // Wait until the whole message is gone  
 digitalWrite(led_pin, LOW); // Flash a light to show transmitting  
 }  

iar pentru receptor:
 /*  
 SimpleReceive  
 This sketch displays text strings received using VirtualWire  
 Connect the Receiver data pin to Arduino pin 11  
 //- See more at: http://www.buildcircuit.com/how-to-use-rf-module-with-arduino/#sthash.cUJ8ndxT.dpuf  
 // modified sketch by niq_ro ( http://nicuflorica.blogspot.com )  
 */  
 #include <VirtualWire.h>  
 byte message[VW_MAX_MESSAGE_LEN]; // a buffer to store the incoming messages  
 byte messageLength = VW_MAX_MESSAGE_LEN; // the size of the message  
 void setup()  
 {  
 Serial.begin(9600);  
 Serial.println("Receptorul e pregatit sa primeasca mesaje...");  
 // Initialize the IO and ISR  
 vw_setup(2000); // Bits per sec  
 vw_rx_start(); // Start the receiver  
 }  
 void loop()  
 {  
 if (vw_get_message(message, &messageLength)) // Non-blocking  
 {  
 Serial.print("Am receptionat mesajul: ");  
 for (int i = 0; i < messageLength; i++)  
 {  
 Serial.write(message[i]);  
 }  
 Serial.println();  
 }  
 }  

26.09.2013
   Am gasit un articol frantuzesc bun la skyduino.wordpress.com despre transmisia care foloseste aceeasi librarie.
   Dupa ce am inceput sa ma joc cu textul de transmis, pana la maximul din documentatie (27 caractere), am constatat ca apar probleme de transmisie... aparand erori, de fapt trunchieri ale mesajului.

 

 
 
 
   Am conectat si direct modulele prin fire (masa si firul de transmisie/receptie) pentru a depista problema...
   Am ajuns la concluzia ca textele de 5-8 caractere sunt transmise si receptionate bine, dar din cand in cand e bine sa opresc partea de receptie si s-o repornesc dupa 25 de mesaje, asa cam sketch-ul arata cam asa:
 /*  
 SimpleReceive  
 This sketch displays text strings received using VirtualWire  
 Connect the Receiver data pin to Arduino pin 11  
 //- See more at: http://www.buildcircuit.com/how-to-use-rf-module-with-arduino/#sthash.cUJ8ndxT.dpuf  
 // modified sketch by niq_ro ( http://nicuflorica.blogspot.com )  
 */  
 #include <VirtualWire.h>  
 uint8_t message[VW_MAX_MESSAGE_LEN]; // a buffer to store the incoming messages  
 // byte message[VW_MAX_MESSAGE_LEN]; // a buffer to store the incoming messages  
 uint8_t messageLength = VW_MAX_MESSAGE_LEN; // the size of the message  
 //byte messageLength = VW_MAX_MESSAGE_LEN; // the size of the message  
 int led = 13;  
 int j=0; // count received message;  
   
 void setup()  
 {  
 pinMode(led, OUTPUT);   
 Serial.begin(9600);  
 Serial.println("Receptorul e pregatit sa primeasca mesaje...");  
 // Initialize the IO and ISR  
 vw_setup(2000); // Bits per sec  
 vw_rx_start(); // Start the receiver  
 }  
 void(* resetFunc) (void) = 0; //declare reset function @ address 0  
      
 void loop()  
 {  
 if (vw_wait_rx_max(200)) // Si un message est reçu dans les 200ms qui viennent  
   {  
 if (vw_get_message(message, &messageLength)) // Non-blocking  
 {  
 vw_wait_rx();  
 digitalWrite(led, HIGH);    
 j=j++;  
 Serial.print("Am receptionat mesajul, ");  
 Serial.print(j);  
 Serial.print(" din ");  
 Serial.print(messageLength);  
 Serial.print("/");  
 Serial.print(VW_MAX_MESSAGE_LEN);  
 Serial.print(" caractere: ");  
 for (int i = 0; i < messageLength; i++)  
 {  
 Serial.write(message[i]);  
 }  
 Serial.println();  
 digitalWrite(led, LOW);  
   
 if (j>25) // if received 25 messages, stop the receiver  
 {  
 vw_rx_stop(); // Stop the receiver  
 //delay (500);  
 //Serial.end();  
 //Serial.begin(9600);  
 Serial.println("Receptorul e pregatit iar sa primeasca mesaje...");  
 vw_setup(2000); // Bits per sec  
 vw_rx_start(); // Start the receiver  
 
 j=0;  
    }  
   }  
  }  
 }  
   

 
   Am adaugat si o resetare automanata dupa 150 de mesaje pentru a elimina cat mai mult posibilitatea primirii de mesaje false:
 /*  
 SimpleReceive  
 This sketch displays text strings received using VirtualWire  
 Connect the Receiver data pin to Arduino pin 11  
 //- See more at: http://www.buildcircuit.com/how-to-use-rf-module-with-arduino/#sthash.cUJ8ndxT.dpuf  
 // modified sketch by niq_ro ( http://nicuflorica.blogspot.com )  
 */  
 #include <VirtualWire.h>  
 uint8_t message[VW_MAX_MESSAGE_LEN]; // a buffer to store the incoming messages  
 // byte message[VW_MAX_MESSAGE_LEN]; // a buffer to store the incoming messages  
 uint8_t messageLength = VW_MAX_MESSAGE_LEN; // the size of the message  
 //byte messageLength = VW_MAX_MESSAGE_LEN; // the size of the message  
 int led = 13;  
 int j=0; // count received message;  
 int k=0; // count received message for master reset;  
   
 void setup()  
 {  
 pinMode(led, OUTPUT);   
 Serial.begin(9600);  
 Serial.println("Receptorul e pregatit sa primeasca mesaje...");  
 // Initialize the IO and ISR  
 vw_setup(2000); // Bits per sec  
 vw_rx_start(); // Start the receiver  
 }  
 void(* resetFunc) (void) = 0; //declare reset function @ address 0  
   
   
 void loop()  
 {  
 if (vw_wait_rx_max(200)) // Si un message est reçu dans les 200ms qui viennent  
   {  
 if (vw_get_message(message, &messageLength)) // Non-blocking  
 {  
 vw_wait_rx();  
 digitalWrite(led, HIGH);    
 j=j++;  
 k=k++;  
 Serial.print("Am receptionat mesajul, ");  
 Serial.print(k);  
 Serial.print(" din ");  
 Serial.print(messageLength);  
 Serial.print("/");  
 Serial.print(VW_MAX_MESSAGE_LEN);  
 Serial.print(" caractere: ");  
 for (int i = 0; i < messageLength; i++)  
 {  
 Serial.write(message[i]);  
 }  
 Serial.println();  
 digitalWrite(led, LOW);  
   
 if (j>25) // if received 25 messages, stop the receiver  
 {  
 vw_rx_stop(); // Stop the receiver  
 //delay (500);  
 //Serial.end();  
 //Serial.begin(9600);  
 Serial.println("Receptorul e pregatit iar sa primeasca mesaje...");  
 vw_setup(2000); // Bits per sec  
 vw_rx_start(); // Start the receiver  
   
 j=0;  
 }  
 if (k>150)  
 {  
 Serial.println("resetting");  
  resetFunc(); //call reset  
  /*  
  http://www.instructables.com/id/two-ways-to-reset-arduino-in-software/step2/using-just-software/  
  */  
 }  
   
 }  
   }  
 }  
   
   Distanta maxima de comunicare este de cca. 16m, pentru transmisia la 2000 bps intr-o cladire pe structura metalica si pereti din rigips si BCA... destul de putin fata de cat se prezinta pe net... 

   Trebuie sa incerc si varianta transmisiei seriale cum e prezentat la hobby robotics:
sau la Sparkfun...
 /*  
 * Simple Transmitter Code  
 * This code simply counts up to 255  
 * over and over  
 * (TX out of Arduino is Digital Pin 1)  
 */  
 byte counter;  
 void setup(){  
 //2400 baud for the 434 model  
 Serial.begin(2400);  
 counter = 0;  
 }  
 void loop(){  
 //send out to transmitter  
 Serial.print(counter);  
 counter++;  
 delay(10);  
 }  
respectiv:
 /*  
 * Simple Receiver Code  
 * (TX out of Arduino is Digital Pin 1)  
 * (RX into Arduino is Digital Pin 0)  
 */  
 int incomingByte = 0;  
 void setup(){  
 //2400 baud for the 434 model  
 Serial.begin(2400);  
 }  
 void loop(){  
 // read in values, debug to computer  
 if (Serial.available() > 0) {  
 incomingByte = Serial.read();  
 Serial.println(incomingByte, DEC);  
 }  
 incomingByte = 0;  
 }  
    Am testat aceste 2 sketch-uri, prin care Arduino de casa transmite necodat numere de la 0 la 255 din cand in cand pe Tx (am modificat sa transmita mai rar), iar Arduino Uno primeste pe pinul Rx si am constatat ca primesc numere mereau, am deconectat emitatorul meu si numerele aleatoare sunt primite, asa am realizat ca si ce am testat eu intial este influentat de "celalalt" emitatorul... care nu-i al meu... 

27.09.2013
   Rasfoind forumul Arduino am regatit o discutie despre transmiterea, respectiv receptia mai multor valori pe unde radio, iar de acolo se facea trimitere la Control Robotics... mentionez ca se foloseste tot libraria Wirtualwire.
 
   Am adaptat un pic sketch-urile de acolo pentru a aprinde LED-urile de la D13 cand transmit, respectiv primesc date, iar datele de transmitere sunt alese aleator de mine (0, 1023, 255, 725).

 /*.............................................................  
 Sending Multiple Variables Using VirtualWire. Transmitter  
 Author: Rodrigo Mompo Redoli  
 For controlrobotics.rodrigomompo.com  
 ..............................................................*/  
 #include <VirtualWire.h>  
 int Sensor1Pin = A1;// The pins were sensor are attached  
 int Sensor2Pin = A2;  
 int Sensor3Pin = A3;  
 int Sensor4Pin = A4;   
 int ledPin = 13;  
 int Sensor1Data;// The variable were the data from each sensor  
 int Sensor2Data;// will be stored   
 int Sensor3Data;  
 int Sensor4Data;  
 char Sensor1CharMsg[21];// The string that we are going to send trought rf   
 void setup() {  
  // LED   
  pinMode(ledPin,OUTPUT);  
  // Sensor(s)  
  pinMode(Sensor1Pin,INPUT);  
  pinMode(Sensor2Pin,INPUT);  
  pinMode(Sensor3Pin,INPUT);  
  pinMode(Sensor4Pin,INPUT);  
  // VirtualWire setup  
  vw_setup(2000); // Bits per sec  
  vw_set_tx_pin(12);// Set the Tx pin. Default is 12  
 }  
 void loop() {  
  // Read and store Sensor Data or put a predefined values (min=0, max=1023, 255, 725)
  /*  
  Sensor1Data = analogRead(Sensor1Pin);  
  Sensor2Data = analogRead(Sensor2Pin);  
  Sensor3Data = analogRead(Sensor3Pin);  
  Sensor4Data = analogRead(Sensor4Pin);  
  */  
  Sensor1Data = 0;  
  Sensor2Data = 1023;  
  Sensor3Data = 255;  
  Sensor4Data = 725;  
  sprintf(Sensor1CharMsg, "%d,%d,%d,%d,", Sensor1Data, Sensor2Data, Sensor3Data, Sensor4Data);  
  // Turn on a light to show transmitting  
  digitalWrite(ledPin, HIGH);  
  vw_send((uint8_t *)Sensor1CharMsg, strlen(Sensor1CharMsg));  
  vw_wait_tx(); // Wait until the whole message is gone  
  // Turn off a light after transmission  
  delay(200);  
  digitalWrite(ledPin, LOW);  
  delay(2000);  
 }  
respectiv
 /*.............................................................  
 Sending Multiple Variables Using VirtualWire. Receiver  
 Author: Rodrigo Mompo Redoli  
 For http://controlrobotics.rodrigomompo.com  
 adapted sketch by niq_ro (Nicu FLORICA) from http://nicuflorica.blogspot.com  
 ..............................................................*/  
 #include <VirtualWire.h>  
 // Sensors   
 int Sensor1Data;  
 int Sensor2Data;  
 int Sensor3Data;  
 int Sensor4Data;  
 char StringReceived[22];   
 int led = 13;   
 void setup() {  
 pinMode(led, OUTPUT);   
 Serial.begin(9600);  
 Serial.println("Receptorul lui niq_ro e pregatit sa primeasca mesaje...");   
  // VirtualWire   
   // Initialise the IO and ISR  
   // Required for DR3100  
   // Bits per sec  
   vw_setup(2000);  
   vw_set_rx_pin(11);   
   // Start the receiver PLL running  
   vw_rx_start();      
 } // END void setup  
 void loop(){  
   uint8_t buf[VW_MAX_MESSAGE_LEN];  
   uint8_t buflen = VW_MAX_MESSAGE_LEN;  
 //Taking the data from the control base  
   if (vw_get_message(buf, &buflen))   
   {  
    digitalWrite(led, HIGH);    
  int i;  
     // Message with a good checksum received, dump it.   
     for (i = 0; i < buflen; i++)  
  {        
      // Fill Sensor1CharMsg Char array with corresponding   
      // chars from buffer.    
      StringReceived[i] = char(buf[i]);  
      Serial.print(StringReceived[i]);  
  }  
    sscanf(StringReceived, "%d,%d,%d,%d,%d,%d",&Sensor1Data, &Sensor2Data,&Sensor3Data,&Sensor4Data); // Converts a string to an array  
 Serial.println();  
 digitalWrite(led, LOW);      
     // Turn off light to and await next message   
   }  
  memset( StringReceived, 0, sizeof( StringReceived));// This line is for reset the StringReceived  
 }  

Schema de conexiune, pentru citirea a 4 valori analogice este:
si trebuie scoase ghilimele de le-am pus eu la citirea intrarilor analogice si mutate la cele predefinite:

void loop() {  
  // Read and store Sensor Data or put a predefined values (min=0, max=1023, 255, 725)
  /*  
  Sensor1Data = analogRead(Sensor1Pin);  
  Sensor2Data = analogRead(Sensor2Pin);  
  Sensor3Data = analogRead(Sensor3Pin);  
  Sensor4Data = analogRead(Sensor4Pin);  
  */  
  Sensor1Data = 0;  
  Sensor2Data = 1023;  
  Sensor3Data = 255;  
  Sensor4Data = 725;  

si trebuie scoase ghilimele de le-am pus eu la citirea intrarilor analogice si mutate la cele predefinite:

void loop() {  
  // Read and store Sensor Data or put a predefined values (min=0, max=1023, 255, 725)
  
  Sensor1Data = analogRead(Sensor1Pin);  
  Sensor2Data = analogRead(Sensor2Pin);  
  Sensor3Data = analogRead(Sensor3Pin);  
  Sensor4Data = analogRead(Sensor4Pin);  
  /*  
  Sensor1Data = 0;  
  Sensor2Data = 1023;  
  Sensor3Data = 255;  
  Sensor4Data = 725;  
  */