CONTROLE RF 433MHZ COM ARDUINO

Certamente em algum momento usando o Arduino ou até mesmo no dia-dia já houve a necessidade de acionar “algo” a uma determinada distância. Uma dos meios de realizar este controle é justamente usando um sinal de rádio frequência (RF), neste exemplo será usando um RF de 433mhz de modulação Amplitude Shift Keying (ASK) para pequenas distâncias abaixo dos 100m.

Construção

Este circuito é bastante simples de ser montado, e não precisa necessariamente ter que comprar todas as peças a não ser um Arduino de sua preferência e uma protoboard (opcional), fora esses dois itens, nada deste artigo foi comprado.

Matérias

  • 1x Arduino (Nessa montagem, será usado o NANO);
  • 1x RX433;
  • 1x Antena (Fio com 164,4mm de comprimento);
  • 1x Jumpers;
  • 1x Cabo USB para o Arduino;
  • 1x LED;
  • 1X Resistor de 150 ohms;
  • 1x Transmissor TX433 (controle de portão eletrônico).

Pinout RF433

  1. = GND;
  2. = DATA;
  3. = NA;
  4. = Vcc;
  5. = Vcc;
  6. = GND;
  7. = GND;
  8. = Antena.

Essa pinagem é padrão para esse modelo de RF que apresenta 8 pinos, mas sua voltagem de trabalho pode variar de 3v3 a 12v, o Arduino fornece tensão de 3v3 e 5v , porém alguns RF’s trabalham a partir dos 4v5, os 5v foi escolhido comum na maioria dos módulos.

Diagrama

Receptor 433mhz ASK com Arduino NANO e controle remoto

Conexões

  • RF pin 1 e 6 -> GND;
  • RF pin 4 e 5 -> 5v;
  • RF pin 2 -> Digital 2 (Não altere essa pinagem);
  • RF pin 7 -> Sem conexão;
  • RF pin 8 -> Antena (É necessário o uso, caso contrário, não funcionará adequadamente);
  • Digital 13 -> Anodo do LED;
  • Catodo -> Pull Down.

O LED é apenas uma sensor luminosos que vai avisar quando o estado lógico estiver em nível alto (ligado), quando estiver baixo vai apagar, esse mesmo sistema pode ser implementado para acionamento de outras cargas como relé’s, transistores, MOSFET’s , entre outros […]

Código

Copie o código abaixo ou Baixe pelo GitHub, é necessário que tenha a Biblioteca RCSwitch instalada na sua IDE. Estes algoritmos será responsável pela decodificação, filtração do transmissor (controle) e acionamento.

/*-------------------------------------------------------------------------------
* Projeto: Controle RF433MHZ com Arduino
* Saiba mais: https://elcereza.com/conectar-a-estacao-meteorologica-com-a-orion/
* Disponibilizado por: https://elcereza.com
* Autor: Suat Özgür
* Editado e Comentado: Gustavo Cereza
---------------------------------------------------------------------------------*/
#include <RCSwitch.h>                                                             // Inclue biblioteca RCSwitch
RCSwitch mySwitch = RCSwitch();                                                   // Atribue variável mySwitch o valor de RCSwitch                                     
void setup() {
  Serial.begin(9600);                                                             // Estabelece 9600 como velocidade de BaudRate
  mySwitch.enableReceive(0);                                                      // Inicializa leitura no pino digital 2
}                                                                                 // Finaliza setup
void loop() {
  if (mySwitch.available()) {                                                     // Avalia se tá recebendo sinal
    Serial.print("Recebido ");                                                
    Serial.print( mySwitch.getReceivedValue() );                                  // Printa o valor recebeido pelo RF
    Serial.print(" / ");
    Serial.print( mySwitch.getReceivedBitlength() );                              // Printa a quantidade de bit's
    Serial.print("bit ");
    Serial.print("Protocolo: ");
    Serial.println( mySwitch.getReceivedProtocol() );                             // Printa o protocolo
    /*
     Este 'if' abaixo representa um acionamento da porta digital 13
     de acordo com o botão decodificado selecionado, para implementar
     o botão desejado é só copiar o valor decimal após o '==', 
     da seguinte forma: if(mySwitch.getReceivedValue() == 177963301){}
     para mais informações sobre este projeto, 
     acesse: 
     
     
    if(mySwitch.getReceivedValue() == DECIMAL1)                                  // Se mySwitch receber o valor do programado, vai por a porta 13 em nível alto
    {
     digitalWrite(13,1);                                                         // Liga o LED
    } if(mySwitch.getReceivedValue() == DECIMAL2)                                // Se mySwitch receber o outro valor programado, vai por o nível lógico baixo
    {
      digitalWrite(13,0);                                                        // Desliga o LED
    }
    */ 
    mySwitch.resetAvailable();                                                   // Reinicia leitura
  }
}                                                                                // Finali

Esse código não é ideal para receber mensagens de texto e sim para utilização para receber ou transmitir “comandos” por RF.



Decodificação do Controle

Para saber qual é o código recebido pelo RF é só abrir o monitor serial do Arduino, e pressionar o botão que desejado, assim que pressionado vai aparecer uma mensagem com o seguinte formato:

Recebido Valor em decimal / Quantidade de bit Protocolo: Número do protocolo

Neste pequeno exemplo foi utilizado um botão para acionar o LED e outro para apagar, neste caso foi escolhido respectivamente Botão 1 e Botão 2 já havia apresentando a seguinte saída no monitor serial:

Botão 1 -> Recebido 177963301 / 28bit Protocolo: 6
Botão 2 -> Recebido 177963285 / 28bit Protocolo: 6

Para demonstração do funcionamento desse código para o acionamento utilizando o módulo 433mhz foi pego o valor decimal destacado em negrito acima e substituído ‘DECIMAL1’ por ‘177963301’ e ‘DECIMAL2’ por ‘177963285’.

Funcionamento

Considerações Finais

É possível usar o módulo RF433 para fazer acionamentos em curtas distâncias, no “datasheet” e outros sites mostram uma comunicação em até 200m mas em alguns experimentos usando a antena de fio com 164,4mm de comprimento não foi possível chegar nem na metade da metade com o transmissor a +/- 12m de altura e o receptor a 10m de afastamento.


Existe inúmeros fatores que podem ter prejudicado essa transmissão mas a faixa de aplicações para este módulo são de fato acionamentos a curta distância como por exemplo eletrificadoras de muro e portão eletrônico. Não quer dizer que seja possível obter melhores resultados usando o mesmo módulo.

2 comentários

Deixe uma resposta