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.
Conheça a Metodologia Eletrogate e Lecione um Curso de Robótica nas Escolas da sua Região!