Comunicação sem fio com o módulo RF 433 MHz
Uma opção barata e eficiente para transmissão de dados entre placas Arduino, o módulo RF 433 MHz funciona muito bem em aplicações onde a velocidade de transmissão não é um ponto crítico.
Esses módulos são pequenos, baratos e relativamente fáceis de usar, e é isso que veremos neste artigo, enviando sinais de um Arduino para outro.
O módulo RF 433 MHz
O módulo transmissor funciona com alimentação entre 3,5 e 12V, o que influi na potência e alcance do sinal, que pode chegar à 200 metros quando utilizamos também antenas adequadas.
Para testar esses módulos RF com Arduino, vamos utilizar o seguinte material:
- 2 placas Arduino Uno
- 1 Módulo RF 433 MHz Transmissor
- 1 Módulo RF 433 MHz Receptor
- 1 Push button
- 1 Led
- 1 resistor de 220 ohms (resistor pull-up do push-button)
- 1 resistor de 470 ohms (para o led)
Vamos montar dois circuitos separados, um para o transmissor e outro para o receptor. Para pequenas distâncias, não é necessário o uso da antena.
Obs: Se deseja utilizar o módulo RF 433MHz com vários transmissores e um receptor, não deixe de conferir o post Sistema Chama Garçom com Arduino e módulo RF 433MHz, aqui mesmo no Arduino e Cia!
Circuito Arduino Uno – Transmissor
No circuito transmissor o pino DATA do módulo RF será conectado ao pino digital 4 do Arduino. O push-button vai no pino analógico A0, e a alimentação do circuito é de 5V:
Antes de carregar o programa, faça o download da biblioteca VirtualWire, neste link. Faça o download, descompacte o arquivo e coloque a pasta VirtualWire dentro da pasta LIBRARIES da IDE do Arduino.
Carregue o programa abaixo no Arduino que será o TRANSMISSOR. Em caso de problemas com a recepção, tente alterar a velocidade de comunicação alterando a linha vw_setup(5000) colocando um valor menor, lembrando que o valor deve ser o mesmo tanto programa do transmissor como do receptor.
O programa verifica se o botão foi pressionado, e nesse caso inverte o valor da variável estado (0 ou 1) para string, enviando esse valor para o módulo transmissor RF.
//Programa: Comunicacao com Modulo RF 433 - Emissor //Autor: Arduino e Cia #include <VirtualWire.h> //Define pinos Led e Botao const int ledPin = 13; const int pino_botao = A0; int valor_botao; char Valor_CharMsg[4]; //Armazena estado led = ligar/desligar int estado = 0; void setup() { Serial.begin(9600); pinMode(ledPin,OUTPUT); pinMode(pino_botao,INPUT); //Pino ligado ao pino DATA do transmissor RF vw_set_tx_pin(4); //Velocidade de comunicacao (bits por segundo) vw_setup(5000); Serial.println("Trasmissao modulo RF - Acione o botao..."); } void loop() { //Verifica o estado do push-button valor_botao = digitalRead(pino_botao); //itoa(valor_botao,Valor_CharMsg,10); //Caso o botao seja pressionado, envia dados if (valor_botao == 0) { //Altera o estado do led estado = !estado; //Converte valor para envio itoa(estado,Valor_CharMsg,10); //Liga o led da porta 13 para indicar envio dos dados digitalWrite(13, true); //Envio dos dados vw_send((uint8_t *)Valor_CharMsg, strlen(Valor_CharMsg)); //Aguarda envio dos dados vw_wait_tx(); //Desliga o led da porta 13 ao final da transmissao digitalWrite(13, false); Serial.print("Valor enviado: "); Serial.println(Valor_CharMsg); delay(500); } }
Verifique o funcionamento do circuito abrindo o serial monitor e checando se o estado do botão está sendo alterado:
Circuito Arduino Uno – Receptor
A alimentação do módulo receptor também é feita por meio do pino 5V do Arduino. O receptor possui 2 pinos de dados, e qualquer um deles pode ser utilizado para ligação ao Arduino, na porta 7. O led que vai acender ou apagar conforme os comandos enviados pelo Arduino Transmissor está ligado à porta 5:
O ideal é alimentar o Arduino com o módulo receptor utilizando uma bateria ou fonte externa, para testar o alcance do módulo.
O programa do receptor recebe do transmissor o valor 0 ou 1 em formato string, converte esse valor para int (inteiro) e aciona a porta 5, ligando ou desligando o led.
//Programa: Comunicacao com Modulo RF 433 - Receptor //Autor: Arduino e Cia #include <VirtualWire.h> //Define pino led int ledPin = 5; int valor_recebido_RF; char recebido_RF_char[4]; void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); //Pino ligado ao pino DATA do receptor RF vw_set_rx_pin(7); //Velocidade de comunicacao (bits por segundo) vw_setup(5000); //Inicia a recepcao vw_rx_start(); Serial.println("Recepcao modulo RF - Aguardando..."); } void loop() { uint8_t buf[VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN; if (vw_get_message(buf, &buflen)) { int i; for (i = 0; i < buflen; i++) { //Armazena os caracteres recebidos recebido_RF_char[i] = char(buf[i]); } recebido_RF_char[buflen] = '\0'; //Converte o valor recebido para integer valor_recebido_RF = atoi(recebido_RF_char); //Mostra no serial monitor o valor recebido Serial.print("Recebido: "); Serial.print(valor_recebido_RF); //Altera o estado do led conforme o numero recebido if (valor_recebido_RF == 1) { digitalWrite(ledPin, HIGH); Serial.println(" - Led aceso !"); } if (valor_recebido_RF == 0) { digitalWrite(ledPin, LOW); Serial.println(" - Led apagado !"); } } }
Você também pode acompanhar o resultado da recepção desse circuito no serial monitor, que vai ter informações sobre o valor recebido e o estado do led:
Gostou do post módulo RF 433 MHz com Arduino? Confira aqui mesmo no Arduino e Cia outros posts sobre comunicação wireless.
Como fazer esse esquema, com 1 Arduino transmitindo e 8 Arduinos recebendo sinais diferentes para não serem acionados ao mesmo tempo?
Boa tarde Marco,
Você irá precisar de algum controle via software. Vamos supor que você vá acionar apenas uma porta em cada Arduino receptor. Então você pode criar um esquema de envio de 3 dígitos : o 1o. dígito para indicar qual Arduino será acionado, o 2o. dígito para indicar a porta, e o 3o. digito para indicar o estado (0 ou 1).
Ex : 251 – Indica ao Arduino 2 que ele deve enviar o valor 1 para a porta 5
Ex : 340 – Indica ao Arudino 3 que ele deve enviar o valor 0 para a porta 4
Em cada Arduino receptor, você deve configurar o programa para apenas responder ao seu próprio número, e ignorar os demais.
Resumindo, é isso. 🙂
Abraço !
Tem como enviar o exemplo que vc citou para o meu email, vai ser de grande ajuda amigo. …
Boa noite Marco,
Entendo, mas não tenho esse exemplo disponível no momento.
Abraço.
Estou tentando fazer esse esquema de um transmissor e dois ou mais receptores. No transmissor eu coloquei 2 botoes. quando clica em um é enviado '0' e o outro envia '1'. Os receptores captam tudo (0s e 1s) e com um if eu verifico se o que recebeu é 0 ou 1. Teoricamente funciona, mas na prática falha muito, como se os transmissores interferissem um no outro, as vezes funciona e as vezes não.
Você conseguiu Marco?
bom dia!! fera voce conseguiu fazer???? tem como me ajudar ???
Olá, gostaria de controlar 4 servo motores por 4 potenciometros diferentes usando esse sistema sem fio, você poderia me dar um auxílio de como ficaria mais ou menos esse código?
Boa noite Higo,
Interessante o projeto, mas ainda não tenho nada neste sentido. Mas é um bom assunto para um post.
Abraço !
Conseguiu controlar o servo pelo potenciometro?
tambem quero, quem conseguir manda pora qui?
Tem algo sobre isso?
Uma ideia é vc transmitir o valor analogico recebido do potenciometrobe transmitir esse valor via RF e o sistema receptor receber esse valor e colocalo na saida para o servo motor…
Excelente trabalho.
Obrigado Paulo !
Abraço.
poderia mim ajudar a acionar 5 aparelhos usando esse sistema
Boa tarde Josimar,
Sim, vc já tem o circuito e o programa montados ?
Abraço.
ja sim, fiz desse tipo mas nao funciona com mais botoes de entrada nem de saida, somente um botao que funciona
Desde de já agradeço pela sua ajuda.
ola, fiz mais um teste hoje mas nao consegui fazer funcionar com 5 botoes ligar e 5 desligar assim por diante….
abraço.
Parabéns Cara pelo empenho e pelo conhecimento, sei que tem que estudar muito e abrir mão de muita coisa pra saber o que você sabe, e ainda pela humildade de distribuir isso pra todos.
Parabéns…
Valeu Pablo, abraços e obrigado !
Ou roubar a ideia deste blog
http://blog.filipeflop.com/wireless/modulo-rf-transmissor-receptor-433mhz-arduino.html
Então Thiago… nada foi roubado. os dois posts são meus.. eu também escrevo para o blog FILIPEFLOP 🙂
Abraço!
O cara podia ter ficado calado, mas em vez de fazer um trabalho igual fica criticando (acusando) sem saber…que pena.
Parabéns pelo excelente trabalho Arduino e Cia.
Muito obrigado pelo reconhecimento. Abraço! 🙂
Adilson
Oi Luiz,
Pois é.. rsrs.. Muito obrigado.
Abraço!
Adilson
Boa noite.
Excelente post. Estou iniciando neste mundo do arduino… Gostaria de saber como posso adaptar o código para ao invés de usar um botão, possa usar um comando web. Já que estou usando um ethernet shield. Muito obrigado.
Boa noite,
Usar comandos pela web é possível, mas um pouco mais complicado. Vou ver se consigo publicar um post sobre isso em breve.
Abraço !
Boa tarde ….gostaria de acionar 10 reles no receptor usando 10 botoes no emissor ….so q n acho nenhum tutoria para mais de um botao e um led …..teria como de ajudar???
Bom dia!
É possivel usar transmissor e receptor em cada arduino.
Estou querendo fazer usar RF para o arduino master mandar comandos para o arduino slave e o slave mandar os status dos comandos para o master.
Obrigado!
Boa noite Carlos,
Funciona sim… Você também tem a opção de usar um NRF24L01, em que o mesmo sensor funciona como emissor e receptor, basta configurar via software.
Abraço !
Boa tarde, gostaria de saber se é possivel utilizar mais de 4 canais com o receptor e transmissor quando utilizar um arduino para transmissor e outro para receptor. Já que quando o transmissor e receptor são utilizados sem o arduino é possivel ter apenas 4 canais. Gostaria de saber também se é possivel utilizar um modulo joystick no transmissor para controlar um servomotor no receptor. Parabens pelo trabalho e agradeço desde já.
Boa noite Arthur,
Essa resposta eu vou ficar te devendo, eu não sabia dessa limitação de 4 canais. Quanto ao joystick, é possível sim, já que vc estará lendo os valores das portas analógicas e depois é só enviar isso via rádio.
Abraço!
como aumentar o alcance dos transmissor ??
Bom dia,
Utilize antenas tanto no transmissor como no receptor.
Abraço.
Olá, gostaria de saber como posso fazer para que um arduino envie um determinado código (exemplo: 60) e o outro receba e faça uma condição para rele?
como faço para alimentar com 12 vcc o transmissor e receptor, a fim de melhorar o alcance?
Boa tarde Josue,
Sinceramente nunca utilizei esses módulos com alimentação de 12V, mas creio que a ligação seja feita de maneira normal, nos pinos Vcc e GND. Só não sei como vão se comportar os pinos de dados.
Abraço!
olá, tenho um problema, quando ligo o transmissor tudo que esta em volta da casa como alarme da casa do carro portão eletronico a casa do vizinho tambem tudo para de funcionar por causa do transmissor porque ele interfere
Bom dia Sidnei,
Isso é estranho. Eu liguei o meu aqui e isso não acontece.
Abraço!
Sidnei, vc conseguiu resolver seu problema de interferência? Eu estou com o mesmo problema aqui. Tudo em volta pára de funcionar. Até o alarme do carro.
fiz segundo o esquema e o receptor não recebe nada. O que pode estar errado?
achei o problema, contato do protoboard de dados do transmissor com problema
Bom dia, estou precisando de ajuda para fazer uma comunicação adequada, mas ainda não achei. Eu tenho de usar uma central para receber as informações e vários pontos me enviando informações em tempo real ( de 20 a 50 pontos especificamente).
Vi que você respondeu o colega acima que tem como enviar endereçando, teria como receber endereçado também? Ou seria melhor usar um módulo WIFI onde eu conectaria ele a uma rede do meu local especifico?
Desde já eu agradeço
E vocês estão de parabéns pelos posts, tem ajudado muito.
Boa noite,
Dependendo do seu projeto, talvez seja mais fácil controlar isso usando Wifi, assim vc "amarra" a conexão por endereço IP. É só uma idéia.
Abraço!
Montei me parece perfeito.
Testei o emissor e deu certo.
No caso de receptor somente aparece a mensagem "…aguardando.." e o led não acende.
Poderia estar "pifado" o receptor mesmo aparecendo a mensagem no monitor serial?
Teria alguma dica?
Obrigado
Rodolfo ([email protected])
Boa noite,
Se ele recebe a mensagem de que foi recebido algum dado na serial, o problema provavelmente está na conexão do led.
Abraço!
Boa noite..
Cara estou fazendo um projeto, e utilizo o RF 433 transmissor e receptor, além disso utilizo um player de áudio, meu objetivo é acionar o player de áudio quando o sinal enviado pelo transmissor é recebido, porém não consigo ativar o player assim, será que alguém pode me ajudar ????
Qualquer coisa podem entrar em contato via e-mail: [email protected]
Preciso acionar 4 servos por RF, pode ser com potenciómetros ou botões. Tem algum tutorial que posso me ajudar?
Olá, gostaria de saber se é possível comunicar dados de um sensor ultrassônico via RF, ou de preferência para um celular Android via Bluetooth. Agradeço desde já é Parabéns pelo blog !!
Boa noite Guilherme,
Infelizmente não é possível, os celulares não trabalham com esse tipo de frequência.
Abraço e obrigado!
Olá, primeiramente Parabéns pelo blog!
Bom, estou fazendo um tcc que monitora o nível da caixa ďagua utilizando um sensor ultrassônico, mas preciso comunicar o arduino que vai ficar na caixa com outro dentro da residência via RF+display LCD ou de preferência com um celular Android, via Bluetooth. Gostaria de saber se isso é possível? Se puder dar uma clareada na minha mente eu ficarei muito grato kk pois acho que já queimei todos os meus neurônios com esse tcc kkk
gostaria de saber como faco pra enviar um comando com 16 numeros pra o receptor rf
Ola, gostaria de entender o que é e para q serve: uint8_t, buf e buflen se poder me ajudar ficaria grato, só achei explicações em inglês no Google.
Boa tarde Rafael,
O "buf" é o tamanho total do buffer que vai armazenar a mensagem, por exemplo, 30 caracteres.
O "buflen" é o tamanho da mensagem que foi recebida, até o caracter , pq você pode optar por mandar mensagens curtas, como "Oi", "Hello World" e "Arduino e Cia", que não chegam a 30 caracteres.
Abraço!
Excelente! Você sabe como posso adaptar para transmitir dados de um display triplo de sete segmentos para outro display?
Bom dia Débora,
Obrigado. Você teria 1 display triplo de cada lado ?
Abraço!
Boa tarde, eu queria saber como que faço para programar o receptor junto com um motor de passo e toda vez que o tranmissor mandar sinal para o motor de passo, ele vai virar para esquerda e depois no proximo sinal para a direita. Queria saber se tem como usar o transmissor fora, sem ser no arduino. Obrigado.
Olá eu queria um controle de 5 canais controlado pelo potenciometro no arduino 1 e no arduino 2 eu queria receber os comando do potenciometro via RF emissor e receptor ,e comanda os 5 canais com 5 servos motores ,co caso arduino 1 vai o emissor para fazer o cotrole e arduino 2 vai ser o comandado .Eu queria um alcace de ums 30 ,200 metros porinquanto ,se vc conseguir ,eu sor preciso da foto da montagem,, oque vai ussar e o codigo ,,,posso retribui com algua coisa depois ou irformaçao .meu email e [email protected]
will this work for the 315Mhz RF Wireless Transmitter and Receiver Link Kit Module ?
Hey Frank!
I think it will work, because is the same module, with another frequency.
Best regards!
good point, thanks!
oi boa noite…
o código do transmissor não compilou…
deu problema nessa linha vw_set_tx_pin(4); vw_setup(5000);
aparece que nao foi declarado……
boa noite, arduino e cia está de parabéns, montei o circuito , mas achei o alcance baixissimo, quase 1 m , ambos sem antena, é isso mesmo?
grato
Oi Rubens,
Realmente, sem antena é bem fraquinho….
Abraço!
Olá, quero enviar um som….vindo de um p10 da guitarra, indo pro arduino cm bluetoth e dps sendo recebido por outro e enviado por outra saida de p10 para uma caixa de som, quero muito fzr isso rsrs
Boa tarde,
Não é um projeto impossível, mas vai dar trabalho. rs
Olha esse projeto aqui, pode ser um ponto de partida: https://www.youtube.com/watch?v=2ZK6dcBTeT0
Abraço!
É possível fazer essa ligação com apenas um arduino ?
Boa noite,
É possível sim, teoricamente você pode usar qualquer pino como emissor/receptor.
Abraço!
Olá, estou trabalhando em um projeto e gostaria de saber se é possível transmitir as informações obtidas por um sensor ultrassônico para um microcontrolador PIC por meio do módulo rf 433 Mhz (transmissor/receptor). Abraços.
Boa tarde Artur,
Não tenho nada específico com PIC e sensor ultrassonico, mas este artigo pode te ajudar na parte de configurar o módulo RF:
http://microcontrolandos.blogspot.com.br/2013/10/pic-modulo-rf.html
Abraço!
Amigos,
Possuo um CLP WEG Click02 e gostaria de implementar um comando à distância nele. É possível desenvolver essa aplicação utilizando componentes Arduíno? Pensei em utilizar um conjunto emissor/receptor e um relé.
Abraços
Boa noite Frederico,
É possível sim, uma boa alternativa é usar um ESP8266, tenho alguns posts no blog sobre isso.
Abraço!
Boa tarde, gostaria de saber se é possível eu usa 2 transmissores para um receptor, pois nao estou conseguindo. Gostaria de saber como.
Desde de já agradeço.
E possível utilizar dois módulos rf ? ou seja em um arduino ( 1 emissor(A) e 1 receptor(B) e outro arduino ( 1 receptor(A) e 1 emissor(B). Comunicação de (A com A) e (B com B), espero de compreenda, tem que ser rf pois meu projeto a distancia e mais de 100 metros. grato pela atenção
Boa noite,
É possível sim, mas a essa distância acho difícil esse módulo funcionar, a não ser que seja em campo aberto.
Abraço!
Ola, belo tutorial !!
Estou usando um ATtiny85 com o transmissor para enviar para um arduino Uno com o receptor, mas sem sucesso.To usando o código acima.
Mas usando dois arduinos, funciona normal.
Já revisei as portas do ATtiny85 achando que estava conectando errado, mas não era isso.
Teria alguma dica e já fez comunicação com ATtiny85 ?
Grato.
Deus abençoe !!
Oi Jorge,
Vou ficar te devendo essa. Até tenho um Attiny85 pra testar, mas ainda não fiz o teste com o módulo RF. Vou ver se consigo postar algo.
Abraço!
Bom dia, gostaria de saber, como faço para o emissor continuar mandando o sinal automaticamente até o receptor.( Aciono o módulo, através de um botão, porém, digamos que não esteja na distância aceitável, para que chegue no receptor;(receptor, esta em movimento) assim gostaria que ao estiver na distância correta, eu não precise pressionar novamente o botão, e assim o resto da minha programação terminasse de rodar.Grato pela atenção
Boa noite, interessante seu projeto, digamos que, se eu quisesse copiar o sinal do meu controle de portão, nesse projeto eu conseguiria, ou teria que acrescentar mais a antena de longo alcance?
Boa tarde Alexandre,
Controles de portão são codificados, então primeiro você teria que arrumar uma programação específica para utilizar esse controle com o módulo RF do Arduino. Quanto ao alcance, uma antena maior é recomendável.
Abraço!
Olá, projeto interessante, estou iniciando um projeto com esse mesmo transmissor, mas estou com um problema que talvez vocês poderiam me ajudar. Preciso envia um código no mesmo formato/padrão que o meu portão/central de alarme "reconheça". Tipo assim, não preciso clonar meu controle apenas enviaria um código no mesmo padrão que o controle envia e faço o cadastro desse novo código na central do portão/alarme fazendo assim com que ele possa ativa/desativar a central ou abrir/fechar o portão.
muito bom
Valeu. Abraço! 🙂
Tem como com um receptor receber sinal de vários transmissores 433mhz? O objetivo é criar um sistema de votação
Boa tarde,
Tem sim. Crie um controle no programa para diferenciar cada transmissor.
Abraço!
Ola, muito bom o seu trabalho, mas estou com uma dúvida, estou usando um interruptor de 3 posições ao invés do botão, para q cada posição envie uma informação diferente, exemplo: 1 qndo estiver para a esquerda, 0 no meio e 2 para a direita, mas quando coloco isso no código (estou usando condições para enviar o numero de acordo com o lado ligado), o valor fica flutuando entre 1 e 0 ou 2 e 0, Sendo que já estou usando os resistores pull-up da arduino, poderia me ajudar?
Boa tarde Daniel,
Preciso saber o tipo de chave que você está usando, se é somente uma de três posições, isolada, ou se existe alguma ligação entre os pinos, digamos, laterais e o pino central (pode ser só uma chave selecionadora, que mantém o pino central ligado em um dos dois pólos).
Abraço!
Acabei dando um jeito a la gambiarra, mas para futuras duvidas de outras pessoas, estava usando uma que o pino central era o terra e os outros 2 estavam ligadas a entradas digitais, eu usei uma variante do seu código (que me ajudou MUITO), para meu trabalho, se for de seu interesse poderia mandar sem problemas algum.
Att. Daniel
Oi Daniel,
Seria ótimo! Se puder, entre em contato utilizando o formulário de contato no lado direito da página.
Abraço!
Desenvolvi um pad eletronico preso ao pulso, para acompanhar musicas que sao tocadas no celular. O pad possue sensores que vao enviar comandos via Bluetooth para o celular, que no celular vao ser transformados em timbres de instrumento musical (ex. prato, caixa,etc). so que ao bater no pad, o som de meu instrumento demora um pouco para aparecer no celular "delay alto" prejudicando o meu acompanhamento ritmico da musica. Meu soft e ANDROID, como faço para baixar sensivelmente o "delay" ?
tem como colocar 2 botões para que cada um deles possa ligar 2 leds ?cada botão para seu led especifico.
Boa tarde,
Tem sim, duplique a lógica do botão (no primeiro programa), e a do led (no segundo programa), apenas coloque uma valor diferente para acionar o segundo led, por exemplo: 2 para ligar e 3 para desligar.
Abraço!
Ótimo trabalho, mas não consigo fazer com que ele mande outro número a não ser 0/1, já dupliquei o código e informei outro pino, qual variável devo alterar?
meu transmissor tem quatro pinos vc sabe com seria o esquema dessa pinagem
Boa tarde,
você tem um link do transmissor que vc possui, para eu dar uma olhada ?
Abraço!
tambem aconteceu comigo do receptor somente aparece a mensagem "…aguardando.." e o led não acende. mas no meu caso acho que estou errando a pinagem do transmissor pq o meu tem quatro pinos e não sei a sequência certa
Meu amigo,
como faço para o recepitor acionar um motor de vidra usando apenas um placa de arduino?
vou montar a placa transmissor no arduino e no receptor vou instalar um motor de vibra com uma bateria, no programa como faço isso? vou utlizar o botão para acionar mandar o sinal como vc fez com o led, mas no local do led vai ser o motor de vibra
Oi Leonardo,
Você pode trocar o led por um módulo relé e acionar o vidro… creio que assim não vai ter que mudar quase nada no programa.
Abraço!
Boa noite,
estou fazendo um carro tanque (brinquedo) de controle remoto e gostaria de saber se é possivel controlar através do RF 433 dois motores DC e dois servos, além de um motor de passo e um led?
Boa noite,
É sim, vc pode enviar esses comandos via RF normalmente.
Abraço!
TERIA ALGUM EXEMPLO COM MAIS BOTOES
Bom dia! Estou pensando em fazer um projeto que não sei se é possível, criar uma rede "mesh" para comunicação entre eles, para aumentar a confiabilidade do envio dos dados, por exemplo, eu envio "1" no primeiro Arduíno, pelo caminho tenho outros 9 Arduínos e um deles seria o "mestre", até chegar ao mestre, ele passaria por todos os outros que estão na rede. A ideia seria como se cada um deles fosse um repetidor. Se eu ligar a luz do quarto, todos os interruptores receberia que aquela luz foi ligada, até garantia que a informação chegue na central, e a central retorna um OK para terminar o loop entre os interruptores, voltando a um status idle
Boa noite,
Bem interessante esse projeto. Possível é, mas eu penso se não seria mais interessante você usar outro tipo de módulo, como o NRF24L01, por exemplo, que pode funcionar como receptor e emissor, apenas mudando a configuração dele por software.
Abraço!
olá
gostaria de saber como faço para enviar uma frase via rf quando pressionar um botão para aparecer no lcd do receptor se puder ajudar agradeço
Boa noite,
Fiz um post para o blog Filipeflop, que creio que tenha exatamente o que você precisa: http://blog.filipeflop.com/wireless/modulo-rf-transmissor-receptor-433mhz-arduino.html
Abraço!
Boa tarde!
Muito bom o seu post! Estou querendo fazer um projeto de um "marcador" de esgrima. Seria algo simples. A espada da esgrima tem um interruptor na ponta que é acionado quando tocamos o oponente e o projeto consistiria em um LED que piscaria verde ou vermelho de acordo com quem tocasse primeiro ou as duas cores ao mesmo tempo caso tocarem ao mesmo tempo (dentro de 400ms). Assim, cada "aparelho" precisaria de um transmissor e um receptor para ler a informacao do outro. A minha duvida é com relacao ao tempo de sincronismo. Voce diz que é uma opcao quando o tempo de transmissao nao e um fator critico. Qual seria este tempo? Funcionaria para o meu projeto? E no caso de ter os dois transmissores, um afetaria a recepcao do outro?
Obrigado!
Oi Carlos,
Creio que funcionaria sim, você só tem que bolar algum tipo de controle dentro do programa para que um sensor não interferisse no outro… Mas o sensor é bem simples de usar, creio que funcione para o seu projeto.
Outra opção é usar bluetooth… assim você mantém uma conexão sempre ativa.
Abraço!
Eu gostaria de fazer um projeto que tem 3 sensores de pressão, um em cada canto da casa, eu preciso mandar a leitura dos sensores para um arduino (de modo sem fio), e mandar os dados dos sensores para internet em um site. Qual o modo mais fácil de fazer isto? Que sensores posso usar?
Boa noite,
Você pode usar o RF433 mesmo, e depois um módulo Wifi como o ESP8266 para mandar os dados para a internet… Ou até mesmo fazer uma rede com o ESP8266.
Abraço!
Boa noite:
Como faço para pegar o dado gerado pelo sensor ultrasonico e transmitir via rf para um receptor com arduino mas lcd?
Boa noite,
Só consegui fazer funcionar se ambos os monitores serial estivem aberto, preciso que apenas o monitor da recepção fique aberto, a tx será alimentado por uma bateria, é possível utilizar com apenas o monitor serial da recepção ? Obrigado!
Boa noite, 2 perguntas posso controlar um carrinho com esse modulo…e como deve ser essa antena ?
Preciso de ajuda na programação, estou usando esse modulo para transmitir o sinal do semáforo. E o receptor para acionar o motor quanto o sinal estiver no verde e vermelho.
se puderem me ajudar agradeço
Boa noite pessoal, preciso da ajuda de vcs novamente.
Estou tentando fazer um projeto com dois arduinos nano que comuniquem constantemente entre si atraves do módulo RF433 e quando essa comunicação for sessada um LED vermelho e um buzzer irão acionar (estes estão no arduino que possui o receptor acoplado) já o outro arduino com o transmissor só teria a função mesmo de enviar a mensagem.
O problema é que mesmo quando alimento os dois arduíno não consigo estabelecer conexão entre os módulos de radio frequencia aparentemente, o monitor serial so me entrega "Nao Recebendo.
A seguir o codigo dos dois módulos e a imagem do problema no monitor serial
______________________
Arduino com receptor
———————————–
#include
int cont, buzzer = 4, ledvd = 5, ledvm = 6 , motor = 8;
byte message[VW_MAX_MESSAGE_LEN]; // Armazena as mensagens recebidas
byte msgLength = VW_MAX_MESSAGE_LEN; // Armazena o tamanho das mensagens
void setup() {
pinMode(buzzer, OUTPUT);
pinMode(motor, OUTPUT);
pinMode(ledvm, OUTPUT);
pinMode(ledvd,OUTPUT);
Serial.begin(9600);
vw_set_rx_pin(7); // Define o pino 5 do Arduino como entrada
//de dados do receptor
vw_setup(2000); // Bits por segundo
vw_rx_start(); // Inicializa o receptor
}
void loop()
{
digitalWrite(ledvd,HIGH);
uint8_t message[VW_MAX_MESSAGE_LEN];
uint8_t msgLength = VW_MAX_MESSAGE_LEN;
if (vw_get_message(message, &msgLength)) // Non-blocking
{ if ((message[0]=='T')&&(message[1]=='e')&&(message[2]=='s')&&(message[3]=='t')&&(message[4]=='e'))
{
Serial.println("Recebendo");
cont=0;
}
}else{
Serial.println("Não recebendo");
cont++;
}
digitalWrite (ledvm,HIGH);
digitalWrite (motor,HIGH);
tone(buzzer,100,50);
delay (750);
Serial.println("LIGADO>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
digitalWrite(10,HIGH);
}else{
noTone(buzzer);
digitalWrite(ledvm,LOW);
digitalWrite(motor,LOW);
Serial.println("Desligado———————————————-");
digitalWrite(10,LOW);
}
message[0]='a';
Serial.println(cont);
}
_________________________________________________________________________
Arduino com emissor
———————————-
#include
int ledvd = 2;
String mensagem;
void setup()
{
Serial.begin(9600);
//Define o pino 8 do Arduino como
//o pino de dados do transmissor
pinMode (ledvd,OUTPUT);
vw_set_tx_pin(7);
vw_setup(2000); // Bits per sec
Serial.println("Digite o texto e clique em ENVIAR…");
}
void loop()
{
digitalWrite(ledvd,HIGH);
vw_send((uint8_t *)"Teste", 5);
vw_wait_tx(); // Aguarda o envio de dados
delay(2000);
}
Esse meu código tá funcionando, tenta adaptar (incluir o led 13 aqui do "arduinoecia"
Fiz no arduino nano. Código tá inchado mas funciona:
====TX====
#include
//Define pinos Led e Botao
const int ledPin = 13;
const int botao6 = 6;
const int botao5 = 5;
int valor_botao6;
int valor_botao5;
char Valor_CharMsg[4];
int estado = 0; //Armazena estado led = ligar/desligar
void setup()
{
Serial.begin(9600);
pinMode(ledPin,OUTPUT);
pinMode(botao6,INPUT);
pinMode(botao6,INPUT_PULLUP); // configura resistores internos
pinMode(botao5,INPUT_PULLUP); // configura resistores internos
vw_set_tx_pin(4); //Pino ligado ao pino DATA do transmissor RF
vw_setup(5000); //Velocidade de comunicacao (bits por segundo)
}
void loop()
{
valor_botao6 = digitalRead(botao6); //Verifica o estado do push-button
valor_botao5 = digitalRead(botao5); //Verifica o estado do push-button
switch(valor_botao6){
case 0:
{
estado =1;
itoa(estado,Valor_CharMsg,10);
vw_send((uint8_t *)Valor_CharMsg, strlen(Valor_CharMsg)); //Envio dos dados
vw_wait_tx(); //Aguarda envio dos dados
}
break;
case 1:
{
estado =0;
itoa(estado,Valor_CharMsg,10);
vw_send((uint8_t *)Valor_CharMsg, strlen(Valor_CharMsg)); //Envio dos dados
vw_wait_tx(); //Aguarda envio dos dados
}
break;
}
switch(valor_botao5){
case 0:
{
estado =2;
itoa(estado,Valor_CharMsg,10);
vw_send((uint8_t *)Valor_CharMsg, strlen(Valor_CharMsg)); //Envio dos dados
vw_wait_tx(); //Aguarda envio dos dados
}
break;
case 1:
{
estado =3;
itoa(estado,Valor_CharMsg,10);
vw_send((uint8_t *)Valor_CharMsg, strlen(Valor_CharMsg));
vw_wait_tx();
}
break;
}
}
===RX===
#include
int ledPino5 = 5;
int ledPino6= 6;
int valor_recebido_RF;
int valor_recebido_RF1;
char recebido_RF_char[4];
void setup()
{
Serial.begin(9600);
pinMode(ledPino5, OUTPUT);
pinMode(ledPino6, OUTPUT);
digitalWrite(ledPino5,LOW);
digitalWrite(ledPino6,LOW);
vw_set_rx_pin(7); //Pino ligado ao pino DATA do receptor RF
vw_setup(5000); //Velocidade de comunicacao (bits por segundo)
vw_rx_start(); //Inicia a recepcao
}
void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen))
{
int i;
for (i = 0; i < buflen; i++)
{
recebido_RF_char[i] = char(buf[i]); //Armazena os caracteres recebidos
}
recebido_RF_char[buflen] = '