20 abril 2015

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.

Comunicação sem fio Arduino módulo RF 433 MHz

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 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.


Módulo RF 433 MHz Pinagem


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.

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:

Circuito Arduino Módulo RF 433 MHz - Transmissor


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.

 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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
//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:

Serial Monitor RF433 MHz - Transmissor


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:

Circuito Arduino Módulo RF 433 MHz - Receptor


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.

 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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
//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:

Serial Monitor RF433 MHz - Receptor


111 comentários:

  1. Como fazer esse esquema, com 1 Arduino transmitindo e 8 Arduinos recebendo sinais diferentes para não serem acionados ao mesmo tempo?

    ResponderExcluir
    Respostas
    1. 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 !

      Excluir
    2. Tem como enviar o exemplo que vc citou para o meu email, vai ser de grande ajuda amigo. ...

      Excluir
    3. Boa noite Marco,

      Entendo, mas não tenho esse exemplo disponível no momento.

      Abraço.

      Excluir
  2. 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?

    ResponderExcluir
    Respostas
    1. Boa noite Higo,

      Interessante o projeto, mas ainda não tenho nada neste sentido. Mas é um bom assunto para um post.

      Abraço !

      Excluir
    2. Conseguiu controlar o servo pelo potenciometro?

      Excluir
  3. poderia mim ajudar a acionar 5 aparelhos usando esse sistema

    ResponderExcluir
    Respostas
    1. Boa tarde Josimar,

      Sim, vc já tem o circuito e o programa montados ?

      Abraço.

      Excluir
  4. ja sim, fiz desse tipo mas nao funciona com mais botoes de entrada nem de saida, somente um botao que funciona

    ResponderExcluir
  5. Desde de já agradeço pela sua ajuda.

    ResponderExcluir
  6. ola, fiz mais um teste hoje mas nao consegui fazer funcionar com 5 botoes ligar e 5 desligar assim por diante....

    abraço.

    ResponderExcluir
  7. 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...

    ResponderExcluir
    Respostas
    1. Valeu Pablo, abraços e obrigado !

      Excluir
    2. Ou roubar a ideia deste blog

      http://blog.filipeflop.com/wireless/modulo-rf-transmissor-receptor-433mhz-arduino.html

      Excluir
    3. Então Thiago... nada foi roubado. os dois posts são meus.. eu também escrevo para o blog FILIPEFLOP :)

      Abraço!

      Excluir
  8. 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.

    ResponderExcluir
    Respostas
    1. 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 !

      Excluir
    2. 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???

      Excluir
  9. 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!

    ResponderExcluir
    Respostas
    1. 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 !

      Excluir
  10. 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á.

    ResponderExcluir
    Respostas
    1. 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!

      Excluir
  11. como aumentar o alcance dos transmissor ??

    ResponderExcluir
    Respostas
    1. Bom dia,

      Utilize antenas tanto no transmissor como no receptor.

      Abraço.

      Excluir
  12. Este comentário foi removido pelo autor.

    ResponderExcluir
  13. 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?

    ResponderExcluir
  14. como faço para alimentar com 12 vcc o transmissor e receptor, a fim de melhorar o alcance?

    ResponderExcluir
    Respostas
    1. 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!

      Excluir
  15. 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

    ResponderExcluir
    Respostas
    1. Bom dia Sidnei,

      Isso é estranho. Eu liguei o meu aqui e isso não acontece.

      Abraço!

      Excluir
    2. 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.

      Excluir
  16. fiz segundo o esquema e o receptor não recebe nada. O que pode estar errado?

    ResponderExcluir
  17. achei o problema, contato do protoboard de dados do transmissor com problema

    ResponderExcluir
  18. 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.

    ResponderExcluir
    Respostas
    1. 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!

      Excluir
  19. 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 (rud57@yahoo.com.br)

    ResponderExcluir
    Respostas
    1. 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!

      Excluir
  20. 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: victordiego1997@gmail.com

    ResponderExcluir
  21. Preciso acionar 4 servos por RF, pode ser com potenciómetros ou botões. Tem algum tutorial que posso me ajudar?

    ResponderExcluir
  22. 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 !!

    ResponderExcluir
    Respostas
    1. Boa noite Guilherme,

      Infelizmente não é possível, os celulares não trabalham com esse tipo de frequência.

      Abraço e obrigado!

      Excluir
  23. 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

    ResponderExcluir
  24. gostaria de saber como faco pra enviar um comando com 16 numeros pra o receptor rf

    ResponderExcluir
  25. 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.

    ResponderExcluir
    Respostas
    1. 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 \0, 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!

      Excluir
  26. Excelente! Você sabe como posso adaptar para transmitir dados de um display triplo de sete segmentos para outro display?

    ResponderExcluir
    Respostas
    1. Bom dia Débora,

      Obrigado. Você teria 1 display triplo de cada lado ?

      Abraço!

      Excluir
  27. 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.

    ResponderExcluir
  28. 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 davipereira0609@gmail.com

    ResponderExcluir
  29. will this work for the 315Mhz RF Wireless Transmitter and Receiver Link Kit Module ?

    ResponderExcluir
    Respostas
    1. Hey Frank!

      I think it will work, because is the same module, with another frequency.

      Best regards!

      Excluir
  30. 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......

    ResponderExcluir
  31. 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

    ResponderExcluir
    Respostas
    1. Oi Rubens,

      Realmente, sem antena é bem fraquinho....

      Abraço!

      Excluir
  32. 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

    ResponderExcluir
    Respostas
    1. 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!

      Excluir
  33. É possível fazer essa ligação com apenas um arduino ?

    ResponderExcluir
    Respostas
    1. Boa noite,

      É possível sim, teoricamente você pode usar qualquer pino como emissor/receptor.

      Abraço!

      Excluir
  34. 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.

    ResponderExcluir
    Respostas
    1. 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!

      Excluir
  35. 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

    ResponderExcluir
    Respostas
    1. Boa noite Frederico,

      É possível sim, uma boa alternativa é usar um ESP8266, tenho alguns posts no blog sobre isso.

      Abraço!

      Excluir
  36. 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.

    ResponderExcluir
  37. 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

    ResponderExcluir
    Respostas
    1. 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!

      Excluir
  38. 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 !!

    ResponderExcluir
    Respostas
    1. 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!

      Excluir
  39. 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

    ResponderExcluir
  40. 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?

    ResponderExcluir
    Respostas
    1. 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!

      Excluir
  41. 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.

    ResponderExcluir
  42. Tem como com um receptor receber sinal de vários transmissores 433mhz? O objetivo é criar um sistema de votação

    ResponderExcluir
    Respostas
    1. Boa tarde,

      Tem sim. Crie um controle no programa para diferenciar cada transmissor.

      Abraço!

      Excluir
  43. 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?

    ResponderExcluir
    Respostas
    1. 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!

      Excluir
    2. 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

      Excluir
    3. Oi Daniel,

      Seria ótimo! Se puder, entre em contato utilizando o formulário de contato no lado direito da página.

      Abraço!

      Excluir
  44. 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" ?

    ResponderExcluir
  45. tem como colocar 2 botões para que cada um deles possa ligar 2 leds ?cada botão para seu led especifico.

    ResponderExcluir
    Respostas
    1. 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!

      Excluir
  46. meu transmissor tem quatro pinos vc sabe com seria o esquema dessa pinagem

    ResponderExcluir
    Respostas
    1. Boa tarde,

      você tem um link do transmissor que vc possui, para eu dar uma olhada ?

      Abraço!

      Excluir
  47. 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

    ResponderExcluir
  48. 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

    ResponderExcluir
    Respostas
    1. 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!

      Excluir
  49. 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?

    ResponderExcluir
    Respostas
    1. Boa noite,

      É sim, vc pode enviar esses comandos via RF normalmente.

      Abraço!

      Excluir
  50. TERIA ALGUM EXEMPLO COM MAIS BOTOES

    ResponderExcluir
  51. 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

    ResponderExcluir
    Respostas
    1. 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!

      Excluir
  52. 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

    ResponderExcluir
    Respostas
    1. 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!

      Excluir
  53. 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!

    ResponderExcluir
    Respostas
    1. 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!

      Excluir
  54. 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?

    ResponderExcluir
    Respostas
    1. 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!

      Excluir
  55. Boa noite:
    Como faço para pegar o dado gerado pelo sensor ultrasonico e transmitir via rf para um receptor com arduino mas lcd?

    ResponderExcluir
  56. 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!

    ResponderExcluir
  57. Boa noite, 2 perguntas posso controlar um carrinho com esse modulo...e como deve ser essa antena ?

    ResponderExcluir
  58. 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

    ResponderExcluir
  59. 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);
    }

    ResponderExcluir
    Respostas
    1. 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] = '\0';
      valor_recebido_RF = atoi(recebido_RF_char); //Converte o valor recebido para integer

      //=============primeiro led

      if (valor_recebido_RF == 1) //Altera o estado do led conforme o numero recebido
      {
      digitalWrite(ledPino5, HIGH);
      }
      if (valor_recebido_RF == 0)
      {
      digitalWrite(ledPino5, LOW);
      }

      //============segundo led

      if (valor_recebido_RF == 2) //Altera o estado do led conforme o numero recebido
      {
      digitalWrite(ledPino6, HIGH);
      }
      if (valor_recebido_RF == 3) //Altera o estado do led conforme o numero recebido
      {
      digitalWrite(ledPino6, LOW);
      }
      }
      }

      Excluir
  60. Este comentário foi removido pelo autor.

    ResponderExcluir
  61. boa tarde gostaria de saber se voce tem um codigo para usar o digispak attiny 85 como emissor e um uno como receptor

    ResponderExcluir
    Respostas
    1. Oi Mauriliano,

      Infelizmente não tenho (ainda), mas é uma boa sugestão para um próximo post. :)

      Abraço!

      Excluir