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!