Tutorial: Como montar um carrinho de controle remoto controlado por Radiofrequência (RF) com Garagino

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 Plataforma Magician

2x Garagino

1x Módulo Conversor USB/Serial

1x Mini RF Transmitter Shield - 315MHz para Garagino

1x Mini RF Receiver Shield - 315MHz para Garagino

1x Dual Motor Garagino

2x Suporte para 3 Pilhas

1x Suporte para 4 pilhas

4x Chave Táctil

4x Resistor 10K

1x Protoboard 830

10x Pilhas AA

Jumpers

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 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-controlando-a-posicao-do-led-na-matriz-8x8-a-distancia-u

http://labdegaragem.com/profiles/blogs/tutorial-como-montar-plataforma-robotica-magician

Exibições: 54157

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 Eduarda Oliveira em 4 julho 2016 às 16:28

Oi, comprei o conversor usb/serial, porém, ao conectar ao pc, não está reconhecendo, alguém pode me ajudar? utilizo a placa dual motor Garagino

Comentário de Laboratório de Garagem em 6 abril 2015 às 18:53

-Flavio: Código corrigido, obrigado pelo aviso.

-Cleber: Ficou muito legal, vejo que você utilizou um Garagino. =D

Comentário de Cleber Moretti em 1 abril 2015 às 18:28
Comentário de Flavio Andrade em 1 abril 2015 às 7:25

amigo, vc colocou o mesmo codigo do transmissor no receptor...

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço