Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de Garagem (arduino, eletrônica,...
-
Upload
careca1984 -
Category
Documents
-
view
294 -
download
0
Transcript of Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de Garagem (arduino, eletrônica,...
Procurar
Registre-seAcessar
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
#42
InícioPerfilGaragistasIncubadoraLojaÁrea TécnicaDiscussõesGaleriaGruposSobre
Todas as mensagens do blogMeu blogAdicionar
Tutorial transmissor e receptor RF Link comArduino
Postado por Laboratório de Garagem em 7 maio 2012 às 15:00Exibir blog
No mercado existe vários tipos e meios de comunicação para usar com Arduino. Neste tutorial usaremosos RF Link Receiver - 4800bps(315Mhz) e RF Link Transmitter - 315Mhz e testaremos a comunicção
Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de ... http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-...
1 de 12 29/06/2013 23:23
entre eles utilizando a biblioteca Virtual Wire e a documentação disponível 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 dapasta da IDE do Arduino. Nesta biblioteca é bem fácil de usar, pois já existe um tratamento de erros parafiltrar os erros que chegam no receptor.
Agora para montar o emissor RF Link Transmitter - 315Mhz com Arduino, faça a seguinte ligação:
Onde:
O Fio vermelho vai para o VCC ou 5VO Fio preto vai para o GNDO FIo verde vai para o pino digital 12 do ArduinoPor opção, pode-se colocar uma antena para melhor captação 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 oArduino, selecione a versão do Arduino(UNO, Duemilanove,etc) e clique em UPLOAD. Abaixo mostra aprogramação:
// 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 ([email protected])
Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de ... http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-...
2 de 12 29/06/2013 23:23
// 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); // Debugging onlySerial.println("setup");
// Initialise the IO and ISRvw_set_ptt_inverted(true); // Required for DR3100vw_setup(2000); // Bits per sec}
void loop(){const char *msg = "hello";
digitalWrite(13, true); // Flash a light to show transmittingvw_send((uint8_t *)msg, strlen(msg)); //Send the messagevw_wait_tx(); // Wait until the whole message is gonedigitalWrite(13, false);delay(200);}
A programação "transmitter" é um exemplo básico onde manda a palavra "hello" para o receptor.
Pronto, agora vamos montar o RF Link Receiver - 4800bps(315Mhz):
Onde:
Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de ... http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-...
3 de 12 29/06/2013 23:23
O fio vermelho vai para o VCC ou 5VO fio preto vai para GNDO fio verde vai para o pino digital 11 do ArduinoPor opção, pode-se colocar uma antena para melhor captação 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" efaça o mesmo procedimento que o do emissor. Abaixo mostra a programação 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 ([email protected])// 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 onlySerial.println("setup");
// Initialise the IO and ISRvw_set_ptt_inverted(true); // Required for DR3100vw_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);}}
Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de ... http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-...
4 de 12 29/06/2013 23:23
Este exemplo mostra o receiver recebendo a informação do emissor, que nesse caso é o "hello". Ao abriro Serial monitor do Arduino-1.0, você verá que os dados que chegam são números, estes números sãonúmeros da tabela ASCII. Você pode ver que o número hexadecimal "68" equivale a letra "h".
E é isso!!! Esperamos que tenham gostado!!! Caso tenham dúvida sobre este tutorial, postem aqui mesmoneste blog. Vocês podem ver outros tutoriais, clicando aqui. Temos a seção de projetos também que vocêspodem ver e postar seus projetos! Até a próxima!!
Referências:
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...
Exibições: 11154
Tags: Rádio, arduino, frequência, tutorial
Curtir3 membros curtem isto
Compartilhar Twitter Facebook
< Post AnteriorPróximo Post >
Comentar
Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica,robotica, hacking) para adicionar comentários!
Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
Comentário 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 agradeço bastante.
Curtir 12
Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de ... http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-...
5 de 12 29/06/2013 23:23
Comentário de Rodrigo Moraes Silveira em 19 abril 2013 às 23:11
Olá, fiz algumas modificações nos exemplos transmiter e receiver, usando os exemplos server eclient da biblioteca VirtualWire. Porém com ambos equipamedos com um emissor e um redeptor deRF
Um arduino envia a mensagem "hello", o outro verifica o conteúdo da mensagem e responde comum ok. Meio tosco mas funcional, fontes no final da mensagem
A questão é: liguei a entrada RSSI do receptor no pino 3 do Arduino, e fiz uma leitura analógica
#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. Alguém tem alguma idéia?
Abraço
Segue os fontes
ArduinoRF1(onde começa 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(); // Start the receiver PLL running
}
void loop()
Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de ... http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-...
6 de 12 29/06/2013 23:23
{
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()
{
Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de ... http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-...
7 de 12 29/06/2013 23:23
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(); // Start the receiver PLL running
}
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()
Comentário de Valdir Nunes Santos em 8 abril 2013 às 18:13
seria uma pequena distancia, aproximadamente 50,00 metros no máximo e a comunicação seria emum único sentido.
Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de ... http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-...
8 de 12 29/06/2013 23:23
Comentário de Eduardo Nogueira em 8 abril 2013 às 15:59
Poder, pode... mas veja com quais distâncias irá trabalhar e se vai precisar que a comunicação seja"vai e volta"
Comentário de Valdir Nunes Santos em 8 abril 2013 às 15:44
preciso transmitir um sinal para um receptor que será instalado em um veículo usando arduino, seráque posso usar o projeto acima como base.
Comentário de Fábio Pereira em 2 abril 2013 às 21:23
"Comentário de felipe araujo dos santos 4 horas atrás
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 aquino site. Estes controles geralmente possuem 3 botões. Resolvido o problema do controle.
Vai precisar de um Derivado do arduino (Garagino, UNO, NANO, duemilanove , ......) e umreceptor rf de 433mhz.
Vai precisar de um shield de reles para acionamento das lampadas, se for mais prendado, ou estiverafim de por a mão na massa, tem vários esquemas de como fazer no google.
Um pouco de conhecimento em programação (hehehehhe), um pouco de google, cola e dois clipesde papel. É .... da pra fazer.
Comentário de Eduardo Nogueira em 2 abril 2013 às 19:43
Felipe, faz assim, monta seu projeto e posta as dúvidas específicas, assim dá pra ajudar... :)
Comentário 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
Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de ... http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-...
9 de 12 29/06/2013 23:23
lampada via controle rf
alguem me ajuda ?
abracos
Comentário de Rafael Spessotto em 22 janeiro 2013 às 19:07
Senhores, nao consegui fazer funcionar esse exemplo...pelo que to vendo a luzinha do transmissorso fica acessa...nao parece que ta enviando nada..alguem pode ajudar? pelo que vi fiz tudo certinhoexatamente como nas figuras... :(
Comentário de Leonilde Diogenes Gurgel Neto em 6 dezembro 2012 às 0:03
Fábio,
Pode utilizar os controles já prontos... mas eles vem com uma codificação e vc precisa testar issocom mais calma.
O "ajuste" é para sintonizar somente.
‹ Anterior1234Próximo ›Página
RSS
Bem-vindo aLaboratorio de Garagem (arduino, eletrônica, robotica, hacking)
Registre-seou acesse
Or sign in with:
Publicidade
Convide um amigo para o Lab!
Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de ... http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-...
10 de 12 29/06/2013 23:23
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
Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de ... http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-...
11 de 12 29/06/2013 23:23
Osciloscópio Digital
(ADS1102C) - 100MHz - 2 Canais
Por: R$ 1920,00
Ou em até 18x de
R$ 127,96
Kit Completo de Ferramentas - Avançado
Por: R$ 540,00
Ou em até 18x de
R$ 35,99
© 2013 Criado por Marcelo Rodrigues.
Badges | Relatar um incidente | Termos de serviço
Entrar no bate-papo
Tutorial transmissor e receptor RF Link com Arduino - Laboratorio de ... http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-...
12 de 12 29/06/2013 23:23