Olá Garagistas! Neste tutorial mostraremos como você pode criar um carrinho de controle remoto utilizando comunicação RF e Garagino. Como demonstração mostraremos como montar o carrinho com receptor de RF (Mini RF Receiver Shield) que é controlado a partir de um controle remoto com transmissor de RF (RF Mini RF Transmitter Shield). Ambos, controle e carrinho controlados por Garagino.
Material Utilizado:
1x Módulo Conversor USB/Serial
1x Mini RF Transmitter Shield - 315MHz para Garagino
1x Mini RF Receiver Shield - 315MHz para Garagino
10x Pilhas AA
1. Funcionamento
Figura 1 - Envio do comando "F" do Controle para o Carrinho
1.1) Transmissor (Controle): O controle foi montado em uma protoboard, onde temos 4 botões, um Mini RF Transmitter Shield (Transmissor RF) e um Garagino que tem como função identificar qual botão foi pressionado e enviar seu respectivo comando para o receptor (Carrinho) através do Mini RF Transmitter Shield. O controle envia 5 comandos (letras), um comando para cada botão (chave táctil), e um comando quando nenhum botão for pressionado:
Figura 2 - Botões e seus respectivos comandos
- F (Forward) quando o botão ligado ao pino D12 for pressionado.
- B (Back) quando o botão ligado ao pino D1(Tx) for pressionado.
- L (Left) quando o botão ligado ao pino D7 for pressionado.
- R (Right) quando o botão ligado ao pino D6 for pressionado.
- S (Stop) quando nenhum botão for pressioado.
1.2) Receptor (Carrinho): O carrinho foi montado utilizando uma Plataforma Magician, um Garagino, um Dual Motor Garagino e um Mini RF Receiver Shield. O Mini RF Receiver Shield pega os dados enviados do controle, e transfere para o Garagino fazer o acionamento dos motores através do Dual Motor Garagino. Na tabela abaixo você pode verificar a lógica utilizada para controlar os motores e movimentar o carrinho:
Tabela 1 - Comandos recebidos e suas respectivas respostas
2. Biblioteca VirtualWire.h e Utilização dos Mini RF Shields
O download da versão biblioteca VirtualWire.h utilizada neste tutorial pode ser efetuado clicando aqui. Mais detalhes sobre a utilização dos módulos RF Link (módulos nos Mini RF Shields), podem ser encontrados no tutorial Como utilizar os módulos RF Link (315MHz/434MHz).
3. Montagens
OBS¹: Não é obrigatória a sequência dos os passos de montagens descritas aqui.
OBS²: Antes das montagens certifique-se que as chaves ON/OFF do suporte de pilhas entejam posicionadas em OFF. É ideal que você somente ligue-os quando for colocar o carrinho e controle em funcionamento:
Imagem 1 - Suporte de Pilhas em posição OFF
3.1) Transmissor (Controle): Abaixo temos a montagem que foi feita para o controle:
Figura 3 - Montagem do Controle
3.2) Receptor (Carrinho): Abaixo temos os passos necessário para a montagem do Carrinho:
3.2.1) Faça a montagem da plataforma Magician, conforme o tutorial disponível neste link.
3.2.2) Prenda a Dual Motor Garagino na plataforma Magician com parafusos e porcas M3 (ou fita) e RETIRE o jumper VIN_5V para que as alimentações do Garagino e dos Motores sejam separadas:
Imagem 2 - Fixação do Dual Motor Garagino e retirada do jumper VIN_5V
3.2.3) Fixe o suporte para 3 pilhas de uma maneira que fique fácil as ligações do Positivo e do Negativo das pilhas com o Garagino. Em nossa montagem posicionamos o suporte abaixo do Dual Motor Garagino:
Imagem 3 - Fixação do do suporte de 3 pilhas abaixo do Dual Motor Garagino
3.2.4) Fixe o suporte para 4 pilhas de uma maneira que fique fácil as ligações do Positivo e do Negativo das pilhas com o Dual Motor Garagino. Em nossa montagem posicionamos o suporte atrás do Dual Motor Garagino:
Imagem 4 - Fixação do do suporte de 4 pilhas atrás do Dual Motor Garagino
3.2.5) Faça as ligações dos motor da esquerda (M1), o motor da direita (M2) e das pilhas (suporte de 4 pilhas) no Dual Motor Garagino:
Imagem 5 - Ligações dos motores e do suporte de pilhas ao Dual Motor Garagino
3.2.6) Conecte o Mini RF Receiver Shield ao Garagino e depois conecte ambos no Dual Motor Garagino:
Imagem 6 - Conexão do Mini RF Receiver Shield e do Garagino ao Dual Motor Garagino
3.2.7) Por fim coloque os pinos do suporte de 3 pilhas nos terminais VCC e GND do Garagino:
Imagem 7 - Conexão do fios de alimentação VCC e GND do suporte de 3 pilhas ao Garagino
3.2.8) Pronto, seu carrinho já estará montado:
Imagem 8 - Montagem Completa
4. Sketch
4.1) Transmissor:
#include <VirtualWire.h> //Inclui a biblioteca VirtualWire.h
char *letra = "S"; //Cria a variável letra com o valor "S"
void setup()
{
//++++++++++++++Inicializa o módulo transmissor+++++++++++++++++++
vw_set_ptt_inverted(true); //Configuração da Biblioteca
vw_setup(2000); //Configuração da Biblioteca
vw_set_tx_pin(3); //Configura o pino D3 para a leitura dos dados
//================================================================
//Configura os pinos 1, 6, 7, e 12 como entrada
//e resistor de pullup ativo
pinMode(1,INPUT_PULLUP);
pinMode(6,INPUT_PULLUP);
pinMode(7,INPUT_PULLUP);
pinMode(12,INPUT_PULLUP);
//======================================
}
void loop()
{
//Verifica se tem algum botão pressionado para enviar a seu respectivo comando (letra)
if(!digitalRead(12)) letra = "F"; //Envia "F" se D12 = LOW (Bottão Pressionado)
else if(!digitalRead(1)) letra = "B"; //Envia "B" se D1 = LOW (Bottão Pressionado)
else if(!digitalRead(6)) letra = "R"; //Envia "R" se D6 = LOW (Bottão Pressionado)
else if(!digitalRead(7)) letra = "L"; //Envia "L" se D7 = LOW (Bottão Pressionado)
//=======================================================================
//Senão, se nenhum botão for pressionado, enviar "S"
else letra = "S"; //Envia "S" se nenhum botão for pressionado
//==================================================
//Transmiste a variável letra 3 vezes
for(int i=0 ; i<3 ; i++)
{
vw_send((uint8_t *)letra, strlen(letra)); //Envia a variável letra
vw_wait_tx(); //Aguarda o fim de transmissão
delay(10); //Aguarda 10 milissegundos
}
//===================================
}
4.2) Receptor:
#include <VirtualWire.h> //Inclui a biblioteca VirtualWire.h
#include <DualMotor.h> //Incluid a biblioteca DualMotor.h
DualMotor dualmotor; //Instância a biblioteca DualMotor
char letra = 'S'; //Cria variável para armazenar as letras que serão recebida
void setup()
{
//++++++++++++++Inicializa o módulo receptor+++++++++++++++++++
vw_set_ptt_inverted(true);
vw_setup(2000);
vw_set_rx_pin(2); //Configura o pino D2 para a leitura dos dados
vw_rx_start(); //Inicia a leitura de dados do módulo receptor
//==============================================================
}
void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN]; //Variável para o armazenamento do buffer dos dados
uint8_t buflen = VW_MAX_MESSAGE_LEN; //Variável para o armazenamento do tamanho do buffer
if (vw_get_message(buf, &buflen)) //Se no buffer tiver algum dado (letra)
{
letra = buf[0]; //Armazena o que foi recebido na variável letra
if (letra == 'F') //Se a letra recebida for igual a F(Forward), vai para frente
{
dualmotor.M1move(255, 1);
dualmotor.M2move(255, 1);
}
else if (letra == 'B')) //Se a letra recebida for igual a B(Back), movimenta o carrinho para trás
{
dualmotor.M1move(255, 0);
dualmotor.M2move(255, 0);
}
else if (letra == 'R') //Se a letra recebida for igual a R(Right), movimenta o carrinho para direita
{
dualmotor.M1move(255, 1);
dualmotor.M2move(255, 0);
}
else if (letra == 'L') //Se letra recebida for igual a L(Left), movimenta o carrinho para esquerda
{
dualmotor.M1move(255, 0);
dualmotor.M2move(255, 1);
}
else if (letra == 'S') //Se a letra recebida for igual a S(Stop), para o carrinho
{
dualmotor.M1parar();
dualmotor.M2parar();
}
}
}
Referências:
http://labdegaragem.com/profiles/blogs/como-utilizar-os-modulos-rf-link-315mhz-434mhz
http://labdegaragem.com/profiles/blogs/tutorial-como-montar-plataforma-robotica-magician
Comentar
-Flavio: Código corrigido, obrigado pelo aviso.
-Cleber: Ficou muito legal, vejo que você utilizou um Garagino. =D
Eu fiz um parecido há um tempo ...
Controlando Robô pelo Teclado com Arduino e RF 433MHz
amigo, vc colocou o mesmo codigo do transmissor no receptor...
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)