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 :
Módulo transmissor 433 MHz e Módulo Receptor 433 MHz
Modulo Transmissor – pinagem:
Módulo Receptor – pinagem :
Módulo Transmissor 433 MHz (FS1000A) :
Circuito do Transmissor 433 MHz
Módulo Receptor 433 MHz (XY-MK-5V) :
Circuito do Receptor 433 MHz
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.
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:
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.
/* 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.
/* 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 :
Desvendando o controle remoto RF
Decodificador para o Encoder HT6P20B com Arduino
|
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!