Componentes Eletronicos

Guia Básico dos Módulos TX / RX – RF 433 MHz

Eletrogate 9 de setembro de 2018

Introdução

Esse conjunto de Módulos de transmissão(TX) e recepção(RX) de RF 433 MHz serve para o envio de dados digitais entre dois Arduinos (ou outro tipo de Microcontrolador). A comunicação é unidirecional , isto é, os dados são enviados pelo transmissor e recebidos pelo receptor.

A tipo de modulação da portadora de Radio frequência é o ASK (amplitude shift keying) – modulação por chaveamento de amplitude. Isto é, quando existe o Bit 1  a portadora transmite o sinal de 433 MHz. Quando o Bit é zero, nenhum sinal é transmitido.

Referência : Modulação ASK

Essas são algumas aplicações para esses módulos RF 433 MHz :

  • transmissão de dados à curta distância,
  • controle remoto,
  • automação residencial,
  • sistema de segurança – Alarme,
  • Registro remoto de dados (Log).

Pinagem dos Módulos TX /RX de 433 MHz

Módulo transmissor 433 MHz e Módulo Receptor 433 MHz

Modulo Transmissor – pinagem:

  1. Data – pino de transmissão de dados
  2. VCC – pino de alimentação : 3 a 12 V
  3. GND – terra

Módulo Receptor – pinagem :

  1. VCC – pino de alimentação : 5V
  2. Data – pino de recepção de dados
  3. Data – idem – conectado ao pino 2
  4. GND – terra

Especificações dos Módulos TX /RX de 433 MHz

Módulo Transmissor 433 MHz (FS1000A) :

  • Tensão de operação :  3 a 12 V
  • Frequencia de operação : 433,92 MHz
  • Corrente de operação : 20 a 28 mA
  • Potência de saída :  10mW
  • Taxa de transferência  < 4Kbps
  • Alcance da transmissão < 100 m (com antena, sem obstáculos)
  • Antena externa : fio com 17,3 cm

Circuito do Transmissor 433 MHz

Módulo Receptor 433 MHz (XY-MK-5V) :

  • Tensão de operação :  5 V (somente)
  • Frequencia de operação : 433,92 MHz
  • Corrente de operação : 4 mA
  • Sensibilidade de recepção : -105DB
  • Antena externa : fio com 17,3 cm

Circuito do Receptor 433 MHz


Sobre as Antenas dos Módulos TX e RX

Para um perfeito funcionamento dos módulos de RF 433 MHz, é necessário a instalação das antenas tanto no transmissor quanto no receptor.  Sabendo-se que a frequência da portadora é de 433,92 MHz e a velocidade da onda eletromagnética no espaço é de 3 x 108 m/s , o comprimento de onda é :

 λ = v/f = 300.000.000 / 433.920.000 = 0,69 metros 

Usando uma antena com 1/4 do comprimento de onda :

D = 0,69 m / 4  = 17,28 cm 

Portanto solde fios rígidos de aproximadamente 17,3 cm nos locais indicados na foto dos módulos. Uma antena para o transmissor e outra para o receptor, ambas com o mesmo tamanho.


Transmitindo Dados Entre dois Arduinos

Os primeiros tutoriais que descobri na WEB sobre o uso desses módulos TX/RX RF 433 MHz , usavam a biblioteca VirtualWire. Mas no site do idealizador dessa Biblioteca, ele indica outra biblioteca mais recente – a RadioHead, que permite o uso de vários tipos de módulos de comunicação.  Apesar dela ser antiga também, a ADAFRUIT inseriu-a no seu repositório do GITHUB.

Biblioteca RadioHead / Adafruit

Para instalar a Biblioteca RadioHead:

  • Baixe o arquivo ZIP RadioHead-master
  • Na Arduino IDE, clique em    Sketch > Adicionar Biblioteca > Incluir Biblioteca.zip
  • Adicione o arquivo zipado da biblioteca
  • Feche e abra novamente a Arduino IDE, para ativar a biblioteca.

Bem interessante essa biblioteca, e funcionou perfeitamente nos meus testes. Ela poderá ser adaptada para a sua aplicação, enviando dados entre dois Arduinos. Usando os módulos com antenas, o alcance poderá ser expressivo. Lembrando que quanto maior a tensão de alimentação do módulo transmissor, maior será a potência de RF a ser transmitida e portanto maior alcance (limite : 12V).

Como visto nas especificações do módulo TX, a taxa de transmissão de dados é relativamente baixa (< 4000 bps). Mas para aplicações como o envio de dados de um sensor, por exemplo, essa biblioteca poderá ser usada.

Materiais necessários para o projeto com Transmissor e Receptor 433 MHz e Arduino

Montagem do Módulo Transmissor RF 433 MHz:

Módulo Transmissor RF 433 Mhz

Obs : O Módulo Transmissor pode ser montado com um Arduino Uno ou Mega. A alimentação do módulo Transmissor poderá ser de até 12V, para um maior alcance. Conecte o pino D12 do Arduino no pino DATA do Módulo Transmissor.

Esse é o Sketch para ser gravado no Arduino conectado ao Módulo  Transmissor. Uma mensagem de teste será enviada à cada meio segundo.

RF433askTX.ino

/* Programa para envio de Mensagem
  Blog Eletrogate https://blog.eletrogate.com/guia-basico-dos-modulos-tx-rx-rf-433mhz
  Arduino UNO - IDE 1.8.5 - Modulo TX RF 433 MHz
  Gustavo Murta   6/setembro/2018
  Baseado em https://github.com/adafruit/RadioHead/tree/master/examples/ask
*/


#include <RHReliableDatagram.h>                      // biblioteca Radiohead reliableDatagram
#include <RH_ASK.h>                                  // biblioteca Radiohead ASK
#include <SPI.h>                                     // biblioteca SPI

#define TX_ADDRESS 1                                 // endereço do transmissor
#define RX_ADDRESS 2                                 // endereço do recept

RH_ASK driver;                                       // instância RH ASK
RHReliableDatagram gerente(driver, TX_ADDRESS);      // configurando o gerenciador

uint8_t count = 1;                                   // contador
uint8_t data[] = "Mensagem de teste";                // mensagem a ser enviada
uint8_t buf[RH_ASK_MAX_MESSAGE_LEN];                 // buffer da mensagem

void setup()
{
  Serial.begin(9600);                                // inicializa console serial 9600 bps
  if (!gerente.init())                               // se a inicialização do gerenciador falhar
    Serial.println("Falha na inicializacao");        // print na console serial
}

void loop()
{
  Serial.print("Transmitindo mensagem n. ");                // print na console serial
  Serial.println(count);                                    // print do contador 
  if (!gerente.sendtoWait(data, sizeof(data), RX_ADDRESS))  // se gerenciador enviar mensagem 
  {
    count++;                                                // incrementa contador 
  }
  delay(500);                                               // atraso 0,5 segundo
}

Montagem do Módulo Receptor RF 433 MHz:

Módulo Receptor 433 MHz

Obs : O Módulo Receptor pode ser montado com um Arduino Uno ou Mega. Conecte o pino D11 do Arduino no pino DATA do Módulo Receptor.

Esse é o Sketch para ser gravado no Arduino conectado ao Módulo  Receptor. Uma mensagem de teste será recebida à cada meio segundo. Durante os testes iniciais, coloque o transmissor perto do Receptor. Depois faça o teste distante um do outro. Obstáculos como paredes maciças, portões metálicos poderão prejudicar a recepção. Uma transmissão ao ar livre poderá ter um alcance bem maior.

RF433askRX.ino

/* Programa para recepção de Mensagem
  Blog Eletrogate https://blog.eletrogate.com/guia-basico-dos-modulos-tx-rx-rf-433mhz
  Arduino UNO - IDE 1.8.5 - Modulo RX RF 433 MHz
  Gustavo Murta   6/setembro/2018
  Baseado em https://github.com/adafruit/RadioHead/tree/master/examples/ask
*/

#include <RHReliableDatagram.h>                      // biblioteca Radiohead reliableDatagram
#include <RH_ASK.h>                                  // biblioteca Radiohead ASK
#include <SPI.h>                                     // biblioteca SPI

#define TX_ADDRESS 1                                 // endereço do transmissor
#define RX_ADDRESS 2                                 // endereço do receptor 

uint8_t count = 0;                                   // contador
uint8_t buf[RH_ASK_MAX_MESSAGE_LEN];                 // buffer da mensagem
uint8_t tamanho;                                     // tamanho da mensagem
uint8_t from;                                        // endereço de quem transmite

RH_ASK driver;                                       // instância RH ASK
RHReliableDatagram gerente(driver, RX_ADDRESS);      // configurando o gerenciador

void setup()
{
  Serial.begin(9600);                                // inicializa console serial 9600 bps
  if (!gerente.init())                               // se a inicialização do gerenciador falhar
    Serial.println("Falha na inicializacao");        // print na console serial
}

void loop()
{
  if (gerente.available())                           // se gerenciador estiver ativo
  {
    tamanho = sizeof(buf);                           // determina o tamanho do buffer
    if (gerente.recvfromAck(buf, &tamanho, &from))   // se o gerenciador receber mensagem
    {
      Serial.print("Recebido de: 0x");               // print na console serial
      Serial.print(from, HEX);                       // print do endereço do transmissor em Hexadecimal
      Serial.print(": ");                            // print na console serial
      Serial.println((char*)buf);                    // print da mensagem recebida
    }
  }
}

Essa é a tela da Console Serial da IDE do Arduino Receptor (9600 bps), com as mensagens recebidas :


Sobre o Autor


José Gustavo Abreu Murta

Consultor e Projetista de Sistemas Embarcados. Técnico em eletrônica, formado em Curso superior de TPD, pós-graduado em Marketing. Trabalhou por muitos anos na IBM na área de manutenção de computadores de grande porte. Aposentou-se, podendo curtir o que mais gosta : estudar e ensinar Tecnologia. Hobista em eletrônica desde 1976. Gosta muito de Fotografia e Observação de aves.


Eletrogate

9 de setembro de 2018

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Conheça a Metodologia Eletrogate e Lecione um Curso de Robótica nas Escolas da sua Região!

Eletrogate Robô

Cadastre-se e fique por
dentro de novidades!