A partir dos passos abaixo você vai aprender a comunicar…
Como usar com Arduino – Módulo (Transmissor e Receptor) Super Heterodino RF 433MHz
– Descrição:
O Módulo (Transmissor e Receptor) Super Heterodino RF 433MHz é utilizado para comunicações através de radiofrequência. É amplamente utilizado em sistema de alarmes, controle remoto, projetos de robótica e em projetos que envolva a troca de dados sem fio.
O grande diferencial do Módulo (Transmissor e Receptor) Super Heterodino RF 433MHz está no circuito integrado super heterodino que o transmissor e o receptor possuem. Este CI permite que o módulo tenha capacidade de recepção de alta potência e continuidade elevada, sem interferências e sem perca de sinal.
– Especificações (Transmissor):
– Modelo do transmissor: WL102-341
– Tensão de operação: 2 a 3,6VDC
– Potência do sinal de transmissão: >11dBm
– Frequência de operação: 433MHz
– Taxa de transmissão: até 20KHz
– Modulação: ASK / OOK
– Antena: 25cm
– Especificações (Receptor):
– Modelo do receptor: WL101-341
– Tensão de operação: 3 a 5VDC
– Frequência de operação: 433MHz
– Sensibilidade: -110dB
– Taxa de transmissão: 2 a 10KHz
– Modulação: OOK
– Antena: 32cm
– Aplicações:
Projetos com Arduino ou outras plataformas microcontroladas em que seja necessário utilizar comunicação sem fio de baixo custo.
– Proposta da prática:
Em um Arduino conectar o Transmissor RF e conectar também um botão. Ao pressionar o botão, um comando será enviado para o Receptor RF que vai estar conectado em um outro Arduino que também vai estar conectado a um LED. Ao receber o comando, o LED irá acender ou apagar.
– Lista dos itens necessários:
02 – Arduino com Cabo USB
01 – Módulo (Transmissor e Receptor) Super Heterodino RF 433MHz
01 – Chave Táctil / Push Button
01 – LED Difuso 5mm Vermelho
01 – Resistor de 150Ω
02 – Protoboard
10 – Cabos Jumper macho-macho
01 – Fonte DC 9V 1A Bivolt Chaveada (para um dos Arduinos)
OBS: você também pode alimentar os dois Arduinos pelo PC através de dois cabos USB.
– Biblioteca:
– Importando bibliotecas para o ambiente de programação do Arduino:
Arduino – Importando bibliotecas para a IDE
– Esquema de ligação da prática (Transmissor):
– Código (Transmissor):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include <RH_ASK.h> //INCLUSÃO DE BIBLIOTECA #include <SPI.h> //INCLUSÃO DE BIBLIOTECA RH_ASK driver; //CRIA O DRIVER PARA COMUNICAÇÃO const int pinoBotao = 2; //PINO DIGITAL UTILIZADO PELO PUSH BUTTON void setup(){ driver.init(); //INICIALIZA A COMUNICAÇÃO RF DO DRIVER pinMode(pinoBotao, INPUT_PULLUP); //DEFINE O PINO COMO ENTRADA / "_PULLUP" É PARA ATIVAR O RESISTOR INTERNO //DO ARDUINO PARA GARANTIR QUE NÃO EXISTA FLUTUAÇÃO ENTRE 0 (LOW) E 1 (HIGH) } void loop(){ const char *msg = "led"; //VARIÁVEL RECEBE O VALOR (led) if(digitalRead(pinoBotao) == LOW){ //SE A LEITURA DO PINO FOR IGUAL A LOW, FAZ driver.send((uint8_t *)msg, strlen(msg)); //ENVIA AS INFORMAÇÕES PARA O RECEPTOR (PALAVRA: led) driver.waitPacketSent(); //AGUARDA O ENVIO DAS INFORMAÇÕES delay(200); //INTERVALO DE 200 MILISSEGUNDOS } } |
OBS: conecte o cabo USB ao Arduino e ao computador e faça o carregamento do código na placa.
– Esquema de ligação da prática (Receptor):
– Código (Receptor):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
#include <RH_ASK.h> //INCLUSÃO DE BIBLIOTECA #include <SPI.h> //INCLUSÃO DE BIBLIOTECA RH_ASK driver; //CRIA O DRIVER PARA COMUNICAÇÃO const int pinoLed = 4; //PINO DIGITAL UTILIZADO PELO LED String str = ""; //VARIÁVEL DO TIPO STRING int statusLed = 0; //VARIÁVEL DO TIPO INT (CONTROLA O ESTADO ATUAL DO LED) void setup(){ driver.init(); //INICIALIZA A COMUNICAÇÃO RF DO DRIVER pinMode(pinoLed, OUTPUT); //DEFINE O PINO COMO SAÍDA digitalWrite(pinoLed, LOW); //LED INICIA DESLIGADO } void loop(){ uint8_t buf[RH_ASK_MAX_MESSAGE_LEN]; //LÊ A MENSAGEM RECEBIDA (PALAVRA: led) uint8_t buflen = sizeof(buf); //CRIA O COMPRIMENTO DO BUFFER PARA O TAMANHO DE buf if(driver.recv(buf, &buflen)){ //SE O DRIVER RECEBEU buf(INTEIRO) E buflen (COMPRIMENTO DE DADOS), FAZ str = ""; //VARIÁVEL RECEBE VAZIO int i; //VARIÁVEL LOCAL DO TIPO INTEIRO for(int i = 0; i < buflen; i++){ //PARA i IGUAL A 0, ENQUANTO i MENOR QUE buflen, INCREMENTA i str += (char)buf[i]; //VARIÁVEL RECEBE OS CARACTERES E FORMA A PALAVRA } if((str.equals("led")) && (statusLed == 0)){ //SE str FOR IGUAL A "led" E statusLed FOR IGUAL A 0, FAZ statusLed = 1; //VARIÁVEL RECEBE 1 digitalWrite(pinoLed, HIGH); //ACENDE O LED }else{ //SENÃO, FAZ if((str.equals("led")) && (statusLed == 1)){ //SE str FOR IGUAL A "led" E statusLed FOR IGUAL A 1, FAZ statusLed = 0; //VARIÁVEL RECEBE 0 digitalWrite(pinoLed, LOW); //APAGA O LED } } } } |
OBS: conecte o cabo USB ao Arduino e ao computador e faça o carregamento do código na placa.
– Tutorial de instalação e configuração do ambiente de programação do Arduino:
Arduino – Instalação e Configuração da IDE no Windows
– Resultado final:
Gostou desta prática? Então deixa seu comentário, dúvida ou sugestão aí embaixo!
Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop
Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.
Obrigado e até a próxima!
Seu feedback é muito importante! Que tal dar uma nota para esta postagem?! Faça sua avaliação aqui embaixo.
Postagem anterior: Blynk – Utilizando com o Shield WiFi ESP8266 e Arduino
Bom Dia, tenho o transmissor idêntico ao que você montou, e também tenho um modulo rele de um canal rf entrada 12 volts para saida 110 220 Volts ele tem o receptor integrado, poderia ensinar como ligar no Arduíno e o código, obrigado.
Olá Euler,
Gostaria de um exemplo de comunicação entre dois arduinos utilizando dois botões e dois leds. Tentei fazer, mas não obtive sucesso, poderia me ajudar?
Obrigado
Abraço
Olá Everson.
Agradeço pelo comentário!
Não cheguei a implementar prática desta forma.
EULER TUDO BEM!
FERA GOSTARIA DE SABER COMO POSSO LIGAR VARIOS RECEPTORES E APENAS UM TRANSMISSOR, TEM COMO VC TEM ALGO DO TIPO?
Olá Washington.
Agradeço pelo comentário!
Sim é possível, contudo, você deverá usar um encoder para cada transmissor e um decoder no receptor. Desta forma, os sinais enviados serão codificados e decodificados no receptor.
Você pode usar por exemplo, o KIT HT12E e HT12D (Encoder e Decoder) para RF:
https://www.masterwalkershop.com.br/kit-ht12e-e-ht12d-encoder-e-decoder-para-rf
EU GOSTARIA DE SABER QUAL SERIA O CÓDIGO PARA ENVIAR DE ARDUINO PARA DISPOSITIVO EXTERNO, EXEMPLO: CORTINA AUTOMATIZADA QUE É ACIONADA VIA RF 433,92 MHZ.
Olá Jesse.
Agradeço pelo comentário!
Não temos nenhum tutorial neste sentido, contudo, com o código desta postagem você tem uma base para começar a desenvolver seu próprio código para comunicar com dispositivos externos.