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.
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:
Na parte inferior, vamos posicionar as pilhas e a bateria.
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.
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.
Após a instalação, acompanhe os passos a seguir para melhor compreensão da lógica de programação:
- 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.
- 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.
- 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.
- 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.
- 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:
- Clique no indicador de conexão no canto superior, indicado pela seta na Figura X;
- Selecione o módulo HC-06, indicado pela segunda seta;
- Agora que o celular está conectado, escolha a opçã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.