fbpx
ArduinoNovidade

Robô controlado via Bluetooth por celular Android com Arduino e Kit Chassi 2 rodas 2WD com base de acrílico 

Sabemos que o Arduino é uma plataforma versátil, ao integrar outros componentes eletrônicos, podemos desenvolver diversos projetos usando a criatividade. A construção de um robô controlado via Bluetooth por celular é um excelente exemplo dessa capacidade. Este projeto oferece uma introdução prática a diversos conceitos da robótica, como eletrônica, programação e comunicação sem fio.

Neste tutorial, vamos guiá-lo através do processo de construção de um robô controlado via Bluetooth por celular Android. Utilizando um Arduino e um Kit Chassi 2 rodas 2WD com base de acrílico, você aprenderá como conectar os componentes eletrônicos, programar o Arduino e configurar a comunicação Bluetooth com um dispositivo Android. 

Vamos utilizar o aplicativo Dabble para controlar nosso robô, aproveitando a interface amigável e os recursos avançados que ele oferece.

 

imagem ilustrativa da Figura 1: Robô controlado via Bluetooth por celular Android com Arduino
Figura 1: Robô controlado via Bluetooth por celular Android com Arduino

MATERIAIS NECESSÁRIOS

1x Kit Chassi 2 Rodas Base de Acrílico 2WD + Suporte de Pilhas
1x Módulo Bluetooth HC 06
1x Mini Protoboard 170 Furos
1x Driver Ponte H Dupla L298N
1x Kit Resistor 10k 1/4 W;
1x Kit Cabo Jumper Macho x Macho 20 cm
1x Kit Cabo Jumper Macho x Fêmea 20 cm
1x Cabo Adaptador de Alimentação Compatível com Arduino Bateria 9V
1x Placa Uno SMD R3 Atmega328;
1x Cabo USB Tipo A – B Compatível com Arduino Uno / Mega.

COMO MONTAR 

Para iniciar a construção do seu robô seguidor de linha, precisamos montar o chassi. Para isso, siga o tutorial de como montar o Kit Chassi 2 rodas 2WD com base de acrílico

Em seguida, vamos fixar os componentes eletrônicos no chassi, começando com Arduino, a protoboard e a ponte H. Em nosso projeto, fixamos estes componentes ao chassi usando fita dupla face. Você pode ficar à vontade para posicionar da maneira que achar melhor.  

Observação: Antes de fixar o Arduino e a ponte H no chassi, aplique fita isolante na parte inferior desses componentes. Isso evita que pontos do circuito entrem em contato direto com parafusos e porcas do chassi de acrílico, prevenindo possíveis curtos-circuitos. 

A parte superior do nosso projeto ficou da seguinte forma:  

Imagem ilustrativa da Figura 2: Vista superior do chassi.
Figura 2: Vista superior do chassi.

Na parte inferior, vamos posicionar as pilhas e a bateria. 

Figura 3: Vista inferior do chassi.
Figura 3: Vista inferior do chassi.

ESQUEMÁTICO DE LIGAÇÃO 

Agora que todos os componentes estão posicionados corretamente, vamos proceder com as ligações. Siga o esquemático da Figura 4, mas antes de iniciar certifique-se de que a alimentação esteja desligada para evitar danos durante a montagem. 

Imagem ilustrativa da Figura 4: Esquemático de ligação.
Figura 4: Esquemático de ligação.

Ao montar o circuito, observe os seguintes pontos: 

  • O módulo está ligado a um divisor de tensão feito com os resistores, pois mesmo que ele deva ser ligado entre 5V e 6V, ele opera em um nível logico 3.3V. Você pode conferir mais detalhes sobre a ligação no tutorial: Como utilizar o Módulo Bluetooth HC-05 com Arduino;
  • Ligue o pino IN1 da ponte H na porta digital 5 do Arduino, o pino IN2 na porta digital 6, pino IN3 na porta 9 e o pino IN4 na porta digital 10;
  • Ligue os motores na ponte H.

ATENÇÃO: Antes de alimentar o circuito, certifique-se que tudo esteja de acordo com a imagem do esquemático acima. Observe na imagem do esquemático que o GND deve estar em comum entre todos os componentes. Recomendamos o uso de pilhas alcalinas, que possuem uma maior eficiência energética.  

ELABORANDO O CÓDIGO  

Com o circuito montado, vamos a programação. A proposta desse projeto é montar um robô controlado via Bluetooth por celular Android utilizando o Arduino, Kit Chassi 2 rodas 2WD com base de acrílico e o aplicativo Dabble. 

Para tal, vamos fazer uso da biblioteca Dabble. Para instalá-la abra o Gerenciador de Bibliotecas do Arduino IDE pelo caminho: Rascunho > Incluir biblioteca > Gerenciar bibliotecas, ou pelo atalho Ctrl+Shift+I. 

Imagem ilustrativa da Figura 5: Incluindo a biblioteca.
Figura 5: Incluindo a biblioteca.

Após a instalação, acompanhe os passos a seguir para melhor compreensão da lógica de programação: 

  1. Adicionar as bibliotecas 

Começamos a programação adicionando as diretivas #define CUSTOM_SETTINGS e #define INCLUDE_GAMEPAD_MODULE que informam ao compilador para incluir configurações personalizadas e o módulo GamePad da biblioteca Dabble. 

Em seguida, incluímos a biblioteca Dabble, que permite a comunicação entre o Arduino e o aplicativo Dabble no celular. 

  1. Declarar as variáveis 

As constantes in1, in2, in3, e in4 definem as portas digitais 7, 6, 5 e 4 do Arduino, conectadas aos pinos de controle da ponte H. 

  1. Configurações iniciais 

Na função setup(), inicializamos a comunicação serial e a comunicação Bluetooth com o aplicativo Dabble. Além disso, configuramos as portas de controle da ponte H como saídas. 

  1. Função loop() 

Inicializaremos a função loop() chamando a função Dabble.processInput(), que atualiza os dados do aplicativo Dabble.  

Em seguida, imprimimos no monitor serial a mensagem Imprime “KeyPressed: ” e chamamos a função parar() para garantir que o robô esteja parado antes de receber novos comandos. 

Em seguida, usaremos estruturas condicionais para que o robô decida o seu movimento com base nos botões pressionados no aplicativo Dabble, da seguinte forma: 

  • Se o botão “UP” for pressionado, imprime “UP” e chama moveParaFrente(); para que o robô se mova para frente; 
  • Se o botão “DOWN” for pressionado, imprime “DOWN” e chama moveParaTras(); para que o robô se mova para trás; 
  • Se o botão “Left” for pressionado, imprime “Left” e chama moveParaEsquerda(); para que o robô se mova para a esquerda; 
  • Se o botão “Right” for pressionado, imprime “Right” e chama moveParaDireita(); para que o robô se mova para a direita. 
  1. Criar as funções de controle do movimento do robô 

Criamos funções específicas para cada movimento possível do robô. Cada função configura os estados dos pinos dos motores para direcionar o robô para frente, esquerda, direita ou para pará-lo, da seguinte forma: 

  • A função moveParaTras() ativa o motor 1 (in1 HIGH e in2 LOW) e o motor 2 (in3 HIGH e in4 LOW) para mover o robô para trás; 
  • A função moveParaFrente() ativa o motor 1 (in1 LOW e in2 HIGH) e o motor 2 (in3 LOW e in4 HIGH) para mover o robô para frente;  
  • A função moveParaDireita() mantém o motor 1 para frente (in1 HIGH e in2 LOW) enquanto inverte a direção do motor 2 (in3 LOW e in4 HIGH) para fazer o robô virar à direita; 
  • A função moveParaEsquerda() inverte a direção do motor 1 (in1 LOW e in2 HIGH) enquanto o motor 2 continua para frente (in3 HIGH e in4 LOW) para fazer o robô virar à esquerda; 
  • A função parar() desliga ambos os motores (in1 LOW e in2 LOW para o motor 1 e in3 LOW e in4 LOW para o motor 2) para parar o robô. 

Para entender melhor o funcionamento dos motores com a ponte H e a criação das funções, recomendamos que veja o tutorial de Como controlar motor DC utilizando o Driver Ponte H L298N

No final, o código ficará da seguinte maneira: 

#define CUSTOM_SETTINGS
#define INCLUDE_GAMEPAD_MODULE
#include <Dabble.h>

int in1 = 10;
int in2 = 9;
int in3 = 6;
int in4 = 5; 

void setup() {
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  Serial.begin(250000);      
  Dabble.begin(9600);      
}

void loop() {
  Dabble.processInput();            
  Serial.print("KeyPressed: ");
  parar();
  if (GamePad.isUpPressed())
  {
    Serial.print("UP");
    moveParaFrente();
  }

  if (GamePad.isDownPressed())
  {
    Serial.print("DOWN");
    moveParaTras();
  }

  if (GamePad.isLeftPressed())
  {
    Serial.print("Left");
    moveParaEsquerda();
  }

  if (GamePad.isRightPressed())
  {
    Serial.print("Right");
    moveParaDireita();
  }

}
void moveParaTras() {  
  //motor 1
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  
  //motor 2
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
}

void moveParaFrente() {
  //motor 1
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);

  //motor 2
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
}

void moveParaDireita() {
  //motor 1
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);

  //motor 2
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
}

void moveParaEsquerda() {
  //motor 1
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);

  //motor 2
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
}

void parar(){
  //motor 1
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);

  //motor 2
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}




CONEXÃO COM O CELULAR 

Para conectar o robô ao smartphone, primeiramente é necessário fazer o download do aplicativo Dabble. Você pode baixá-lo no Google Play Store

Após a instalação, conecte as pilhas no robô e abra o aplicativo Dabble. Logo depois, siga os passos: 

  1. Clique no indicador de conexão no canto superior, indicado pela seta na Figura X; 
  1. Selecione o módulo HC-06, indicado pela segunda seta; 
  1. Agora que o celular está conectado, escolha a opção Gamepad.
Figura 6: Selecionando o Gamepad.
Figura 6: Selecionando o Gamepad.

Para começar a controlar seu robô, use as setas do controle virtual que acabou de abrir. 

O vídeo a seguir demonstra o funcionamento do robô controlado via Bluetooth por celular Android.


Obrigado, espero que tenham gostado, até a próxima!

Em caso de dúvidas, deixe um comentário abaixo.

 

Estagiário no setor de desenvolvimento na Casa da Robótica

Graduando em Engenharia da Computação pela Faculdade Independente do Nordeste. Estagiário do setor de desenvolvimento da Casa da Robótica.

Bacharel em Engenharia Elétrica com ênfase em Eletrônica, mestra em Engenharia Industrial e especialista em Docência com ênfase em Educação Inclusiva. Atua no setor de Desenvolvimento de Produtos na Casa da Robótica. Editora chefe e articulista no Blog da Robótica. Fanática por livros, Star Wars e projetos Maker.