Como funcionam os módulos RF Tx-Rx de 433MHz e como fazer a integração com o Arduino?

 

 

COMO FUNCIONAM OS MÓDULOS RF Tx-Rx de 433Mhz E COMO FAZER A INTEGRAÇÃO COM O ARDUINO?

 

 

Os avanços na tecnologia sem fio têm desempenhado um papel crucial, permitindo uma ampla gama de aplicações que vão desde telecomunicações até automação residencial. Nesse contexto, os módulos de radiofrequência (RF) têm um papel fundamental, possibilitando a transmissão e recepção de dados por meio de sinais de rádio. Neste artigo, direcionamos nosso foco para os módulos TX (transmissor) e RX (receptor) de radiofrequência na faixa de 433MHz, quando utilizados em conjunto com a plataforma Arduino.

Nosso objetivo é explorar os princípios básicos desses módulos, compreender suas características e discutir suas possíveis aplicações em projetos eletrônicos. Ao compreender como esses módulos de radiofrequência funcionam, os entusiastas de eletrônica e programação podem incorporá-los em seus projetos para criar sistemas de comunicação sem fio personalizados e eficientes.

Este artigo servirá como uma introdução abrangente aos módulos RX e TX de radiofrequência na faixa de 433MHz, quando utilizados em conjunto com a plataforma Arduino. Ao fornecer uma visão geral dos princípios básicos desses módulos, suas características e possíveis aplicações em projetos DIY, esperamos capacitar os leitores a explorar e aproveitar ao máximo essa combinação versátil.

 

Mas afinal o que são os módulos de radiofrequência de 433MHz?

Os módulos RF de 433MHz são dispositivos de comunicação sem fio que operam na frequência de 433 mega-hertz (MHz). Eles são projetados para permitir a transmissão e recepção de dados sem fio em curtas distâncias. Esse tipo de módulo é comumente utilizado em sistemas de controle remoto, sistemas de segurança, sistemas de automação residencial, sensores sem fio e outros dispositivos que requerem comunicação sem fio de curto alcance.

Os módulos RF de 433MHz geralmente consistem em um transmissor e um receptor. O transmissor converte os dados em sinais de rádio e os envia para o receptor. O receptor recebe os sinais de rádio e os converte novamente em dados utilizáveis pelo dispositivo receptor.

 

Visão geral do módulo RF transmissor (TX) FS1000A

 

 

O módulo RF FS1000A é um transmissor compacto e possui um design extremamente simplificado. Seu funcionamento é baseado em um ressonador SAW (Surface Acoustic Wave) ajustado para operar na frequência de 433MHz. Além disso, o módulo contém um transistor chaveador e alguns componentes passivos. Essa combinação de elementos é responsável por sua funcionalidade básica de transmissão de sinais. Na Figura 1 apresentamos o design do módulo transmissor.

 

 

Figura 1 -  Design do módulo RF transmissor FS1000A

 

Quando o sinal de entrada está em nível alto, o módulo transmissor RF gera uma onda portadora de radiofrequência (RF) constante na frequência de 433 MHz. No entanto, quando o sinal de entrada está em nível baixo, o oscilador do módulo para de funcionar, resultando em uma onda modulada em amplitude. Essa técnica de modulação é conhecida como Amplitude Shift Keying (ASK).

 

Especificações do Módulo Transmissor RF

 - Modelo: FS1000A

 - Tensão de operação:  5V

 - Corrente de operação: 9mA a 40mA

 - Frequência de operação: 433 MHz

 - Distância de transmissão: 100 metros (máximo)

 - Técnica de Modulação: ASK (Amplitude shift keying)

 - Velocidade de transmissão de dados: 10Kbps

 

Visão geral do módulo RF receptor (RX) MX-RM

 

 

O módulo receptor RF MX-RM é tão simples quanto o módulo transmissor, apesar de sua aparência. Consiste em um circuito sintonizado de RF e um par de amplificadores operacionais que amplificam a onda portadora recebida. O sinal amplificado é então alimentado em um PLL (Phase Lock Loop) que desempenha um papel essencial no processo de decodificação, permitindo que o decodificador “trave” em um fluxo de bits digitais, tornando a saída decodificada mais precisa e melhorando a imunidade a ruídos e interferências externas. Na Figura 2 apresentamos o design do módulo receptor.

 

Figura 2 -  Design do módulo RF receptor MX-RM

 

Especificações do Módulo Receptor

 - Modelo: MX-RM

 - Tensão de operação: 5V

 - Corrente Estática: 4MA

 - Frequência do receptor: 433,92MHZ

 - Sensibilidade: 105DB

 - Dimensão: 30x14x7mm

 

Pinagem dos módulos transmissor e receptor de radiofrequência

 

 

 

Técnica de modulação ASK (Amplitude Shift Keying)

Os módulos utilizam uma técnica chamada Amplitude Shift Keying (ASK), também conhecida como chaveamento por deslocamento de amplitude, para enviar dados digitais através de rádio. Nessa técnica, a amplitude da onda portadora (no nosso caso, um sinal de 433 MHz) é modificada em resposta a um sinal de dados de entrada.

Essa técnica é bastante similar à modulação de amplitude usada no rádio AM. Por ter apenas dois níveis de amplitude, é às vezes referida como Chaveamento por Mudança de Amplitude Binária. Podemos pensar nela como um interruptor ON/OFF.

Quando um bit lógico 1 precisa ser transmitido, a onda portadora é transmitida com a sua amplitude completa. Por outro lado, quando um bit lógico 0 é transmitido, nenhum sinal é enviado, resultando em uma ausência de onda portadora. A Figura 3 ilustra o processo de modulação de amplitude.

 

Figura 3 – Modulação de amplitude

 

A vantagem do chaveamento de Amplitude Shift é a facilidade de implementação. O circuito do decodificador é bastante simples de projetar. Além disso, ASK requer menos largura de banda do que outras técnicas de modulação, como FSK (Frequency Shift Keying). Esta é uma das razões pelas quais é rentável.

A desvantagem do ASK é que ele é suscetível à interferência de outros equipamentos de rádio e ruído ambiente. No entanto, contanto que você transmita dados a uma taxa relativamente lenta, ele pode funcionar de forma confiável na maioria dos ambientes.

 

Integrando os módulos de radiofrequência com o Arduino Uno. 

Agora que temos um entendimento abrangente dos módulos de radiofrequência, é o momento de utilizá-los com o Arduino. Para enviar os dados sem fio utilizaremos duas placas de Arduino, em uma delas conectaremos o módulo transmissor e na outra conectaremos o módulo receptor. O projeto consiste basicamente no envio de uma determinada mensagem do circuito transmissor para o circuito receptor via radiofrequência.

Esta experiência simples, será útil para aprender como usar os módulos e pode servir como base para experimentos e projetos mais práticos.

 

Materiais para montagem dos circuitos

A montagem do circuito transmissor é simples, pois possui apenas três pontos de conexão. O pino VCC do módulo TX deve ser conectado ao pino 5V do Arduino e o GND do módulo TX ao GND do Arduino. O pino de entrada de dados do módulo TX deve ser conectado ao pino digital 12 do Arduino. A montagem do circuito transmissor está representada na Figura 4.

 

Figura 4 – Montagem do circuito transmissor

 

A tabela a seguir resume as principais conexões do circuito transmissor.

 

 

Depois de conectar o transmissor, você pode prosseguir para a montagem do circuito receptor. As conexões do circuito receptor são tão simples quanto a do transmissor. O pino VCC do módulo RX deve ser conectado ao pino 5V do Arduino e o GND do módulo RX ao GND do Arduino. Um dos dois pinos de saída de dados do módulo RX deve ser conectado ao pino digital 11 do Arduino. A montagem do circuito receptor está representada na Figura 5.

 

Figura 5 – Montagem do circuito receptor

 

A tabela a seguir resume as principais conexões do circuito receptor.

 

Programação do circuito transmissor e do circuito receptor

Para este projeto utilizaremos a biblioteca RadioHead. Esta biblioteca é responsável por simplificar a programação de códigos utilizando os módulos RF. Para instalar a biblioteca RadioHead no Arduino, siga os seguintes passos:

 - Abra a IDE do Arduino em seu computador.

 - Vá até o menu "Sketch" e selecione "Incluir Biblioteca" (ou "Include Library").

 - No submenu que aparece, clique em "Gerenciar Bibliotecas" (ou "Manage Libraries").

 - Na janela "Gerenciador de Bibliotecas", digite " RadioHead " na barra de busca.

 - A biblioteca RadioHead deve aparecer nos resultados da pesquisa. Clique nela para selecioná-la.

 - Em seguida, clique no botão "Instalar" (ou "Install").

 - Aguarde até que a instalação seja concluída. Você verá uma mensagem informando quando a instalação for bem-sucedida.

 - Feche o Gerenciador de Bibliotecas.

Programação do circuito transmissor:

Para o circuito transmissor digite o código a seguir:

 

 

Explicação do código do circuito transmissor:

Passo 1: Inclusão de bibliotecas

Nesta etapa, estamos incluindo as bibliotecas necessárias para o uso do módulo transmissor RF e da comunicação SPI.

 

Passo 2: Criação do objeto RH_ASK

Aqui, estamos criando um objeto chamado driver do tipo RH_ASK, que será usado para controlar o módulo transmissor RF.

 

Passo 3: Função setup()

A função setup() é executada apenas uma vez no início do programa. Neste caso, estamos iniciando a comunicação serial com uma taxa de transmissão de 9600 bps e, em seguida, inicializando o driver do rádio chamando o método init() do objeto driver. Se a inicialização falhar, uma mensagem de erro será exibida no monitor serial.

 

Passo 4: Função loop()

A função loop() é executada continuamente em um loop infinito. Neste caso, estamos definindo uma variável chamada mensagem que contém a mensagem a ser enviada. Em seguida, chamamos o método send() do objeto driver para enviar a mensagem. O método send() espera uma matriz de bytes (uint8_t) como argumento, portanto, fazemos um cast da variável mensagem para (uint8_t *) e usamos strlen(mensagem) para obter o comprimento da mensagem em bytes.

Em seguida, chamamos o método waitPacketSent() do objeto driver, que aguarda a transmissão da mensagem ser concluída antes de continuar. Isso garante que a mensagem seja enviada antes de prosseguir com o próximo ciclo do loop.

Finalmente, usamos a função delay() para aguardar 2 segundos antes de enviar a próxima mensagem. Isso é feito para evitar que as mensagens sejam enviadas muito rapidamente.

 

Programação do circuito Receptor:

Para o circuito receptor digite o código a seguir:

 

 

 

Explicação do código do circuito receptor

A única diferença do código do circuito receptor em relação ao do circuito transmissor está presente no void loop:

 

 

No código do circuito receptor a função loop() é executada continuamente em um loop infinito. Neste caso, estamos criando um buffer chamado buf para armazenar a mensagem recebida do transmissor. O tamanho do buffer é definido pela constante RH_ASK_MAX_MESSAGE_LEN da biblioteca RadioHead.

Em seguida, criamos uma variável buflen para armazenar o tamanho atual do buffer.

Usamos o método recv() do objeto driver para verificar se há alguma mensagem recebida. O método recv() espera dois argumentos: o buffer para armazenar a mensagem e um ponteiro para a variável buflen para armazenar o tamanho da mensagem recebida. Se uma mensagem for recebida com sucesso, o recv() retorna true.

Se uma mensagem for recebida, imprimimos a mensagem no monitor serial usando Serial.print() e Serial.println(). O buffer buf é convertido em uma string usando o cast (char *) e, em seguida, é exibido na serial.

Após digitar e fazer o upload dos códigos de ambos os circuitos, alimente os circuitos e em seguida abra o monitor serial do circuito receptor.

Se tudo estiver ok, você poderá ver a mensagem enviada pelo transmissor via radiofrequência. A Figura 6 mostra a mensagem recebida pelo transmissor a cada 2 segundos.

 

Figura 6 – Mensagem recebida pelo receptor via radiofrequência

 

Conclusão

Uma das principais vantagens do uso dos módulos de radiofrequência de 433MHz é a sua simplicidade de integração com o Arduino. Com uma biblioteca adequada e algumas linhas de código, é possível estabelecer a comunicação sem fio entre dispositivos de forma eficiente e confiável, possibilitando a criação de sistemas automatizados de controle sem fio, como por exemplo no acionamento de luzes, portões, persianas, sistemas de segurança entre outros.