Rádio Frequência 433MHz - Como usar?

Boa noite, galera. Alguém sabe como transmitir caracteres usando a Rádio Frequência 433MHz?
Estou usando um kit de shields pra arduíno com Transmissor e Receptor de Rádio Frequência 433MHz, mas não consigo fazer funcionar permanentemente, isto é, às vezes funciona e às vezes não funciona, sem que eu faça alterações. Descobri que se eu juntar o GND de cada arduíno (ligados em PCs diferentes) funciona perfeitamente, mas isso desfaz a proposta, já que o RF é para eliminar os fios.

Biblioteca em Anexo.

Código do Transmissor

#include <VirtualWire.h> // lib para RF
void setup()
{
 Serial.begin(9600); //Ativa Serial Monitor
 vw_set_ptt_inverted(true); 
 vw_set_tx_pin(9); // porta que vamos usar
 vw_setup(2000); // bits para comunicação
 Serial.println("Transmição: OK"); // avisa que esta ok
 pinMode(LED, OUTPUT);     //Pino 13(saida)
}
void loop(){
  char message = Serial.read();  //Variavel
  if((int)message > 1){       //Condição para mandar mensagem 
  vw_send((uint8_t *)&message, strlen(&message)); //envia a mensagem 
  Serial.print(message); //Imprime na tela a mensagem enviada
 }
}

Código do Receptor

#include <VirtualWire.h>
                    //<Varieveis>
int pwmP = 8;
int pwmD = 9; 
int pwmT = 11;
int pwmV = 12; 
int led = 13;
                    //</Varieveis>
void setup()
{

  Serial.begin(9600); //Ativa o serial monitor, porta 9600
  vw_set_ptt_inverted(true);
  vw_setup(2000); //bits para comunicação
  vw_set_rx_pin(5); //Porta usada para comunicação
  vw_rx_start(); //inicia a funço para enviar dados
  Serial.println("Recepção: OK  "); //Avisa que esta ok
                             //<Pinos>
  pinMode(pwmP, OUTPUT);
  pinMode(pwmD, OUTPUT);     
  pinMode(pwmT, OUTPUT);
  pinMode(pwmV, OUTPUT);     
  pinMode(led, OUTPUT);
 
                            //</Pinos>
}
void loop()
{
    uint8_t buf[VW_MAX_MESSAGE_LEN];      //transforma buf[...] em linguagem humana
    uint8_t buflen = VW_MAX_MESSAGE_LEN;  //declara bufle 
    if (vw_get_message(buf, &buflen)){    //Inicia condição 
	int i;                            //variave(numero)
	for (i = 0; i < buflen; i++){
	    Serial.print((char)buf[i]);   //Imprime no Serial a mensagem recebida 
    
 
   char state = ((char)buf[i]);           //Variavel
  
    
    switch(state){                        //Utlizando casos, para iniciar ação
      case '1': 
        digitalWrite(pwmP, LOW);
        digitalWrite(pwmD, HIGH);
        digitalWrite(pwmT, LOW);
        digitalWrite(pwmV, HIGH);
        digitalWrite(led, HIGH);
        break;
      case '2': 
        digitalWrite(pwmP, HIGH);
        digitalWrite(pwmD, LOW);
        digitalWrite(pwmT, LOW);
        digitalWrite(pwmV, HIGH);
        digitalWrite(led, LOW);
        break;
      case '3': 
        digitalWrite(pwmP, LOW);
        digitalWrite(pwmD, HIGH);
        digitalWrite(pwmT, HIGH);
        digitalWrite(pwmV, LOW);
        break;
      case '4': 
        digitalWrite(pwmP, HIGH);
        digitalWrite(pwmD, LOW);
        digitalWrite(pwmT, HIGH);
        digitalWrite(pwmV, LOW);
        break;
      default:
        break; 
      }
    }
  }
}

VirtualWire.rar (14.3 KB)

Viva, PatrickPDG!

Faça o que fizer, não junte os GND! Isso assim não era wireless era wiremore. Pode dizer também quais são os shields? Penso que também poderia ajudar, e deve haver vários tipos de shield de 433MHz.

Cumps.

Aqui tem um link para o modelo que eu comprei:
http://produto.mercadolivre.com.br/MLB-566876833-radio-433mhz-transmissor-receptor-para-arduino-pic-_JM

No anexo tem uma foto do modelo.

Obrigado.

radio-433mhz-transmissor-receptor-para-arduino-pic-16056-MLB20112639801_062014-O.jpg

Fiz uma pesquisas e encontrei aqui no fórum esta thread que também fala sobre o assunto. Os vários posts apontam para aqui:

e para aqui:
http://arduinobasics.blogspot.com.au/2014/06/433-mhz-rf-module-with-arduino-tutorial.html

Não sei qual é o seu nível de inglês e se consegue ler e entender isto. Eu nunca trabalhei com eles, mas se não conseguir ler estes documentos diga mais alguma coisa.

Cumps.

Não parei muito para olhar seu código, mas é simples usar esses rádios, da uma olha no HT6P20.
O mais importante é entender que seu código deve trabalhar sempre com variação, por exemplo:
Quando transmite o bit zero você transmite um tempo x em zero e um tempo x em um.
Quando transmite o bit um você transmite um tempo x em zero e duas vezes o tempo em um.
O preambulo é um longo tempo em um e um longo tempo em zero e o final e um longo tempo morto.
A ideia básica é essa, o resto você pode encontrar na internet.

Edson

http://forum.arduino.cc/index.php?topic=248579.0

Amigo,

quando utilizei não precisei necessáriamente de biblioteca, logo e só colocar a saida do arduino RX/TX na entrada, (lembro que este módulos é unidirecional, como você comprou 1 par, logo um será o emissor e ou outro será o receptor)...

http://labdegaragem.com/forum/topics/controle-de-port-o-sendo-lido-por-arduino

Olá PatrickPDG,

Pesquisando achei este post (http://blog.filipeflop.com/wireless/modulo-rf-transmissor-receptor-433mhz-am.html)

Lá eles usam o mesmo modelo dos seus módulos RF 433Mhz, confere?

Como faco para mandar uma variavel em vez do Serial.read()?