Guia básico dos Módulos TX / RX – RF 433MHZ
Estes são os tópicos que iremos abordar neste Guia básico dos Módulos TX / RX – RF 433MHZ :
- Introdução;
- Pinagem dos Módulos TX / RX de 433 MHz;
- Especificações dos Módulos TX / RX de 433 MHz;
- Sobre as Antenas dos Módulos TX e RX;
- Transmitir dados entre dois Arduinos.
Introdução
Este conjunto de módulos de transmissão(TX) e receção(RX) de RF de 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 recetor.
O 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.
Estas são algumas aplicações para estes módulos RF de 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 Recetor 433 MHz
Modulo Transmissor – pinagem:
- Data – pino de transmissão de dados;
- VCC – pino de alimentação: 3 a 12 V;
- GND – terra.
Módulo Recetor – pinagem:
- VCC – pino de alimentação: 5V;
- Data – pino de recepção de dados;
- Data – idem – conectado ao pino 2;
- 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;
- Frequência de operação: 433,92 MHz;
- Corrente de operação: 20 a 28 mA;
- Potencia 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 Recetor 433 MHz (XY-MK-5V) :
- Tensão de operação: 5 V (somente);
- Frequência de operação: 433,92 MHz;
- Corrente de operação: 4 mA;
- Sensibilidade de receção: -105DB;
- Antena externa: fio com 17,3 cm.
Circuito do Recetor 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 recetor. Sabendo-se que a frequência da portadora é de 433,92 MHz e a velocidade da onda electromagné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
Usa-se 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 recetor, ambas com o mesmo tamanho.
Transmitir dados entre dois Arduinos :
Os primeiros tutoriais que descobrimos na Internet sobre o uso destes módulos TX / RX RF 433 MHz , usavam a biblioteca VirtualWire. Mas no site do criador 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 GITHUB.
Biblioteca RadioHead / Adafruit
Para instalar a Biblioteca RadioHead:
- Baixe o arquivo ZIP;
- 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 esta biblioteca, e funcionou perfeitamente nos nossos testes. Ela pode ser adaptada para a sua aplicação, para enviar dados entre dois Arduinos. Usando estes 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 potencia 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, esta biblioteca poderá ser usada.
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.
Este é o Sketch que deve ser gravado no Arduino conectado ao Módulo Transmissor. Uma mensagem de teste será enviada a cada meio segundo.
/* Programa para envio de Mensagem Blog Electrofun http://www.electrofun.pt/blog/guia-basico-dos-modulos-tx-rx-rf-433mhz Arduino UNO - IDE 1.8.5 - Modulo TX RF 433 MHz */ #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 recetor RH_ASK driver; // instância RH ASK RHReliableDatagram gerente(driver, TX_ADDRESS); // configura o gestor 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); // inicia a consola serial 9600 bps if (!gerente.init()) { // se não iniciar o gestor Serial.println("Falha ao iniciar"); // print na consola serial } } void loop() { Serial.print("Transmitindo mensagem n. "); // print na consola serial Serial.println(count); // print do contador if (!gerente.sendtoWait(data, sizeof(data), RX_ADDRESS)) { // se o gestor enviar mensagem count++; // desenvolve o contador } delay(500); // atraso 0,5 segundo }
Montagem do Módulo Recetor RF 433 MHz:
Módulo Recetor 433 MHz
Obs : O Módulo Recetor pode ser montado com um Arduino Uno ou Mega. Conecte o pino D11 do Arduino no pino DATA do Módulo Recetor.
Este é o Sketch que deve ser gravado no Arduino conectado ao Módulo Recetor. Uma mensagem de teste será recebida a cada meio segundo. Durante os testes iniciais, coloque o transmissor perto do Recetor. Depois faça o teste distante um do outro. Obstáculos como paredes maciças ou portões metálicos poderão prejudicar a receção. Uma transmissão ao ar livre poderá ter um alcance bem maior.
/* Programa para receção de Mensagem Blog Electrofun http://www.electrofun.pt/blog/guia-basico-dos-modulos-tx-rx-rf-433mhz Arduino UNO - IDE 1.8.5 - Modulo RX RF 433 MHz */ #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 recetor 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); // configurar o gestor void setup() { Serial.begin(9600); // inicia a consola serial 9600 bps if (!gerente.init()) { // se não iniciar o gestor Serial.println("Falha na inicialização"); // print na consola serial } } void loop() { if (gerente.available()) { // se o gestor estiver ligado tamanho = sizeof(buf); // determina o tamanho do buffer if (gerente.recvfromAck(buf, &tamanho, &from)) { // se o gestor receber mensagem Serial.print("Recebido de: 0x"); // print na consola serial Serial.print(from, HEX); // print do endereço do transmissor em Hexadecimal Serial.print(": "); // print na consola serial Serial.println((char*)buf); // print da mensagem recebida } } }
Esta é a tela da Consola Serial da IDE do Arduino Recetor (9600 bps), com as mensagens recebidas: