Pular para o conteúdo principal

Kit Transmissor + Receptor RF 315MHz/433MHz

Apresentaremos hoje os módulos de transmissão e recepção sem fio. Estes módulos possibilitam a comunicação entre dispositivos através de uma comunicação serial remota sem fio.

São fáceis de trabalhar e são diretamente compatíveis com a plataforma Arduino e com qualquer outro microcontrolador também.

Com eles você poderá fazer dois Arduinos conversarem entre si a distâncias de até por volta de 180m! A distância de funcionamento é relativa e varia de acordo com vários fatores, entre eles: ruídos eletromagnéticos do ambiente, tensão de alimentação do transmissor, uso de antenas apropriadas, velocidade de comunicação.

Neste exemplo de utilização, vamos controlar o brilho de um LED bicolor conectado em um Arduino remoto. Para tanto, iremos usar dois potenciômetros conectados nas portas analógicas do Arduino Transmissor (Tx). Cada potenciômetro irá definir a largura de pulso de PWM que será aplicada aos terminais do LED bicolor.

TRANSMISSÃO

Esquema de ligação do Arduino Transmissor




Lista de materiais para a montagem do transmissor:

Fotos da montagem do transmissor:





A estratégia de envio dos dados através do módulo transmissor foi a de usar o canal UART  de comunicação onde cada bit do dado é enviado de forma serial através do pino TX.

Como o dado resultante da conversão A/D tem o tamanho de 10 bits, precisamos dividi-lo em dois e enviar os dois primeiros MSB e logo em seguida os oito LSB. Fazemos isto para os dois valores obtidos através dos canais A0 e A1. Um byte de start (0xFF) é enviado primeiro para indicar o início da transmissão.

Aqui temos o link para o algoritmo utilizado no Arduino Transmissor. Não foi usado nenhum protocolo de comunicação conhecido. Numa aplicação mais robusta se faz necessário o uso de protocolos de comunicação e rotinas que chequem a integridade dos dados recebidos.

RECEPÇÃO

Esquema de ligação do Arduino Receptor



Lista de materiais para a montagem do receptor

 Fotos da montagem do receptor:




No receptor utilizamos um Arduino DUE e conectamos a ele o LED bicolor e o modulo receptor RF. O algoritmo de recepção baseia-se na ideia de colher o que o canal Serial 1 (RX1 - pin 19) recebe e tratar os dados recebidos. Usamos um vetor (array) de 4 posições para, após o recebimento do byte de start (0xFF), os próximos dados poderem ser gravados.

Precisamos receber os dois valores de saída do A/D do Arduino UNO (transmissor), A0 e A1 e usá-los como referência para setar os sinais PWM que irão ser aplicados no LED bicolor de dois terminais do lado do receptor.

Como dito anteriormente, o A/D do Arduino UNO tem resolução de 10 bits. Portanto, os dois valores de saída do A/D para A0 e A1, serão recebidos em parcelas. Por isto usamos um vetor de 4 posições e não duas. Depois, fazendo as contas necessárias podemos unir novamente estes valores no Arduino DUE receptor e setar os valores PWM para o LED bicolor.

Antenas


As antenas são necessárias quando a distância entre dispositivos começa a passar de ±5 metros. Em geral, o tamanho da antena é tido como ¼ do comprimento de onda (λ). Acompanhe:


Onde:
λ: comprimento de onda (m);
c: velocidade de propagação da onda (velocidade da luz) (m/s);
f: frequência da onda (Hz).

Para uma onde 315MHz, temos:


Como o comprimento da antena é ¼ do comprimento de onda (λ). Então o comprimento da antena para sistemas de RF com 315MHz é:


Portanto, uma antena de 24 cm é suficiente.

Arquivos de código ".ino" TX e RX.


* * *



Lembrem-se que esta foi apenas 1 estratégia para termos o resultado desejado. Existem muitas possibilidades que vocês podem descobrir. Adquira um dos kits RF disponíveis em nossa loja e explore ainda mais seu Arduino.

Comentários

  1. Não é preciso utilizar a biblioteca VirtualWire???

    sabem dizer qual a aplicação da mesma se nao ha necessidade?

    ResponderExcluir
    Respostas
    1. Olá!
      A Biblioteca VirtualWire não foi utilizada nesse exemplo, uma vez que a maneira apresentada por nós para a utilização do Kit RF foi apenas uma das muitas formas possíveis de utilização para o mesmo. A biblioteca VirtualWire é uma maneira conhecida de utilizar módulos RF, com bastante documentação divulgada na web.
      Para testá-la, assumindo que já foi feito o download e a instalação da mesma, pode ser utilizado o seguinte código, que fará o led ligado ao pino 13 do Arduino receptor acender e apagar, de acordo com a transmissão enviada.

      Para o transmissor:

      #include
      char *controller;
      void setup() {
      pinMode(13,OUTPUT);
      vw_set_ptt_inverted(true); //
      vw_set_tx_pin(12);
      vw_setup(4000);// speed of data transfer Kbps
      }

      void loop(){
      controller="1" ;
      vw_send((uint8_t *)controller, strlen(controller));
      vw_wait_tx(); // Wait until the whole message is gone
      digitalWrite(13,1);
      delay(2000);
      controller="0" ;
      vw_send((uint8_t *)controller, strlen(controller));
      vw_wait_tx(); // Wait until the whole message is gone
      digitalWrite(13,0);
      delay(2000);
      }

      Para o Receptor:

      #include
      void setup()
      {
      vw_set_ptt_inverted(true); // Required for DR3100
      vw_set_rx_pin(12);
      vw_setup(4000); // Bits per sec
      pinMode(13, OUTPUT);

      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
      {
      if(buf[0]=='1'){


      digitalWrite(13,1);
      }
      if(buf[0]=='0'){
      digitalWrite(13,0);
      }
      }
      }

      Lembrando que é necessário que se use 2 Arduinos, e que a ligação dos módulos seja feita de maneira que o terminal de dados fique no pino 12 do Arduino, tanto no receptor quanto no transmissor

      Esperamos ter ajudado.
      Obrigado pelo feedback!
      Aproveite nossas postagens e visite a nossa loja em www.eletrodex.com.br

      Excluir
  2. Olá,
    Pelo código eu vi que a velocidade é de 4800.
    Existe alguma opção de aumentar esta velocidade?
    Em caso positivo, como eu configuro isto no emissor/receptor?

    Obrigado.

    ResponderExcluir
    Respostas
    1. Sim, é possível, Diego.
      Basta alterar o valor 4800 na linha "Serial.begin(4800);" para um valor que seja mais conveniente.
      Porém, é importante lembrar que este valor deverá ser um múltiplo inteiro do valor 4800 (por exemplo: 9600, 19200...),para facilitar a visualização dos dados no Monitor Serial.
      Esperamos ter ajudado.
      Obrigado pelo feedback!
      Aproveite nossas postagens e visite a nossa loja em www.eletrodex.com.br

      Excluir
    2. Obrigado!!
      Já efetuei a compra! :D

      Excluir
  3. Olá!

    Seria possível aumentar a distância de comunicação, algo próximo de 1km, seja utilizando este módulo ou um módulo mais sofisticado? O fato de a antena e o receptor estarem em movimento pode afetar o funcionamento?

    Caso seja necessário um módulo mais sofisticado, vocês poderia produzir um protótipo e posteriormente em escala?

    ResponderExcluir
  4. Muito bom. E para dois led's qual seria alteração necessária nesse código?

    ResponderExcluir
  5. Este comentário foi removido pelo autor.

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

Utilizando o Programador USB para PIC K150

Nessa postagem iremos demonstrar a utilização do Programador USB para PIC K150 O gravador possui um soquete do tipo ZIF (ZIF - Zero Insertion Force - é um soquete com uma alavanca, que permite a colocação e a retirada dos microcontroladores sem risco de danificar seus terminais) para a programação dos microcontroladores. Conta também com um conector para a programação ICSP (In Circuit Serial Programming, que será abordada futuramente em outra postagem, pois é necessário que se faça algumas adaptações no circuito a ser programado). O programador é controlado pelo PIC16F628A, e no site do fabricante do gravador é possível encontrar informações sobre como atualizar o firmware do gravador, para possibilitar a gravação de mais dispositivos. Instalação do Programador USB para PIC K150 Se você estiver utilizando o Windows 7/Vista/XP, o driver deve ser instalado normalmente, sem que seja necessária a interferência do usuário. Caso esteja utilizando o Windows 8/8.1, o processo é um po...

Controlando LED via Bluetooth utilizando o Módulo HC-05

Hoje abordaremos uma breve demonstração de conexão do Módulo Bluetooth HC-05 Master/Slave com um dispositivo externo, e após a conexão utilizar o dispositivo para controlar um LED. A Placa Base utilizada como controladora é a Arduino Uno , que foi utilizada em conjunto com o Protoshield compatível com a mesma. Todos os itens utilizados podem ser adquiridos em nossa loja . Note que o Módulo Bluetooth HC-05 Master/Slave possui níveis de tensão de alimentação e operação diferentes, sendo que pode ser alimentado com  uma tensão entre 3,3v e 6v (no projeto foi alimentado com 5v, direto de um dos pinos do Arduino Uno ), mas a sua tensão de operação é de 3,3v. IMPORTANTE:    O Arduino consegue reconhecer a tensão de 3,3v no terminal RX como nível lógico alto, mas somente fornece 5v no terminal Tx como nível lógico alto. Portanto, se for utilizar os terminais Rx e Tx para a comunicação com os terminais Tx e Rx do HC-05,  o terminal Tx do HC-05 pode ser conectado...

Como programar com Programador KIT 3.5 para PIC

Nesta postagem iremos falar sobre o Programador KIT 3.5 O Programador KIT 3.5 é um programador para microcontroladores PIC bastante completo, até o momento compatível com  mais de 600 dispositivos da linha de microcontroladores da Microchip, incluindo a nova linha dsPIC. (Confira aqu i a lista com os microcontroladores compatíveis com o Kit 3.5) Permite a programação diretamente na placa (ICSP) ou então através de conectores ZIF (não inclusos). Detalhe para a interface ICSP Com ele é possível gravar (programar), ler, verificar e copiar os códigos dos microcontroladores, através do software gratuito PicKit 3 Programmer ( instruções de uso ), uma vez que ele é totalmente compatível com o PICkit3. Lembrando que este software é apenas para a gravação do arquivo HEX no seu microcontrolador, sendo que é necessário gerar esse arquivo em um compilador de sua escolha. Além disso, é possível utilizá-lo como ferramenta de depuração (debug) através do software MPLAB. Ca...