Tutorial: Como utilizar os módulos RF Link (315MHz/434MHz)

 

Olá Garagistas! No tutorial de hoje mostraremos como você pode facilmente utilizar os módulos de transmissão RF Link (315MHz/434MHz) utilizando o Garagino. Como demonstração faremos acionamentos no módulo receptor, a partir de botões pressionador no módulo transmissor.

 

 

Material Utilizados:

2x Kit Garagino Rev 1

1x Módulo Transmissor(315MHz)/Módulo Receptor(315MHz) ou Módulo Tra...

4x Chave Tactil

3x Resistor 330Ω (Acionamento do LEDs)

4x Resistor 10KΩ (Pull-down das chaves táteis)

3x LEDs (Verde, Amarelo e Vermelho)

2x Protoboard

Alguns Jumpers (Circuito e Antena)

 

 

1. RF Link (315MHz/434MHz)

Figura 1 - Pinout Módulos RF

Os Módulos RF Link são módulos para transmissão por Rádio Frequência. Normalmente quando se pensamos em comunicação sem fio para ser utilizado com Garagino ou Arduino, a primeira coisa que vem à mente são os famosos XBee, contudo nem todos tem a possibilidade de comprar um XBee, pois são relativamente caros se comparado com os módulos RF.

Esses módulos são bem simples, o transmissor enviar dados em série para o receptor fazendo um método de transmissão simplex, o transmissor envia e o receptor recebe, simples assim. Contudo, seria necessário você utilizar um encoder (codificador) e um decoder (decodificador) para facilitar o processo de transmissão entre seus módulos, daí a vantagem de você pode utilizar um Garagino ou Arduino, porque além de você utilizá-lo como encoder ou decoder, você irá consumir somente 1 pino de cada Garagino para a comunicação e terá todo os outros disponíveis para a leitura de sensores, acionamentos de carga e pode também tratar os dados que serão enviados e recebidos.

E qual a diferença entre as frequências de 315MHz e 434MHz? Como a diferença entre as frequências desses módulos é pequena, basicamente em aplicações práticas os resultados vão ser bem próximos, já na teoria a frequência de 433MHz deve se comportar melhor em ambientes fechados enquanto a de 315MHz terá o maior comprimento de onda, logo você terá maior alcance ao ar livre. Lembrando que no Brasil essas frequência são permitidas para uso livre pela Anatel.

Em nossa aplicação teremos então um Garagino (encoder) para o módulo transmissor e um Garagino (decoder) para o módulo receptor. Faremos a leitura dos botões conectados nos pinos digitais D6~D9 do módulo transmissor e faremos o acionamento desses respectivos pinos digitais no módulo receptor, onde estão conectados nesses pinos:

D6 - LED Verde

D7 - LED Amarelo

D8 - LED Vermelho

D9 - Módulo Relé (Lâmpada)

2. Biblioteca VirtualWire.h

Nessa demonstração utilizamos a biblioteca VirtualWire.h, ela facilita a aplicação e utilização desses módulos. É uma biblioteca bastante útil e simples de se utilizar e ela pode ser utilizada tanto para o módulo RF Link de 315MHz quanto para o módulo RF Link de 434MHz, para informações mais detalhadas sobre as biblioteca, consulte o material neste link. Neste tutorial foi utilizada a versão 1.20 desta biblioteca, e ela pode ser baixada, clicando aqui.

3. Sketch Módulo Receptor

- Transfira o sketch abaixo para o Garagino do módulo receptor:

#include <VirtualWire.h> //Inclui a biblioteca VirtualWire.h

void setup()
{

  //++++++++++++++Inicializa o módulo receptor+++++++++++++++++++
  vw_set_ptt_inverted(true);
  vw_setup(2000);
  vw_set_rx_pin(2); //Configura o pino D2 para a leitura dos dados
  vw_rx_start(); //Inicia a leitura de dados do módulo receptor
  //==============================================================

  //Configura os pinos de 6 a 9 como saída
  for(int i=6;i<=9;i++)
  {
    pinMode(i, OUTPUT);
  }
  //======================================

}

void loop()
{

  uint8_t buf[VW_MAX_MESSAGE_LEN]; //Variável para o armazenamento do buffer dos dados
  uint8_t buflen = VW_MAX_MESSAGE_LEN; //Variável para o armazenamento do tamanho do buffer

  if(vw_get_message(buf, &buflen)) //Se no buffer tiver algum dado (O ou 1)
  {

    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    //Incrementa a posição para a leitura do buffer por i (0 a 4)
    //Incrementa a posição dos pinos digitais por j (6 a 9)
    int j=6;
    for (int i = 0; i < buflen; i++,j++)
    {
      buf[i] = buf[i] - 48; //Pega o dado do buffer que é recebido em hexadecimal e subtrai 48
      if(buf[i] == 1) //Se o dado na determinada posição do buffer for igual 1
      {
        digitalWrite(j,!digitalRead(j)); //Inverte o estado do respectivo pino digital
      }
    }
    //========================================================================================

  }

}

 

 

4. Sketch Módulo Transmissor

- Transfira o sketch abaixo para o Garagino do módulo transmissor:

#include <VirtualWire.h> //Inclui a biblioteca VirtualWire.h

 

char *nibble = "0000"; //Cria a variável nibble com o valor 0000

 

int le_pino; //Cria a variável para a leitura dos pinos digitais

 

void setup()
{

  //++++++++++++++Inicializa o módulo transmissor+++++++++++++++++++
  vw_set_ptt_inverted(true);
  vw_setup(2000);
  vw_set_tx_pin(3); //Configura o pino D3 para a leitura dos dados
  //================================================================

  //Configura os pinos de 6 a 9 como entrada
  for(int i=6; i<=9; i++)
  {
    pinMode(i, INPUT_PULLUP);
  }
  //======================================

}

void loop()
{

  //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  //Incrementa a posição para o armazenamento no nibble por i (0 a 4)
  //Incrementa a posição dos pinos digitais por j (6 a 9)
  int j=0;
  for(int i=6;i<=9;i++,j++)
  {
    le_pino = digitalRead(i); //Lê o estado do botão
    if(le_pino == 1) //Se o botão estiver pressionado
    {
      while(le_pino == 1) le_pino = digitalRead(i); //Aguarda o botão ser despressionado
      nibble[j] = '1'; //Armazena na respectiva posição do no nible o caracter 1
    }
    else nibble[j] = '0'; //Senão armazena na respectiva posição do no nible o caracter 1
  }

vw_send((uint8_t *)nibble, strlen(nibble)); //Envia a variável nibble
  vw_wait_tx(); //Aguarda o fim de transmissão
  //=======================================================================================

}

 

 

5. Circuito do Módulo Receptor

Faça as ligações do circuito do módulo receptor:

Figura 2 - Circuito do Módulo Receptor

6. Circuito do Módulo Transmissor

Faça as ligações do circuito do módulo transmissor:

Figura 3 - Circuito do Módulo Transmissor

 

 

Referências

http://www.airspayce.com/mikem/arduino/

http://lusorobotica.com/index.php?topic=772.0

http://www.univasf.edu.br/~gari/futvasf/paginas/download/Apresenta%C3%A7%C3%A3oRF_Manoel%2009-04-2010.pdf

 

 

 

Exibições: 55341

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Carlos Pereira em 14 março 2016 às 12:05

Olá!

Eu preciso montar um link RF onde o transmissor receba um dado, string, pela RS232 e envie para o receptor.

Tentei com os módulos RF 434 e não obtive êxito.

Você pode ajudar?

Comentário de David em 15 novembro 2015 às 14:30

Boa tarde, eu tenho uma dúvida que pode parecer meio boba, mas se eu utilizar como antena um fio elétrico, por exemplo da tomada, eu conseguiria uma conexão com o outro módulo que ficaria na caixa de força, do outro lado da casa?

Comentário de Dener de Souza em 23 julho 2015 às 12:16

Bom dia. Sou novo no blog, alguem pode me dizer qual compilador esta sendo utilizado? estou tentando no pic c e ele me retorna um erro na biblioteca. Obrigado!!

Comentário de João Adolfo Goris em 9 junho 2015 às 20:59

Sidnei Jonas,

Você provavelmente está utilizando a mesma frequência dos controles de seu alarme e portão. O ideal seria mudar para dispositivos (transmissor e Receptor) para outra frequência.

Comentário de sidnei jonas becker em 9 junho 2015 às 12:23

olá. tenho um problema no circuito, quando ligo o transmissor ele bloqueia tudo em casa, o alarme da casa não liga o alarme da carro tbm não o portão tbm não abre, ele bloqueia tudo o que seria.

Comentário de Fagner Gomes de Souza42 em 26 março 2015 às 22:00

Boa noite gostaria de saber se alguém aki usou o código deste tutorial de RF433 e consegui fazer funcionar pois estou tentando as uns dois dias e não consigo, caso alguém tenha conseguido posso uma força  pois já estou ficando careca.

Comentário de Guilherme de Sousa Alves Rodrigu em 7 janeiro 2015 às 17:21

Como eu faço para os leds ficarem acesos e apagarem quando eu apertar o botão?

O contrario do que acontece.

Comentário de João Adolfo Goris em 17 novembro 2014 às 19:42

Gente, alguma coisa sobre transmissão de dados com estes módulos:

1- Antena: porque 17,5 cm? É o resultado do comprimento onda do sinal de RF (433 MHZ) que é 300 (velocidade da luz no espaço) dividido pela frequência (433) (resultado em metros). A antena deve ser sempre cortada em tamanhos de Nx0,25 do resultado acima No caso teremos comprimento de onda igual a 300/433=0,69m e usando uma antena de 1/4 de onda teremos 0,69/4=0,1725m ou 17,25 cm.Pode ser também de 1/2 comprimento de onda então teremos uma antena com 0,69/2=0,345m ou 34,5cm. Estes tamanhos  não influem no resultado do alcance, pois trata-se de simples antenas omnidirecionais (que irradiam em todos os sentidos). Na realidade o comprimento da antena varia um pouco pois a constante da velocidade da luz é considerada no espaço com temperatura constante. A bitola do fio é somente uma questão de regides.

Ela pode ficar na vertical ou horizontal, desde que tanto o Tx como o Rx utilize a mesma polarização.  

São muito praticas pelo tamanho, mas sem ganho nenhum. Para aumentar o ganho, há que se utilizar antenas direcionais que aumentam a potencia do sinal, por concentra-los em uma única direção ou aumentar a potencia do transmissor (modulo TX).

Para quem utilizar o modulo APC220 posso garantir por experiência que o alcance dele em linha de visada ou seja sem nenhum obstáculo entre o TX e o RX é de 1000m pois ele trabalha com potencia mais alta que os módulos citados neste blog. Ele também é um transceptor completo, ou seja tem receptor e transmissor, porem não opera no modo duplex (com transmissão e recepção simultâneos), por isto irá introduzir um retardo entre a transmissão e recepção do sinal.

Comentário de alvin em 22 outubro 2014 às 6:55

André, fiz a montagem como no projeto, para acionar os leds.

Testei outro programa com a mesma biblioteca, e funciona.  Mas o programa aqui do Lab, não funcionou.

Qual versão do programador do Arduino foi usada ?

Comentário de André Giovanni em 20 outubro 2014 às 15:19

depende do que estiver tentando fazer...se estiver com servo motores ligados, pode ser este o problema. talvez vc terá que trocar biblioteca...

© 2021   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço