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:
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.

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:
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);
}
}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!
|
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!