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:
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
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 }
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