You are on page 1of 12

Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de ...

http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-...

Procurar Registre-se Acessar Laboratorio de Garagem (arduino, eletrnica, robotica, hacking) #42 Incio Perfil Garagistas Incubadora Loja rea Tcnica Discusses Galeria Grupos Sobre Todas as mensagens do blog Meu blog Adicionar

Tutorial transmissor e receptor RF Link com Arduino


Postado por Laboratrio de Garagem em 7 maio 2012 s 15:00 Exibir blog

No mercado existe vrios tipos e meios de comunicao para usar com Arduino. Neste tutorial usaremos os RF Link Receiver - 4800bps(315Mhz) e RF Link Transmitter - 315Mhz e testaremos a comunico

1 de 12

29/06/2013 23:23

Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de ...

http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-...

entre eles utilizando a biblioteca Virtual Wire e a documentao disponvel aqui. Neste tutorial vamos mostrar como mandar uma mensagem utilizando o RF Link Transmitter 315Mhz com um Arduino e recebendo a mensagem utilizando o RF Link Receiver 4800bps(315Mhz) com outro Arduino. Antes de mais nada, baixe a biblioteca Virtual Wire e extraia para a pasta "libraries" localizada dentro da pasta da IDE do Arduino. Nesta biblioteca bem fcil de usar, pois j existe um tratamento de erros para filtrar os erros que chegam no receptor. Agora para montar o emissor RF Link Transmitter - 315Mhz com Arduino, faa a seguinte ligao:

Onde: O Fio vermelho vai para o VCC ou 5V O Fio preto vai para o GND O FIo verde vai para o pino digital 12 do Arduino Por opo, pode-se colocar uma antena para melhor captao de dados. O comprimento da antena de cerca de 25cm Agora, abra a IDE do Arduino e v em File/Examples/VirtualWire e selecione "transmitter",conecte o Arduino, selecione a verso do Arduino(UNO, Duemilanove,etc) e clique em UPLOAD. Abaixo mostra a programao: // transmitter.pde // // Simple example of how to use VirtualWire to transmit messages // Implements a simplex (one-way) transmitter with an TX-C1 module // // See VirtualWire.h for detailed API docs // Author: Mike McCauley (mikem@open.com.au)
2 de 12 29/06/2013 23:23

Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de ...

http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-...

// Copyright (C) 2008 Mike McCauley // $Id: transmitter.pde,v 1.3 2009/03/30 00:07:24 mikem Exp $ #include <VirtualWire.h> void setup() { Serial.begin(9600); Serial.println("setup"); // Initialise the IO and ISR vw_set_ptt_inverted(true); vw_setup(2000); } void loop() { const char *msg = "hello"; digitalWrite(13, true); vw_send((uint8_t *)msg, strlen(msg)); vw_wait_tx(); digitalWrite(13, false); delay(200); } // Flash a light to show transmitting //Send the message // Wait until the whole message is gone

// Debugging only

// Required for DR3100 // Bits per sec

A programao "transmitter" um exemplo bsico onde manda a palavra "hello" para o receptor. Pronto, agora vamos montar o RF Link Receiver - 4800bps(315Mhz):

Onde:
3 de 12 29/06/2013 23:23

Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de ...

http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-...

O fio vermelho vai para o VCC ou 5V O fio preto vai para GND O fio verde vai para o pino digital 11 do Arduino Por opo, pode-se colocar uma antena para melhor captao de dados. O comprimento da antena de cerca de 25cm Agora, com outro Arduino e com a IDE do Arduino aberto, v em File/Examples/ e clique em "receiver" e faa o mesmo procedimento que o do emissor. Abaixo mostra a programao do "receiver": // receiver.pde // // Simple example of how to use VirtualWire to receive messages // Implements a simplex (one-way) receiver with an Rx-B1 module // // See VirtualWire.h for detailed API docs // Author: Mike McCauley (mikem@open.com.au) // Copyright (C) 2008 Mike McCauley // $Id: receiver.pde,v 1.3 2009/03/30 00:07:24 mikem Exp $ #include <VirtualWire.h> void setup() { Serial.begin(9600); // Debugging only Serial.println("setup"); // Initialise the IO and ISR vw_set_ptt_inverted(true); // Required for DR3100 vw_setup(2000); // Bits per sec vw_rx_start(); // Start the receiver PLL running } void loop() { uint8_t buf[VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN; if (vw_get_message(buf, &buflen)) // Non-blocking { int i; digitalWrite(13, true); // Flash a light to show received good message // Message with a good checksum received, dump it. Serial.print("Got: "); for (i = 0; i < buflen; i++) { Serial.print(buf[i], HEX); Serial.print(" "); } Serial.println(""); digitalWrite(13, false); } }

4 de 12

29/06/2013 23:23

Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de ...

http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-...

Este exemplo mostra o receiver recebendo a informao do emissor, que nesse caso o "hello". Ao abrir o Serial monitor do Arduino-1.0, voc ver que os dados que chegam so nmeros, estes nmeros so nmeros da tabela ASCII. Voc pode ver que o nmero hexadecimal "68" equivale a letra "h". E isso!!! Esperamos que tenham gostado!!! Caso tenham dvida sobre este tutorial, postem aqui mesmo neste blog. Vocs podem ver outros tutoriais, clicando aqui. Temos a seo de projetos tambm que vocs podem ver e postar seus projetos! At a prxima!! Referncias: http://www.labdegaragem.org/loja/index.php/38-comunicacao/rf-link-r... http://www.labdegaragem.org/loja/index.php/38-comunicacao/rf-link-t... http://arduino.cc/playground/Main/InterfacingWithHardware#Communica... http://www.sparkfun.com/products/10533 http://www.open.com.au/mikem/arduino/VirtualWire.pdf http://www.open.com.au/mikem/arduino/VirtualWire-1.9.zip http://www.sparkfun.com/datasheets/RF/KLP_Walkthrough.pdf http://winavr.scienceprog.com/example-avr-projects/running-tx433-an... Exibies: 11154 Tags: Rdio, arduino, frequncia, tutorial Curtir 3 membros curtem isto Compartilhar Twitter Facebook
Curtir 12

< Post Anterior Prximo Post > Comentar

Voc precisa ser um membro de Laboratorio de Garagem (arduino, eletrnica, robotica, hacking) para adicionar comentrios!
Entrar em Laboratorio de Garagem (arduino, eletrnica, robotica, hacking)

Comentrio de Evandro Gomes da Silva em 17 junho 2013 s 23:11 socorro!!!!! alguem sabe o porque quando eu vou compilar esse codigo dar um erro na parte "vw_set_ptt_inverted(true); // Required for DR3100" porque ser? Sou novo nessa rea e me interessei muito por esse artigo. Quem puder me ajudar agradeo bastante.

5 de 12

29/06/2013 23:23

Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de ...

http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-...

Comentrio de Rodrigo Moraes Silveira em 19 abril 2013 s 23:11 Ol, fiz algumas modificaes nos exemplos transmiter e receiver, usando os exemplos server e client da biblioteca VirtualWire. Porm com ambos equipamedos com um emissor e um redeptor de RF Um arduino envia a mensagem "hello", o outro verifica o contedo da mensagem e responde com um ok. Meio tosco mas funcional, fontes no final da mensagem A questo : liguei a entrada RSSI do receptor no pino 3 do Arduino, e fiz uma leitura analgica #define RSSI_PIN 3 ... Serial.println(getRSSI(RSSI_PIN)); ... int getRSSI(int pin) { pinMode(pin, INPUT); return analogRead(pin); } // end getRSSI() Estou recebendo valores entre 640 e 650, mas gostaria de modific-los para RSSI mesmo (0 a 31) ou at mesmo em dBm. Algum tem alguma idia? Abrao Segue os fontes ArduinoRF1(onde comea tudo) / #include <VirtualWire.h> #define TX_PIN 12 #define RX_PIN 11 #define RSSI_PIN 3 void setup() { Serial.begin(9600); // Debugging only Serial.println("setup"); // Initialise the IO and ISR vw_set_tx_pin(TX_PIN); vw_set_rx_pin(RX_PIN); vw_set_ptt_inverted(true); // Required for DR3100 vw_setup(2000); // Bits per sec vw_rx_start(); } void loop()
6 de 12 29/06/2013 23:23

// Start the receiver PLL running

Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de ...

http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-...

{ const char *msg = "hello"; uint8_t buf[VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN; Serial.println(getRSSI(RSSI_PIN));

digitalWrite(13, true); // Flash a light to show transmitting vw_send((uint8_t *)msg, strlen(msg)); vw_wait_tx(); // Wait until the whole message is gone //Serial.print("Message sent\n"); digitalWrite(13, false); delay(200); // Wait at most 200ms for a reply if (vw_wait_rx_max(800)) { if (vw_get_message(buf, &buflen)) // Non-blocking { int i; digitalWrite(13, true); // Flash a light to show received good message // Message with a good checksum received, dump it. Serial.print("Got: "); String str = ""; for (i = 0; i < buflen; i++) { Serial.print((char)buf[i]);//, HEX); Serial.print(" "); str += (char)buf[i]; } // end for Serial.println(""); digitalWrite(13, false); } // end if } // end if else Serial.println("Timout"); } // end loop() int getRSSI(int pin) { pinMode(pin, INPUT); return analogRead(pin); } // end getRSSI() ArduinoRF2 (o segundo arduino) #include <VirtualWire.h> #define TX_PIN 12 #define RX_PIN 11 void setup() {
7 de 12 29/06/2013 23:23

Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de ...

http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-...

Serial.begin(9600); // Debugging only Serial.println("setup"); // Initialise the IO and ISR vw_set_tx_pin(TX_PIN); vw_set_rx_pin(RX_PIN); vw_set_ptt_inverted(true); // Required for DR3100 vw_setup(2000); // Bits per sec vw_rx_start(); } void loop() { const char *msg = "ok"; uint8_t buf[VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN; // Wait for a message vw_wait_rx(); if (vw_get_message(buf, &buflen)) // Non-blocking { int i; digitalWrite(13, true); // Flash a light to show received good message // Message with a good checksum received, dump it. Serial.print("Got: "); String str = ""; for (i = 0; i < buflen; i++) { Serial.print((char)buf[i]);//, HEX); Serial.print(" "); str += (char)buf[i]; } // end for Serial.println(""); if (str == "hello") { vw_send((uint8_t *)msg, strlen(msg)); vw_wait_tx(); // Wait until the whole message is gone Serial.print("Response sent\n"); delay(200); } // end if digitalWrite(13, false); } // end if } // end loop() // Start the receiver PLL running

Comentrio de Valdir Nunes Santos em 8 abril 2013 s 18:13 seria uma pequena distancia, aproximadamente 50,00 metros no mximo e a comunicao seria em um nico sentido.

8 de 12

29/06/2013 23:23

Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de ...

http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-...

Comentrio de Eduardo Nogueira em 8 abril 2013 s 15:59 Poder, pode... mas veja com quais distncias ir trabalhar e se vai precisar que a comunicao seja "vai e volta"

Comentrio de Valdir Nunes Santos em 8 abril 2013 s 15:44 preciso transmitir um sinal para um receptor que ser instalado em um veculo usando arduino, ser que posso usar o projeto acima como base.

Comentrio de Fbio Pereira em 2 abril 2013 s 21:23 "Comentrio de felipe araujo dos santos 4 horas atrs Boa Tarde Estou precisando montar um projeto para facul e nao sei como pode ser feito ....... um circuito para acender 3 lampadas via botao. e desligar cada lampada via controle rf alguem me ajuda ? abracos" Se tu usar um controle baseado no HT6P20 (esses de learn code), tem um script pra decriptar aqui no site. Estes controles geralmente possuem 3 botes. Resolvido o problema do controle. Vai precisar de um Derivado do arduino (Garagino, UNO, NANO, duemilanove , ......) e um receptor rf de 433mhz. Vai precisar de um shield de reles para acionamento das lampadas, se for mais prendado, ou estiver afim de por a mo na massa, tem vrios esquemas de como fazer no google. Um pouco de conhecimento em programao (hehehehhe), um pouco de google, cola e dois clipes de papel. .... da pra fazer.

Comentrio de Eduardo Nogueira em 2 abril 2013 s 19:43 Felipe, faz assim, monta seu projeto e posta as dvidas especficas, assim d pra ajudar... :)

Comentrio de felipe araujo dos santos em 2 abril 2013 s 17:06 Boa Tarde Estou precisando montar um projeto para facul e nao sei como pode ser feito ....... um circuito para acender 3 lampadas via botao. e desligar cada

9 de 12

29/06/2013 23:23

Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de ...

http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-...

lampada via controle rf alguem me ajuda ? abracos

Comentrio de Rafael Spessotto em 22 janeiro 2013 s 19:07 Senhores, nao consegui fazer funcionar esse exemplo...pelo que to vendo a luzinha do transmissor so fica acessa...nao parece que ta enviando nada..alguem pode ajudar? pelo que vi fiz tudo certinho exatamente como nas figuras... :(

Comentrio de Leonilde Diogenes Gurgel Neto em 6 dezembro 2012 s 0:03 Fbio, Pode utilizar os controles j prontos... mas eles vem com uma codificao e vc precisa testar isso com mais calma. O "ajuste" para sintonizar somente. Anterior 1 2 3 4 Prximo Pgina RSS Bem-vindo a Laboratorio de Garagem (arduino, eletrnica, robotica, hacking)

Registre-se
ou acesse Or sign in with:

Publicidade
Convide um amigo para o Lab!

10 de 12

29/06/2013 23:23

Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de ...

http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-...

Loja Lab de Garagem

Novo! Garagino Rev1 Por: R$ 29,00 Ou em at 6x de R$ 5,18

Android 4.0 Mini PC Por: R$ 195,00 Ou em at 18x de R$ 13,00

11 de 12

29/06/2013 23:23

Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de ...

http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-...

Osciloscpio Digital (ADS1102C) - 100MHz - 2 Canais Por: R$ 1920,00 Ou em at 18x de R$ 127,96

Kit Completo de Ferramentas - Avanado Por: R$ 540,00 Ou em at 18x de R$ 35,99 2013 Criado por Marcelo Rodrigues. Badges | Relatar um incidente | Termos de servio Entrar no bate-papo

12 de 12

29/06/2013 23:23