Escolar Documentos
Profissional Documentos
Cultura Documentos
br/
Tutoriais - Módulo RF
Modulo RF tutorial
http://produto.mercadolivre.com.br/MLB-435313532-modulo-rf-transmissor-receptor-
433mhz-_JM (acesso em 17/09/2012)
http://lojabrasilrobotics.blogspot.com.br/2011/06/wireless-rf-r2500.html (17/09/2012)
marisac@pucsp.br ou marisacavalcante@uol.com.br 1
http://labduino.blogspot.com.br/
Tutoriais - Módulo RF
Para o transmissor RF temos pinos para ligação em VCC , GND e um píno para a
transmissão de dados.
O default para a biblioteca básica é o pino 12.
Para o receptor RF temos pinos para ligação em VCC , GND pinos para a recepção de
dados.
O default para a biblioteca básica é o pino 11.
marisac@pucsp.br ou marisacavalcante@uol.com.br 2
http://labduino.blogspot.com.br/
Tutoriais - Módulo RF
Pino 12
marisac@pucsp.br ou marisacavalcante@uol.com.br 3
http://labduino.blogspot.com.br/
Tutoriais - Módulo RF
Pino 11
Em seguida clique em “examples” e em VirtualWire.
marisac@pucsp.br ou marisacavalcante@uol.com.br 4
http://labduino.blogspot.com.br/
Tutoriais - Módulo RF
Modulo RX Modulo TX
Chr HEX
h 68
e 65
l 6C
l 6C
0 6F
marisac@pucsp.br ou marisacavalcante@uol.com.br 5
http://labduino.blogspot.com.br/
Tutoriais - Módulo RF
http://www.asciitable.com/index/asciifull.gif
Para que você obtenha a impressão da palavra “hello”, basta ir até a linha de
programação do modulo RX e alterar para:
marisac@pucsp.br ou marisacavalcante@uol.com.br 6
http://labduino.blogspot.com.br/
Tutoriais - Módulo RF
//global variable
byte msg[7];
// end global variable
// setup
void setup() {
vw_set_ptt_inverted(true); // Required for PTT para DR3100
vw_setup(2000); // Bits per sec taxa de velocidade para transmissão no modulo RF
}
// end setup
// main loop
void loop()
{
// Função map para transformar a entrada de 10 bits das analógicas para 8 bits (PWM)
msg[0] = map(analogRead(A0), 0, 1023, 0, 255);
msg[1] = map(analogRead(A1), 0, 1023, 0, 255);
msg[2] = map(analogRead(A2), 0, 1023, 0, 255);
msg[3] = map(analogRead(A3), 0, 1023, 0, 255);
msg[4] = map(analogRead(A4), 0, 1023, 0, 255);
msg[5] = map(analogRead(A5), 0, 1023, 0, 255);
marisac@pucsp.br ou marisacavalcante@uol.com.br 7
http://labduino.blogspot.com.br/
Tutoriais - Módulo RF
//global variable
byte buf[7];
byte buflen;
// end global variable
// setup
void setup()
{
buflen = 7;
Serial.begin(9600);
vw_setup(2000); // Bits per sec taxa de velocidade para transmissão no modulo RF
vw_rx_start(); // Start up the receiver
}
// end setup
// main loop
void loop()
{
if (vw_get_message(buf, &buflen)) // check to see if anything has been received
{
Serial.print("A0=");
int A0 = buf[0];
Serial.print(A0);
Serial.println();
Serial.print("A1=");
int A1 = buf[1];
Serial.print(A1);
Serial.println();
Serial.print("A2=");
int A2 = buf[2];
Serial.print(A2);
Serial.println();
Serial.print("A3=");
int A3 = buf[3];
marisac@pucsp.br ou marisacavalcante@uol.com.br 8
http://labduino.blogspot.com.br/
Tutoriais - Módulo RF
Serial.print(A3);
Serial.println();
Serial.print("A4=");
int A4 = buf[4];
Serial.print(A4);
Serial.println();
// Batt. test start Para executar este teste voce deve conectar a entrada A5 do
//Arduino TX em VCC através do um resistor (1Kohms, pó exemplo). Deste modo o
//receptor avisa quando a bateria estiver abaixo de um dado valor mas para este caso
//suspendemos este controle
//int A5 = buf[5];
//if (A5 < 107)
{
//Serial.print("BATT. LOW (6,7V)");
//Serial.println();
}
// Batt. test end
Serial.println();
}
}
// end main loop
Código no modulo TX
marisac@pucsp.br ou marisacavalcante@uol.com.br 9
http://labduino.blogspot.com.br/
Tutoriais - Módulo RF
void loop()
{
if ( Serial.available() > 0) // verifica se foi digitado algo
{
char message = Serial.read(); // le o que foi digitado
vw_send((uint8_t *)&message, strlen(&message)); // envia toda a mensage e
converte para str
vw_wait_tx(); // bloqueia TX até ser enviado todas as letras envia uma por uma
}
}
int LED = 8;
void setup()
{
Serial.begin(9600);
Serial.println("setup");
vw_set_ptt_inverted(true);
vw_setup(2000);
vw_set_rx_pin(9); // pino para recepção 9
vw_rx_start();
}
void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen))
{
digitalWrite(13,true);
if (buf[0] == '1')
{
digitalWrite(13,true);
}
else if ( buf[0] == '2')
{
digitalWrite(13,false);
}
Serial.print(buf[0]);
}
digitalWrite(13,false);
}
marisac@pucsp.br ou marisacavalcante@uol.com.br 10
http://labduino.blogspot.com.br/
Tutoriais - Módulo RF
Código no Arduino RX: Circuito led no pino 8 e pino 9 recebe o sinal do Arduino TX
---------------------------------------------------------------------------------------------------------
if (vw_get_message(buf, &buflen))
{
digitalWrite(13,true); / / estiver recebendo a informação led 13 acende
if (buf[0] == '1')
{
digitalWrite(LED,true); // quando digitar 1 no monitor serial do Arduino TX acende
//o Led do pino 8 por 100 ms
delay (100);
}
else if ( buf[0] == '2')
{
digitalWrite(LED,false); // quando digitar 1 no monitor serial do Arduino TX apaga
//o Led do pino 8 por 100 ms
delay(100);
}
Serial.print(buf[0]);
}
digitalWrite(13,false);
}
marisac@pucsp.br ou marisacavalcante@uol.com.br 11
http://labduino.blogspot.com.br/
Tutoriais - Módulo RF
}
void loop()
{
if ( Serial.available() > 0) // verifica se foi digitado algo
{
char message = Serial.read(); // le o que foi digitado
vw_send((uint8_t *)&message, strlen(&message)); // envia toda a mensagem e
//converte para str
vw_wait_tx(); // bloqueia TX até ser enviado todas as letras envia uma por uma
}
}
No void loop
Em TX:
vw_send(uint8_t* buf, uint8_t len);
Em RX
vw_get_message(buf, &buflen)
marisac@pucsp.br ou marisacavalcante@uol.com.br 12