No mercado existe vários tipos e meios de comunicação para usar com Arduino. Neste tutorial usaremos os RF Link Receiver - 4800bps(315Mhz) e RF Link Transmitter - 315Mhz e testaremos a comunicção 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 da pasta da IDE do Arduino. Nesta biblioteca é bem fácil 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, faça a seguinte ligação:
Onde:
Agora, abra a IDE do Arduino e vá em File/Examples/VirtualWire e selecione "transmitter",conecte o Arduino, selecione a versão do Arduino(UNO, Duemilanove,etc) e clique em UPLOAD. Abaixo mostra a programaçã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 (mikem@open.com.au)
// 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 only
Serial.println("setup");
// Initialise the IO and ISR
vw_set_ptt_inverted(true); // Required for DR3100
vw_setup(2000); // Bits per sec
}
void loop()
{
const char *msg = "hello";
digitalWrite(13, true); // Flash a light to show transmitting
vw_send((uint8_t *)msg, strlen(msg)); //Send the message
vw_wait_tx(); // Wait until the whole message is gone
digitalWrite(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:
// 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);
}
}
Este exemplo mostra o receiver recebendo a informação do emissor, que nesse caso é o "hello". Ao abrir o Serial monitor do Arduino-1.0, você verá que os dados que chegam são números, estes números são nú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 mesmo neste blog. Vocês podem ver outros tutoriais, clicando aqui. Temos a seção de projetos também que vocês podem 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...
Comentar
Jose Rodolfo, vossa senhoria falou que colocou os pinos 13 do receptor e do emissor como sendo o pino para a comunicação. Como podemos ver no exemplo dado, o pino 13 foi utilizado para apenas "exibir" que os dados estão sendo transmitidos, por isso os mesmos só podem ser utilizados para "exibição" da comunicação.
Então o ideal é que vc coloque para ser sinalizado a comunicação em outro pino ou coloque para a comunicação acontecer por meio de outro pino.
Por exemplo, modificar as linhas: "digitalWrite(13, true);" e "digitalWrite(13, false);" colocando outro pino que não seja o 13.
É isso, espero ter ajudado.
Fiquem com Deus ;)
alguém pode me ajudar?
Por favor me ajudem (sou iniciante e atrapalhado):
1. Como receptor usei outro modelo com 4 pinos somente. Algum problema?
2. Nos sketches da biblioteca aparece o pino 13 no receptor e no transmissor. No post
aparecem outros. Coloquei 13 nos 2 sketches. Algum problema?
3. Quando ambos ligados, o 13 do transmissor não pisca (flash) e do receptor sim e no monitor
somente aparece "setup" e mais nada. Algum erro meu?
4. Quando desligo o transmissor o 13 do receptor continua piscando. O que significa? Não parece que está tudo errado?
Muito Obrigado pela futura ajuda.
Tenho que fazer alguma mudança para usar com módulo de 433mhz?
Qual a distância máxima entre transmissor e receptor para o pleno funcionamento?? Tem que estar visado?
mensagem é para aparecer no LCD?
se for como faço para ligar?
Olá dá para simular no Proteus?
A comunicação dos transmissores e receptores RF são criptografadas?? Ou seja, somente os dois podem se comunicar?
Boa dia galera.
Estava tentando fazer esse um projeto parecido com esse só que com PIC 16F628A porem sem sucesso.
Então agora estou partindo do principio de fazer com arduino. Eu quero fazer pra ligar/desligar o LED com um botão por exemplo.
Podem me informar que adaptações preciso fazer no código?
Na verdade não.
Vai ser algo assim:
- Carro entra no posto;
- Receptor detecta o carro;
- Detector envia informações do carro para o banco de dados;
- iPad que fica verificando o banco de dados via Wifi percebe que há uma nova requisição de abastecimento;
- Sistema abre tela de abastecimento com as informações do veículo;
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
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)