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

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 diretamente ao ter

Bem vindo ao Blog ELETRODEX

A ELETRODEX ELETRÔNICA sempre preocupado em atender a todas as necessidades de seus clientes, traz para você hobista ou profissional da eletrônica um espaço virtual aberto para discussões e ideias, para que possamos dia a dia melhorar cada vez mais a nossa loja virtual ,sempre focando em satisfazer nossos clientes com as melhores ofertas do mercado e as dicas mais úteis para seu projeto.

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. Caract