Módulos RF 433


Módulos RF 433

Uma opção barata e eficiente para transmissão de dados entre placas Arduino são os módulos RF 433 que são constituídos por duas partes, onde uma parte é o transmissor e a outra parte é o receptor. Esses módulos alcançam até 200 metros sem obstáculos com modulação AM e frequência de trabalho de 433MHz.
Componentes para o projeto: 
  • 02 Arduinos
  • 01 Par Módulos RF 433(Receptor + Transmissor)
  • 01 LED
  • 01 Resistor 220
  • 01 Resistor 1KΩ(pull-down)
  • 01 Push button 
Partindo, primeiramente, para o circuito transmissor, monte conforme esquema abaixo:
              
Módulos RF 433


Feito isso, adicione a biblioteca VirtualWire na IDE do Arduino e, então, carregue o código Transmissor:
         
 1 
 2  // Comunicação Arduino com Módulo RF 433 -Transmissor
 3
 4  #include <VirtualWire.h>
 5
 6  # define pino_botao 2
 7
 8  int valor_anterior = 0;
 9  int valor_botao = 0;

10  char Valor_CharMsg[4];

11  int estado = 0;

12 

13  void setup()

14  {

15    Serial.begin(9600);
16    pinMode(pino_botao, INPUT);
17    vw_set_tx_pin(4);   //Pino ligado ao pino DATA do transmissor RF
18    vw_setup(5000);//Velocidade de comunicação (bits por segundo)
19    Serial.println(" Trasmissao modulo RF - Acione o botao...");
20  }
21 
22  void loop()
23  {
24    valor_botao = digitalRead(pino_botao);
25 
26    if (valor_botao != valor_anterior)
27    {
28      estado = !estado//Altera o estado do LED
29      itoa(estado, Valor_CharMsg, 10); //Converte valor para envio
30      vw_send((uint8_t *)Valor_CharMsg, strlen(Valor_CharMsg)); //Envio dos dados
31      vw_wait_tx();  //Aguarda envio dos dados
32      Serial.print(" Valor enviado: ");
33      Serial.println(Valor_CharMsg);
34      valor_anterior = valor_botao;
35      delay(500);
36    }
37  }
 
Partindo para o circuito Receptor, monte conforme o esquema abaixo:
     

Feito isso, carregue o código Receptor:
  
 1 
 2  // Comunicacao Arduino com Modulo RF 433 - Receptor
 3
 4  #include <VirtualWire.h>
 5
 6  # define PinLED 4
 7
 8  int valor_recebido_RF;
 9  char recebido_RF_char[4];
10
11  void setup()
12  {

13    Serial.begin(9600);

14    pinMode(PinLED, OUTPUT);
15    vw_set_rx_pin(5); //Pino ligado ao pino DATA do receptor RF
16    vw_setup(5000); // Velocidade de comunicaçao (bits por segundo)
17    vw_rx_start();  //Inicia a recepcao
18    Serial.println(" Recepcao modulo RF - Aguardando...");
19  }
20 
21  void loop()
22  {
23    uint8_t buf[VW_MAX_MESSAGE_LEN];
24    uint8_t buflen = VW_MAX_MESSAGE_LEN;
25 
26    if (vw_get_message(buf, &buflen))
27    {
28      int i;
29      for (i = 0; i < buflen; i++)
30      {
31        //Armazena os caracteres recebidos
32        recebido_RF_char[i] = char(buf[i]);
33      }
34      recebido_RF_char[buflen] = '\0';
35 
36      //Converte o valor recebido para integer
37      valor_recebido_RF = atoi(recebido_RF_char);
38 
39      //Mostra no Monitor Serial o valor recebido
40      Serial.print(" Recebido: ");
41      Serial.print(valor_recebido_RF);
42      //Altera o estado do led conforme o numero recebido
43      if (valor_recebido_RF == 1)
44      {
45        digitalWrite(PinLED, HIGH);
46        Serial.println(" LED aceso! ");
47      }
48      if (valor_recebido_RF == 0)
49      {
50        digitalWrite(PinLED, LOW);
51        Serial.println(" LED apagado! ");
52      }
53    }
54  }
 



Agora, abrem-se os Seriais Monitores dos dois Arduinos e vemos que, quando pressionamos o botão, um sinal igual a 1 é transmitido com acendimento do LED e, quando soltamos o botão, um sinal igual a 0 é transmitido apagando-se o LED.



Nenhum comentário:

Postar um comentário