Projetos

Robô com Controle Remoto via APP Android

Eletrogate 10 de janeiro de 20209 min

Introdução

Hoje vamos fazer um projeto muito legal e simples, mas extraordinário para quem vê funcionando: Um Carrinho de Controle Remoto, onde o controle é o seu celular Android! O projeto é totalmente customizável de forma que você poderá implementar da forma que você achar melhor. Então mãos à obra!

Para fazer esse projeto iremos precisar de:

cta_cart


Montagem do Chassi

Se você não comprou os componentes separados, e optou por comprar um kit chassi 2WD como esse (link), você se deparou com esses componentes:

O primeiro passo que faremos será soldar fios aos terminais do motor. Para isso, vamos soltar o motor de sua caixa de redução, removendo a alça que une os dois. Após isso, retire-o e faça a ligação de fios aos terminais do motor com solda, e também, é recomendado passar um pouco de cola quente em cima da solda para evitar algum curto ou contato indesejado.

Essas peças auxiliares são, na verdade, suportes que prendem o motor ao carrinho. Colocaremos ele da seguinte forma:

1° – Encaixe dois suportes às fendas internas.

2° – Coloque o motor com seus furos alinhados ao furo do suporte.

3° – Encaixe o suporte externo com os furos alinhados e parafuse com a porca.

É interessante observar que devemos colocar o eixo do motor virado para a extremidade do chassi onde tem um círculo vazado no acrílico. Fazendo para os dois lados, e encaixando a roda no eixo do motor, o resultado obtido deverá ser este:

     

O próximo passo será a instalação da roda boba, e para isso precisaremos das seguintes peças:

Começaremos parafusando o extensor à roda boba, e depois parafusando o extensor ao chassi do carrinho, da seguinte forma: 

   

E colocamos também o disco encoder na roda. Porém, neste tutorial ele não terá utilidade, então fica a critério do leitor usar ou não. Com isso, quase concluímos a montagem do chassi. Só falta, para concluir, instalar a chave on/off no fio de alimentação do suporte de pilhas: com isso iremos poder ligar e desligar o carrinho de maneira mais prática. É altamente recomendado passar cola quente nos terminais soldados, para evitar o curto entre os terminais e também poder ter maior resistência mecânica em caso de uma tração acidental.


Montagem dos Componentes

Para fazer o acionamento dos motores, precisaremos de algo que consiga fornecer energia o suficiente para isso, e que possa ser controlado. Para isso iremos usar um driver ponte H L298N. A principal vantagem de se usar um módulo destes é que ele permite que a gente possa controlar o motor nas duas direções.

O módulo ponte H usado é desta forma:

Imagem retirada do site da Sala Maker

Onde iremos, inicialmente, fazer as conexões dos motores A e B. A priori não precisamos preocupar com qual fio vai em qual motor, basta afrouxar o parafuso do borne, conectar o fio e apertar o parafuso. A montagem ficou da seguinte forma:

 

Perceba que que há um parafuso no módulo ponte H. Esse parafuso está ligado com uma arruela ao chassi, isso fará com que possamos dispensar o uso de colas e o deixar bem fixo. Com a ponte H instalada e os motores conectados, faremos a instalação do suporte de pilhas. Colocamos uma dupla face nas costas do suporte e então ele foi fixado na parte debaixo do chassi, da seguinte forma:

Iremos conectar os fios de alimentação na ponte H. Vamos colocar o fio vermelho, que sai do suporte de pilhas, no borne VCC do módulo ponte H, e o preto do suporte de pilhas no borne de GND. Para consultar essas informações, basta ver a imagem da ponte H um pouco mais acima, neste post. Para ajudar, ainda nesta etapa das conexões, é recomendado colocar um jumper (fio) dentro do borne de GND, junto com o fio preto do suporte de energia. A ligação ficou assim:

Esse jumper é para ser usado futuramente, sendo colocado na porta GND do Arduino. Agora só está faltando uma bateria, para fornecer energia ao Arduino. Essa alimentação separada foi escolhida porque as 4 pilhas possuem uma disponibilidade de corrente elétrica um pouco baixa, e ligando todo o circuito no suporte, ele não consegue fornecer energia, e os motores acabam ficando parado.

Colocamos uma fita dupla face na bateria também, e instalamos ela exatamente embaixo (no chassi) do módulo ponte H. O resultado foi este:

   

Então até o momento nosso carrinho está assim, certo? Se não, revise alguns passos anteriores:

Para melhorar um pouco a estética e facilitar o uso, instalamos a chave on/off bem na frente do carrinho, e colamos com cola quente. Para isso precisamos estender um pouco mais o fio.

Então, agora, para termos um carrinho já funcional só falta colocar na montagem a placa do Arduino e fazer corretamente as ligações. A conexão com o Arduino pode ser feita da seguinte forma:

Colocando a placa na parte central. As conexões da ponte H com o Arduino serão feitas da seguinte forma:

Observações: 

  • É extremamente importante que os GND estejam ligados juntos, isso significa que temos que ligar o GND da ponte H com o GND do Arduino. (Estamos fazendo isso com o jumper que foi colocado junto com o GND da bateria no borne da ponte H. Esse GND foi ligado na porta GND do arduino).
  • Ao colocar o cabo USB para carregar o programa ou monitorar algo, remova a alimentação da bateria de 9V.

Fazendo a Conexão do Bluetooth

Usaremos o módulo Bluetooth HC-06 para fazer a conexão com o celular. A montagem final, com o Bluetooth será dessa forma:

Foi feito um divisor resistivo para reduzir a tensão no pino RX do módulo Bluetooth, porque ele só aceita 3,3V. Então, estamos usando um resistor de 10K e outro de 22K, o que vai fazer ter aproximadamente 3V, mas ainda na margem de funcionamento. 

Foi colocado um LED de indicação, para que quando o Bluetooth estiver conectado, podermos ter uma indicação visual de que está tudo funcionando. Para o LED, pode ser usado um resistor de 330R e ele pode ser de qualquer cor.

A montagem final ficou assim:

O código utilizado no arduino

#define in1 6 // Entrada do motor 1
#define in2 5 // Entrada do motor 1
#define in3 11 // Entrada do motor 2
#define in4 10 // Entrada do motor 2


int dataIn[5] {0,0,0,0}; // Vetor dos dados completos que receberemos do aplicativo
int in_byte = 0; // A informação em bytes que estamos recebendo a cada momento do aplicativo
int array_index = 0; // Indice do vetor 
int X, Y, button, velMotor; // As coordenadas em X, Y, o botão (que não estamos usando ainda) e a variavel de velocidade
unsigned long time1; // Variavel auxiliar para guardar tempo

void setup() {
Serial.begin(9600);  
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(2, OUTPUT); // Definindo o pino do led
}

void loop() {
  if (Serial.available() > 0) { // Verificando se há dados para receber do bluetooth.
    time1 = millis(); // A variavel time1 salva o tempo em que o bluetooth enviou dados da ultima vez
    digitalWrite(2, HIGH); // ativa o led de indicação que a conexão está ativa
    in_byte = Serial.read();  // Recebendo um byte do app
    if (in_byte == (255))  // Verifica se é o byte de encerramento do dado
      array_index = 0;
    dataIn[array_index] = in_byte;   //Salvando o dado no vetor de indices
    array_index = array_index +1; 
  }
  else{
    if((millis() - time1)>500) // Compara se passaram mais que 0,5s desde a ultima vez que o bluetooth estava disponivel
      digitalWrite(2, LOW); // Se passou, significa que a conexão foi perdida, e o LED desliga
  }
    

    
  X = dataIn[2]-124; // Calculando o valor do eixo X do Joystick
  Y = 124-dataIn[3]; //Calculando o valor do eixo X do Joystick
  button = dataIn[1]; // Recebe o estado do botão, mas não usaremos
  
  velMotor = Y*2; // Calculo da velocidade do motor para fazer o acionamento PWM
  
  //----------- Para frente ---------------//

  if((Y>1)){ // Carrinho para frente
    analogWrite(in1, velMotor); 
    digitalWrite(in2, LOW);
    analogWrite(in3, velMotor);
    digitalWrite(in4, LOW);
  }
  //--------------------------------------//
  
  //----------- Para tras ---------------//

  else if (Y<(-1)){ // Carrinho para trás
    analogWrite(in2, -1*velMotor);
    digitalWrite(in1, LOW);
    analogWrite(in4, -1*velMotor);
    digitalWrite(in3, LOW);
  }
 //-------------------------------------------//

// ------------ Carrinho parado -------------//

  else {
    digitalWrite(in1, LOW); 
    digitalWrite(in2, LOW);
    digitalWrite(in3, LOW);
    digitalWrite(in4, LOW);
  }
  //---------------------------------------//
  
  //------------- Para os lados --------------//
  if(X < -34 ){ // Limite para começar a virar para a esquerda
    digitalWrite(in1, LOW);
    digitalWrite(in2, LOW);
  }
  else if (X > 34){ // Limite para começar a virar para a direita.
    digitalWrite(in3, LOW);
    digitalWrite(in4, LOW);
  }
}

Conectando o Bluetooth

Para fazer a conexão com o celular, criamos um aplicativo Android e disponibilizamos ele para ser instalado em celulares Android, e servirá como controle remoto para o carrinho. Para baixar o aplicativo, clique aqui. Caso seja baixado um arquivo cujo nome termine em .zip, “joystick_app2.apk.zip”, renomeie-o para “joystick_app2.apk”.

Com o aplicativo baixado, clique no arquivo joystick_app2.apk e uma tela similar a esta abaixo pode ser que apareça. Se caso não aparecer, pode seguir a instalação normalmente.

Se aparecer, vá na opção “Configurações” e deixe selecionado “Permitir desta fonte”, e pode voltar.

Voltando, uma tela similar como a mostrada abaixo deverá aparecer, e você deverá apertar em “Instalar”. Caso se não aparecer, abra o arquivo joystick_app2.apk novamente e aperte em instalar. 

Com o aplicativo instalado, ligue o bluetooth do seu smartphone, volte ao aplicativo e aperte em “conectar”. Ligue também o alimentação do arduino na bateria de 9V. 

Os LEDs do Arduino e do Bluetooth devem ligar nesse momento. (Ainda não é necessário apertar a chave gangorra que instalamos para energizar a ponte H com as 4 pilhas, só ligue depois que a conexão Bluetooth estiver estabelecida). 

Conecte ao Bluetooth que tem HC-06 no final.

Observe que mostrará que está conectado ao carrinho, e o LED de indicação, do carrinho, se ligará. Agora basta só mexer o círculo azul para frente e para trás que o seu carrinho irá mexer. 

Os comandos funcionam da seguinte forma:

Para frente indica aceleração do carrinho, e os lados indicam a direção de rotação.  Se o comando do aplicativo não funcionam como deveria, por exemplo: O comando de ir pra frente faz o carrinho girar, ou ir para trás. Uma maneira fácil de solucionar é inverter os fios do motor com comportamento estranho no módulo Ponte H.

Boa diversão!

Se gostar ou tiver alguma dúvida, deixe um comentário!

Conheça a Metodologia Eletrogate e ofereça aulas de robótica em sua escola!


Sobre o Autor


Gustavo Nery

Cursando Engenharia de Controle e Automação pela UFMG. Apaixonado por eletrônica, computação e tecnologias na área de sistemas embarcados. Nos tempos livres me divido entre desenvolver pesquisa na universidade, adquirir novos conhecimentos e estar com a família.


Eletrogate

10 de janeiro de 2020

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!

Eletrogate Robô

Cadastre-se e fique por
dentro de novidades!