Como usar o mini transmissor RF 433MHz com Arduino

Se você está pensando em um projeto usando módulos RF (radiofrequência) precisa conhecer o Mini Transmissor RF 433MHz H34A, um módulo barato, pequeno e com baixo consumo de energia.

Nós já usamos módulos RF 433MHz aqui no Arduino e Cia, como no projeto do Sistema Chama Garçom, um sistema com vários transmissores e apenas 1 módulo receptor. É um projeto onde o mini transmissor se encaixaria muito bem, pelo tamanho e praticidade de uso.

O mini transmissor RF 433MHz H34A

O módulo RF 433MHz H34A é esse minúsculo módulo da imagem abaixo. Medindo apenas 10,5 x 10,5 mm e extremamente leve, pode ser facilmente embutido em robôs, alarmes, drones ou projetos de automação residencial.

A comunicação com o microcontrolador é feita por meio do pino DAT e o módulo suporta alimentação entre 2,5 e 12 VDC, possuindo um pino para conexão de antena externa (recomendo).

Apesar do módulo H34A possuir um “irmão” receptor, o H3V3F/H3V4F, conseguimos utiliza-lo sem problemas com um outro conhecido receptor 433MHz.

Neste post então vamos montar dois circuitos: um transmissor, com o módulo H34A e Arduino Uno, e o receptor, com o módulo receptor 433MHz MX-05V.

Circuito transmissor RF

Neste circuito vamos conectar o pino DAT do H34A no pino digital 2 do Arduino Uno. No pino 7 do Arduino vamos conectar um push-button, que quando acionado enviará comandos para a outra placa.

O esquema de ligação fica assim:

Note que estamos usando alimentação de 5V e para o push-button vamos acionar o resistor pull-up interno do Arduino.

Circuito Receptor RF

No receptor, vamos seguir a mesma linha: pino de dados (qualquer um dos dois pinos) do módulo conectado no pino digital 2 do Arduino Uno, e no pino digital 6 vamos conectar um led:

Usei no led um resistor de 1K como limitador de corrente, mas você pode usar outros valores sem problemas.

Instalação da biblioteca para módulos RF 433MHz

Para os dois programas a seguir usaremos a biblioteca RCSwitch, instalada a partir da IDE do Arduino.

Na IDE, acesse o menu Sketch -> Incluir Biblioteca -> Gerenciar Bibliotecas. Na tela do gerenciador, procure por RCSwitch e selecione Instalar:

Dúvidas na instalação da biblioteca? Confira o post Como instalar uma biblioteca na IDE Arduino.

Com a biblioteca devidamente instalada, vamos carregar um programa em cada placa Arduino.

Programa transmissor RF 433MHz

Carregue o programa abaixo na placa Arduino que tem o circuito Transmissor (com o H34A).

Este programa verifica o estado do botão e, caso seja pressionado, envia o valor 1 ou 2 para o circuito receptor, que liga (caso receba o valor 1) ou desliga (caso receba o valor 2) o led conectado no Arduino.

//Programa: Mini Transmissor RF 433 MHz H34A
//Autor: Arduino e Cia

#include <RCSwitch.h>

RCSwitch rfsense = RCSwitch();

boolean envia_dado = 1;

void setup()
{
  Serial.begin(9600);
  //Pino push-button
  pinMode(7, INPUT_PULLUP);

  Serial.println("Transmissor RF 433 MHz");
  Serial.println("Iniciando.....................");
  delay(2000);

  //Pino DAT e transmissao de dados
  pinMode(2, OUTPUT);
  rfsense.enableTransmit(2);
  delay(1000);
}

void loop()
{
  //Verifica se o botao foi pressionado
  int botao = digitalRead(7);

  //Caso tenha sido pressionado, muda o estado da variavel envia_dado
  if (botao == 0)
  {
    envia_dado = !envia_dado;
    if (envia_dado == 0)
    {
      Serial.println("Enviado 1 (ligar led");
      rfsense.send(1, 8);
    } else if (envia_dado == 1)
    {
      Serial.println("Enviado 2 (desligar led");
      rfsense.send(2, 8);
    }
  }
  while (digitalRead(7) == 0)
  {
    delay(50);
  }
}

Vamos agora carregar o programa do receptor.

Programa receptor

O programa receptor basicamente aguarda os dados enviados e, caso receba o valor 1 liga o led conectado na porta 6, e desliga o led caso receba o valor 2.

//Programa: Circuito Receptor RF 433 MHz
//Autor: Arduino e Cia

#include <RCSwitch.h>

RCSwitch rfsense = RCSwitch();

void setup()
{
  Serial.begin(9600);
  //Pino do led
  pinMode(6, OUTPUT);

  //Receptor na interrupção 0 (pino digital 2)
  rfsense.enableReceive(0);

  Serial.println("Receptor RF 433 MHz");
  Serial.println("Iniciando.....................");
  delay(2000);
}

void loop()
{
  if (rfsense.available())
  {
    //Verifica o valor recebido pelo receptor
    int valor = rfsense.getReceivedValue();

    //Caso receba o valor 1 liga o led, caso receba 2, desliga
    if (valor == 1)
    {
      Serial.println("Liga o led");
      digitalWrite(6, HIGH);
    }
    else if (valor == 2)
    {
      Serial.println("Desliga o led");
      digitalWrite(6, LOW);
    }
    rfsense.resetAvailable();
  }
}

Você pode acompanhar o processo de envio e recepção de mensagens pelo serial monitor.

Gostou? Confira outros posts usando wireless aqui mesmo no Arduino e Cia!

3.7/5 - (8 votes)

Related posts

ESP-NOW: Comunicação direta entre módulos ESP8266 e ESP32

by Arduino e Cia
2 anos ago

Genuino 101 com Intel® Curie™

by Arduino e Cia
8 anos ago

Comunicação Wifi entre módulos ESP8266 ESP-01

by Arduino e Cia
2 anos ago
Sair da versão mobile