Arduino transmissor 433Mhz e receptor

Posted by

Hoje vamos apreder a usar o conjunto transmissor 433Mhz e receptor com Arduino. Esta tecnologia de transmissão sem fio é muito usada em controles remotos de portão eletrônico. A maioria das informações da primeira parte do artigo foi retirada daqui.

A biblioteca que utilizaremos inicialmente é a RC-switch disponível aqui. Baixe a biblioteca do link e depois, na IDE do Arduino vá em “Sketch > Incluir biblioteca > Adicionar biblioteca .ZIP”. Dentro dos arquivos que você baixou vai ter um arquivo chamada “output.ino”, coloque este arquivo na mesma pasta on de salvar o sketch do código abaixo.

/*
  Example for receiving
  
  https://github.com/sui77/rc-switch/
  
  If you want to visualize a telegram copy the raw data and 
  paste it into http://test.sui.li/oszi/
*/

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(0);  // Receiver on interrupt 0 => that is pin #2
}

void loop() {
  if (mySwitch.available()) {
    output(mySwitch.getReceivedValue(), mySwitch.getReceivedBitlength(), mySwitch.getReceivedDelay(), mySwitch.getReceivedRawdata(),mySwitch.getReceivedProtocol());
    mySwitch.resetAvailable();
  }
}
Controle remoto de portão 433Mhz
Controle remoto de portão 433Mhz

mySwitch.getReceivedValue()

O receptor de RF vai conectado ao pino 2 do Arduino, interrupção 0. Nosso controle remoto de portão vai ser o emissor. Veja o esquema de ligação na imagem abaixo.

Diagrama esquemático do receptor 433Mhz
Diagrama esquemático do receptor 433Mhz

No monitor serial, ao se apertar um botão do controle de portão é visível o seguinte:

Leitura de controle de portão com Arduino, monitor serial com informações
Leitura de controle de portão com Arduino, monitor serial com informações

Estes valores (decimal, binary) são únicos para cada controle e podem ser usados para implementar controles dos mais diversos, é o que vamos fazer a seguir.

Emissor e receptor

Para trabalhar com emissor e receptor vamos usar a biblioteca Radiohead, conforme visto neste post e que pode ser baixada daqui. Para instalar no seu Arduino, na IDE do Arduino vá em “Rascunho > Incluir biblioteca > Adicionar biblioteca .ZIP” e procure o arquivo que você baixou do link acima.

Confesso que não entendi porque os pinos são usados os pinos 2 e 12, mas imagino que deva ter algo a ver com a SPI, já que estes são os pinos do Arduino para essa função. A biblioteca SPI é chamada no código abaixo, apesar de não ser utilizada.

Transmissor 433Mhz pino 12, fonte: https://randomnerdtutorials.com/decode-and-send-433-mhz-rf-signals-with-arduino/
Receptor 433Mh pino 2, fonte: https://randomnerdtutorials.com/decode-and-send-433-mhz-rf-signals-with-arduino/
Emissor e receptor 433Mhz lado a lado
Emissor e receptor 433Mhz lado a lado

Copie e cole este código no Arduino emissor:

#include <RH_ASK.h>
#include <SPI.h> // Not actually used but needed to compile

RH_ASK driver;

void setup()
{
    Serial.begin(9600);	  // Debugging only
    if (!driver.init())
         Serial.println("init failed");
}

void loop()
{
    const char *msg = "123456789012";
    driver.send((uint8_t *)msg, strlen(msg));
    driver.waitPacketSent();
    delay(1000);
}

E este código no Arduino receptor:

#include <RH_ASK.h>
#include <SPI.h> // Not actualy used but needed to compile

RH_ASK driver;

void setup()
{
    Serial.begin(9600);	// Debugging only
    if (!driver.init())
         Serial.println("init failed");
}

void loop()
{
    uint8_t buf[12];
    uint8_t buflen = sizeof(buf);
    if (driver.recv(buf, &buflen)) // Non-blocking
    {
      int i;
      // Message with a good checksum received, dump it.
      Serial.print("Message: ");
      Serial.println((char*)buf);         
    }
}

O resultado do código receptor no monitor Serial da IDE do Arduino é a mensagem que o emissor enviou, “123456789012”:

Mensagem recebida no monitor serial
Mensagem recebida no monitor serial

E abaixo um vídeo rápido do funcionamento dos códigos expostos acima. Veja que a antena do receptor pode ser um pequeno pedaço de fio de cobre.

Conclusão

Algo que não comentei foi o alcançe deste tipo de controle remoto. Os fabricantes de portão eletrônico colocam como 40 metros, é uma boa distância. Outro detalhe é o tamanho da antena, que segundo este link e este deve ser de na média 17cm.

Dá pra fazer muitas automações legais com estes módulos 433MHz, sua criatividade é o limite. Quer comprar o módulo usado neste artigo? use meu link de afiliado.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *