Robô Básico controlado via Bluetooth por Smartphone

Seguindo o mesmo pensamento do projeto do Robô Autônomo realizado anteriormente, criamos um novo projeto que simplifica bastante os conceitos de software e hardware para a construção de um robô controlado via Bluetooth com um simples aplicativo de smartphone.

Usaremos um kit de chassi básico e toda a parte eletrônica será montada numa pequena protoboard, sem a necessidade de uma placa de circuito impresso. Para reduzirmos o tamanho do projeto, utilizaremos o Arduino Nano em conjunto com o módulo Bluetooth HC-06 e Módulo Driver Ponte H L298N para controle dos motores DC.

O código utilizado é extremamente simples e de fácil entendimento para iniciantes no mundo da eletrônica embarcada. Sejam bem vindos e vamos começar a diversão.

Montando o Projeto e Detalhamento de Hardware

Material Necessário

 
 
 
 

A) Preparativos Iniciais:

Precisamos preparar alguns detalhes antes de iniciar o projeto. Os motores DC não vêm com os fios soldados. Para isso, é necessário soldar fios flexíveis de aproximadamente 12cm conforme figura abaixo.

 

Outro detalhe que facilitará muito a nossa vida é complementar os fios do adaptador da bateria de 9V com jumpers. O objetivo é possibilitar que a bateria seja conectada facilmente na protoboard. A figura abaixo mostra o efeito desejado. Moleza né?

Agora estamos aptos a iniciar o nosso projeto. O próximo passo é montar o chassi do robô.

B) Montagem do Chassi:

Agora é hora de montar o chassi do seu robô. A foto abaixo mostra um chassi redondo 2WD apenas com a base montada (sem o segundo andar). Aconselhamos usar para este projeto o chassi mais simples e barato possível. Pois teremos poucos componentes e o espaço utilizado será muito reduzido.

C) Fonte de Energia:

Utilizaremos uma bateria de 9V comum. Porém, nada impede que você use qualquer outra forma de energia que alcance tal valor. Agora que sabemos que utilizaremos 9V como fonte, temos um desafio. O Arduino Nano precisa de 5V para funcionar e não podemos ultrapassar esse valor para não danificá-lo. Para isso, apresentaremos o conceito de circuito regulador de tensão.

Um circuito regulador de tensão é capaz reduzir e regular uma tensão de entrada para uma tensão de saída desejada. Utilizaremos o famoso CI 7805 que disponibilizará 5V em sua saída e servirá perfeitamente para alimentar o Arduino Nano. A figura abaixo propõe um circuito muito simples que servirá perfeitamente para o nosso projeto.

Outro desafio é isolar o circuito de alimentação dos motores e o circuito que alimenta o Arduino Nano. Não entraremos em detalhes sobre esse tópico, mas basicamente é necessário saber que motores são cargas indutivas e podem retornar ruídos que podem afetar o funcionamento do Arduino Nano. Sem entrar no mérito, usaremos um diodo na saída da bateria que alimentará os motores para evitar que qualquer tipo de corrente reversa atinja o regulador de tensão de 5V.

Assim, teremos uma divisão da energia fornecida pela bateria, onde isolaremos 5V para o circuito lógico e aproximadamente 8,3V para os motores (8,3V é o resultado de 9V da bateria com uma queda de 0,7V do diodo). A figura abaixo mostra a montagem da fonte com o acréscimo de um interruptor para ligarmos e desligarmos o robô. Notem que tudo fica na protoboard e facilita muito a montagem do robô.

D) Montagem do Arduino Nano:

Essa etapa é muito simples. Devemos colocar o Arduino na protoboard e conectar a saída regulada de 5V no pino Vin do Arduino e o GND da fonte ao GND do Arduino.

E) Montagem do Módulo Bluetooth HC-06:

A montagem do módulo Bluetooth HC-06 é muito simples. Utilizaremos apenas a comunicação do transmissor (TX) do módulo Bluetooth para o receptor (RX) do Arduino Nano, não sendo necessário utilizar o pino RX (Receptor) do módulo Bluetooth. Assim, basta conectar o 5V e GND do módulo Bluetooth ao VCC (5V) do Arduino Nano e ao GND do circuito respectivamente, conforme figura abaixo:

F) Montagem do Módulo Driver Ponte H L298N

Utilizaremos o Modulo Ponte H L298N para controlar não somente o sentido de rotação dos motores DC, como também sua velocidade.

  • MOTOR A (OUT1 e OUT2) e MOTOR B (OUT3 e OUT4): São os conectores para ligarmos os o Motor A e o Motor B;

  • ATIVA MA (ENA) e ATIVA MB (ENB): Para o nosso projeto, devemos retirar os jumpers destes pinos, pois iremos controlar a velocidade dos motores com o Arduino. Caso não fossemos alterar a velocidade, deveríamos manter os jumpers;

  • ATIVA 5V: Devemos manter este jumper, pois iremos utilizar alimentação de aproximadamente 8V e o mesmo ativa um regulador de tensão interno do módulo que garante os 5V de alimentação para o circuito;

  • 6-35V e GND: Conectaremos a fonte dos motores nestes terminais, VCC e GND;

  • ENTRADA (IN1, IN2, IN3 e IN4): Pinos responsáveis pelo sentido de rotação do Motor A (IN1 e IN2) e Motor B (IN3 e IN4). Abaixo segue a tabela para entendermos a configuração necessária.

STATUS MOTOR

IN1 (ou IN3)

IN2 (ou IN4)

Rotação Sentido Horário

5V

GND

Rotação Sentido Anti-Horário

GND

5V

Ponto Morto

GND

GND

Freio

5V

5V

 

Agora que entendemos, resumidamente, como funciona o Módulo L298N, vamos iniciar sua conexão. Primeiramente, devemos conectar os motores nos conectores OUT1/OUT2 e OUT3 e OUT4).

Próximo passo é ligar a alimentação de energia nos conectores 6-35V e GND, conforme figura abaixo:

Iremos conectar os pinos IN1, IN2, IN3 e IN4 do Módulo aos pinos D6, D7, D8 e D9 do Arduino respectivamente. Finalmente, conectaremos os pinos ENA e ENB do Módulo aos pinos PWM D10 e D11 do Arduino respectivamente. Pronto! Tudo conectado!

O resultado real da montagem pode ser visto na imagem abaixo:

Desenvolvendo o Código

Abra a IDE do Arduino e digito o código abaixo.

Você pode consultar, baixar, modificar e compartilhar o código deste tutorial em nosso repositório do GitHub! E lá você encontra todos os códigos já publicados aqui no blog! Venha compartilhar conhecimento com toda a comunidade maker!

 

É importante que, antes de fazer o upload do código para o Arduino, o jumper que liga o RX do Aduino ao TX do módulo Bluetooth HC-06 seja DESCONECTADO. Isso se deve ao fato do upload do código da IDE utilizar a comunicação serial do Arduino, a mesma que estamos utilizando para realizar a comunicação serial entre o Arduino e o módulo Bluetooth HC-06. Caso o jumper não seja desconectado, o código não será carregado. Após gravar o código, conecte o jumper novamente no devido lugar.

É possível utilizar uma biblioteca de comunicação serial para alterar a porta que seria utilizada para a comunicação serial entre o Arduino e módulo Bluetooth HC-06, mas tornaria o código um pouco mais complexo e decidimos não usá-la.

Mergulhando no Código

Inicialmente, definiremos os pinos do 6, 7, 8 e 9 do Arduino para controlar a direção dos motores. Utilizaremos os mesmos nomes dos respectivos pinos do Módulo L298N (IN1 e IN2 para motor A e IN2 e IN3 para o motor B).

O próximo passo é definir os pinos 10 e 11 do Arduino para controle de velocidade dos motores. Novamente utilizaremos os mesmos nomes dos respectivos pinos do Módulo L298N (ENA para motor A e ENB para o motor B).

A função de inicialização irá declarar os pinos IN1, IN2, IN3, IN4, ENA e ENB como pinos de saída.

Estamos utilizando um controle de pulsos PWM para controlar a velocidade dos motores. É como se ligássemos e desligássemos muito rapidamente (alta freqüência) os motores. A relação entre o tempo q ele fica ligado em relação ao tempo que fica desligado define a tensão que estamos entregando ao motor e conseqüentemente é definindo a velocidade do mesmo.

A resolução do PWM do Arduino é de 8bits, podendo assumir valores de 0 (velocidade zero) a 255 (velocidade máxima).

Nesse ponto do projeto deve-se empiricamente regular a velocidade dos motores de forma distinta para compensar as diferenças de fabricação que podem fazer com que possuam velocidades diferentes para a mesma tensão aplicada, garantindo que o robô andará em linha reta quando desejado.

Declararemos a variável CHA do tipo CHAR (Caractere). Esta variável será utilizada para receber os caracteres ‘F’, ‘B’, ‘R’ e ‘L’ enviados pelo aplicativo do smartphone. Explicaremos como isso funciona no próximo tópico.

 

No loop principal iremos verificar se estamos recebendo dados seriais via módulo Bluetooth HC-06 e caso positivo, iremos associar os dados à variável CHA declarada anteriormente.

Agora vem a parte mais simples. Utilizaremos funções IF para definir o movimento do robô. Para isso definiremos os valores das variáveis IN1, IN2, IN3 e IN4 para buscarmos o movimento desejado. Quando recebemos a letra ‘F’ (Foward), realizaremos o movimento para frente.

Quando recebemos a letra ‘B’ (back), realizaremos o movimento para trás.

Quando recebemos a letra ‘R’ (Rigth), realizaremos o movimento para direita.

Quando recebemos a letra ‘L’ (Left), realizaremos o movimento para esquerda.

Quando recebemos o número zero ‘0’ (nenhum botão apertado), não realizaremos movimento.

Agora só falta entendermos o funcionamento do aplicativo. Resumidamente, precisamos enviar as letras F, B, R e L quando apertamos os botões direcionais e configurar para o aplicativo enviar sempre 0 quando nenhum botão for apertado.

Como instalar e configurar o aplicativo de controle remoto via Bluetooth no Smartphome

Após entender a lógica de controle, perceberá que é possível utilizar qualquer aplicativo de controle via Bluetooth para Arduino que encontrar disponível para Android ou IOS e que seja compatível com o módulo Bluetooth HC-06. Neste projeto utilizaremos o App Android (Arduino Bluetoooth controller) desenvolvido pela Fundroid3000. Neste caso, é preciso buscá-lo na Play Store e instalá-lo e em seu smartphone.

Passo 1: Parear o Módulo Bluetooth HC-06 com o Bluetooth do Smartphone

1.1 – Ligar o robô. Neste momento o LED do Módulo Bluetooth estará piscando;
1.2 – Ativar o Bluetooth do Smartphone e procurar por HC-06 em dispositivos disponíveis;
1.3 – Para o pareamento será solicitado o PIN. Geralmente os módulos vêm com a senha padrão: 1234;
1.4 – Pronto. O Módulo já está pareado. Neste momento o LED ainda estará piscando. Isso significa que o mesmo está aguardando conexão com o software.

Passo 2: Conectar o Módulo Bluetooth HC-06 ao Aplicativo

2.1 – Abra o Aplicativo
2.2 – O aplicativo solicitará para permitir acesso do local do dispositivo. Aceite.
2.3 – Selecione o HC-06 da lista de dispositivos pareados.

2.4 – Escolha a opção de Connection Type: Game Controller.
2.5 – Pronto. Neste momento será possível visualizar o controle parecido com os de videogame e o aplicativo estará conectado com o módulo Bluetooth. Note que o led do módulo deixa de piscar e fica acesso.

Passo 3: Configurar o Controle

3.1 – A idéia é muito simples. Enviaremos os caracteres ‘F’, ‘B’, ‘R’ e ‘L’ para o módulo Bluetooth HC-06 quando os botões desejados forem apertados. F= Frente, B= Trás, R= Direita e L= Esquerda. Quando os botões não forem apertados, também é possível configurar o caractere eu o aplicativo irá enviar, neste caso usaremos o número ‘0’. O Aplicativo utilizará a tabela ASCII para envio dos caracteres.
3.2 – Clique no botão de configurações (botão em forma de engrenagem) e configure da seguinte forma:

3.3 – Pronto. Clique em salvar e o controle estará pronto para funcionamento. É importante frisar que neste procedimento, letras maiúsculas serão diferentes de letras minúsculas.

Conclusão

Um projeto como este pode parecer complexo num primeiro momento, mas acredito ter conseguido mostrar que o mesmo não é nenhum bicho de sete cabeças e que, dentro do possível, podemos classificá-lo como um projeto simples e básico. Aproveito para deixar a sua imaginação livre para utilizar os demais botões do controle remoto do aplicativo. Que tal acender um farol no seu robô? Ou então alterar os níveis de velocidade? Abraços e boa sorte neste desafio.

Referências

McRoberts, Michael Arduino básico / Michael McRoberts; [tradução Rafael Zanolli]. — São Paulo : Novatec Editora, 2011.

Datasheet: Módulo Bluetooth HC-06

Datasheet: Módulo Ponte H L298N

Alex da Rocha Mattos
Sobre Alex da Rocha Mattos 4 artigos
Engenheiro de Telecomunicações – Universidade do Estado do Rio de Janeiro UERJ Instagram: https://www.instagram.com/curtoecircuito/ Email:curtoeckt@gmail.com

Seja o primeiro a comentar

Deixe uma resposta

O seu endereço de email não será publicado.


*