Você está na página 1de 5

J vimos aqui algumas maneiras de comunicar o Arduino com o mundo externo,

usando Bluetooth ou Ethernet para verificar o estado de sensores e enviar comandos.


Uma outra alternativa eficiente e barata para transmisso de dados o uso de mdulos
transmissores RF (Rdio Frequncia).
Com um Kit Mdulo RF Transmissor + Receptor 433 Mhz, voc consegue enviar e
receber dados sem a necessidade de uso de fios, e isso que veremos no post de hoje.
Voc tambm pode optar pelo Mdulo RF Transmissor 315Mhz, que a mesma coisa,
somente opera em outra frequncia
O cenrio montado o seguinte: utilizar um Arduino Uno ligado ao Mdulo RF
Transmissor, suportando a entrada de dados via Serial Monitor. Em outro Arduino (um
Mega), alimentado por fonte externa, vamos colocar o Mdulo RF Receptor e um
display LCD, que vai mostrar os dados recebidos via RF.
No circuito foi usado os dois mdulos sem antena, mas se voc for utilizar os mdulos
para comunicao grandes distncias (at 200 metros), a instalao da antena
essencial. Outro detalhe que o mdulo transmissor aceita tenses na faixa de 3,5 a
12v, o que tambm faz uma grande diferena no alcance da transmisso. Veja abaixo o
detalhe da pinagem dos dois mdulos :
Configurando Arduino Uno com Transmissor RF:
J que estamos trabalhando numa configurao com 2 placas, vamos separar os
circuitos, comeando pelo transmissor. Utilizei um Mini Protoboard e liguei o pino de
dados do Mdulo RF Transmissor ao pino 8 do Arduino Uno:

Os programas foram desenvolvidos utilizando a biblioteca VirtualWire, que voc
encontra neste link! Carregue o programa abaixo no Arduino Uno:
1
2
//Programa : Mdulo RF Transmissor com Arduino Uno
//Autor : FILIPEFLOP - Arduino e Cia
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

#include <VirtualWire.h>

String mensagem;

void setup()
{
Serial.begin(9600);
vw_set_tx_pin(8); //Define o pino 8 do Arduino como
//o pino de dados do transmissor
vw_setup(2000); // Bits per sec
}

void loop()
{
char data[30];
int numero;
if (Serial.available() > 0)
{
numero = Serial.readBytesUntil (13,data,20);
data[numero] = 0;
Serial.print("Enviado : ");
Serial.print(data);
Serial.print(" - Caracteres : ");
Serial.println(strlen(data));
send(data); //Envia a mensagem para a rotina que
//envia os dados via RF
}
}

void send (char *message)
{
vw_send((uint8_t *)message, strlen(message));
vw_wait_tx(); // Aguarda o envio de dados
}

Configurando Arduino Mega com Receptor RF:
Para o receptor, utilizei um Arduino Mega 2560 e um display LCD Nokia 5110, na
mesma configurao utilizada neste artigo. O pino de dados do receptor foi ligado ao
pino 5 do Arduino Mega. Observe que o receptor tem 2 pinos de dados, e qualquer um
pode ser utilizado:

Carregue agora este programa no Arduino Mega:
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
//Programa : Receptor RF com Arduino Mega e Display Nokia 5110
//Autor : Arduino e Cia

#include <Adafruit_GFX.h> //Carrega a biblioteca do display
#include <Adafruit_PCD8544.h> //Carrega a biblioteca grafica
#include <VirtualWire.h>

byte message[VW_MAX_MESSAGE_LEN]; // Armazena as mensagens
recebidas
byte msgLength = VW_MAX_MESSAGE_LEN; // Armazena o tamanho das
mensagens

// Pinagem do LCD :
// pin 8 - Serial clock out (SCLK)
// pin 9 - Serial data out (DIN)
// pin 10 - Data/Command select (D/C)
// pin 11 - LCD chip select (CS/CE)
// pin 12 - LCD reset (RST)
Adafruit_PCD8544 display = Adafruit_PCD8544(8, 9, 10, 11, 12);
//Inicializa e seta os parametros do display

void setup() {
Serial.begin(9600);
vw_set_rx_pin(5); // Define o pino 5 do Arduino como entrada do
pino
//de dados do receptor
vw_setup(2000); // Bits por segundo
vw_rx_start(); // Inicializa o receptor

display.begin();
display.setContrast(50); //Ajusta o contraste do display
display.clearDisplay(); //Apaga o buffer e o display
display.setTextSize(1); //Seta o tamanho do texto
display.setTextColor(BLACK); //Seta a cor do texto
display.setCursor(0,0); //Seta a posio do cursor
display.print("Aguardando...");
display.display();
delay(2000);

34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
}

void loop()
{
uint8_t message[VW_MAX_MESSAGE_LEN];
uint8_t msgLength = VW_MAX_MESSAGE_LEN;

display.setCursor(0, 0); //Seta a posio do cursor
if (vw_get_message(message, &msgLength)) // Non-blocking
{
Serial.print("Recebido: ");
display.clearDisplay(); //Apaga o buffer e o display
for (int i = 0; i < msgLength; i++)
{
Serial.write(message[i]);
display.write(message[i]);
display.display();
}
Serial.println();
}
}

Para efeito de testes, utilizamos o Arduino Mega (com o LCD e o mdulo receptor)
ligado uma fonte de alimentao externa. O Arduino Uno com o transmissor deve
estar ligado ao computador, e por meio do Serial Monitor que sero enviados via RF
os caracteres que sero mostrados no LCD do Arduino Mega.
Simulando o Mdulo RF 433MHz no Serial Monitor:
Para utilizar o programa, carregue o Serial Monitor, e digite uma sequencia de
caracteres no campo indicado na imagem. Aperte ENTER ou clique em SEND, e a
sequencia de caracteres digitada ser mostrada no display LCD.

Você também pode gostar