Você está na página 1de 9

Trabalho de Conclusão de Disciplina

Carro de Controle Remoto


F.Jonathan L.Drumondl1 , João Lucas L. Monteiro1 ,
Lucas Vitoriano Q Lira1 , M.Cesar F.D. Filho1
1
Departamento de Teleinformática – Universidade Federal do Ceará (UFC)
CEP 60455-970 – Fortaleza – CE – Brazil
jonathandrumond@alu.ufc.br, mariocesarfreire@alu.ufc.br

lucasvitoriano25@alu.ufc.br, joaolucaslima17@alu.ufc.br

Abstract. This article bring the description about the confection of a wireless
remote control car using Bluetooth Module (HM-10), Arduino-Nano and logic
circuits. Also described in this article is the programming used in the project,
with methods to exemplify the logic of project operation. In short, this article
will give the theoretical basis of the project in a methodical way for the pur-
pose of evaluation of the Mr Danielo Gomes for the conclusion Introduction to
Computer Engineering.

Resumo. Esse artigo trás a descrição da confecção de um carro de controle


remoto sem fio utilizando Módulo Bluetooth(HM-10), Arduı́no-Nano e circui-
tos lógicos. Também é descrito neste artigo a programação utilizada no pro-
jeto, com métodos para exemplificar a lógica do funcionamento do projeto.Em
suma, este artigo dará o embasamento teórico do projeto de forma metódica
com finalidade de avaliação do excelentı́ssimo professor Danielo Gomes para a
conclusão da disciplina Introdução a Engenharia de Computação.

1. Introdução
Desde o surgimento da internet e dos meios de comunicação sem fio, urge a ne-
cessidade das pessoas terem total controle sobre tudo ao seu redor. Com essa necessidade
surgiram os meios de automação e controle, onde toda a indústria atual trabalha, como
também é uma tendência para o mercado de casas autônomas e de internet das coisas.
Devido a isso, tivemos a ideia da criação de um carro de controle remoto, que trabalha
com o mesmo proposito de controlar coisas a distância, para simplificar um sistema mais
complexo e demonstrar para o público de forma clara algumas aplicações do ramo de
Controle Remoto.

2. Desenvolvimento do Projeto
A tecnologia Bluetooth é utilizada para fazer comunicação a distância entre
dispositivos das mais variadas formas, através de um protocolo padrão de comunicação.
Utilizamos o módulo HM-10, que é capaz de transmitir o protocolo bluetooth para o
controle do carro através da comunicação entre o Arduı́no Nano, acoplado ao carro, e o
celular
Figura 1. Módulo bluetooth (HM-10)

Com isso foram definidas algumas funções bases para a comunicação do módulo
com o Arduı́no e o celular. Tivemos que montar a parte do circuito eletrônico baseado no
datasheet do módulo HM-10, que prevê um padrão para montagem, onde foi preciso fazer
algumas ligações com fios entre a placa e o módulo. Todo o processo foi acompanhado de
solda para garantir que o circuito não se desprendesse do carro quando o mesmo estivesse
em movimento.
Para o processamento dos dados enviados pelo módulo bluetooth usamos um
Arduı́no Nano que é mais leve, o que aumenta a velocidade do carro, e possui mais portas
digitais e analógicas. Para facilitar a conexão e reconfiguração dos fios com o Arduı́no,
conectamos o microcontrolador numa protoboard.

Figura 2. Arduı́no nano

Agora, com a parte de processamento de informação completada,temos que trans-


ferir a energia e o sentido de rotação para os motores. Para isso,utilizamos uma Ponte-H,
que consegue mudar a polaridade da tensão, o sentido dela e sua potência, fazendo com
que os motores realizem os comandos feitos pelo processador.

Figura 3. A ponte H utilizada no projeto


2.1. Criação e Modelagem
Após dispormos de todas as peças, foi necessário criar um chassi para o carro
que tivesse tamanho suficiente para acoplar todas as peças. Com isso fomos até o bloco
didático do curso de Sistemas e Mı́dias Digitais que tinham a nossa disposição uma im-
pressora 3D, onde foi possı́vel criar esse chassi com as proporções ideais. Utilizamos o
software Thinkercad para a modelagem do chassi. Algo interessante de salientar é que
é um software livre com vários projetos de exemplo para que seja possı́vel aprender a
modelar conforme a necessidade do projeto.

Figura 4. Visão superior do chassi modelado em software livre

De mesmo modo, a tarefa foi dividida para cada pessoa do grupo, o que tornou
possı́vel terminar o trabalho com mais agilidade. Deixamos metade das pessoas com o
Hardware e a outra metade com o Software que foram criados simultaneamente de forma
que fosse possı́vel testar as possı́veis falhas de cada passo do projeto. A primeira projeto
foi fazer a comunicação do Módulo Bluetooth com o Arduı́no, que basicamente, foi a
parte mais importante do projeto, pois através dessa comunicação foi possı́vel fazer com
que o celular pudesse controlar os motores, buzzer e a direção do carro.Então após essa
etapa, instalamos o módulo ao carro, que teve esta disposição no projeto:

Figura 5. O nano e bluetooth alocado na protoboard


Após a instalação do módulo bluetooth e motores no chassi, o carro ficou com-
pleto e foi preciso apenas fazer a programação dos motores e módulo para fazer o carro
funcionar. A parte de hardware do projeto foi pensada para ser apenas um protótipo de
fácil entendimento para ser fácil para todos da equipe montar, já que nem todos tinham
conhecimento de arduı́no e eletrônica. Tivemos isso como principal desafio e consegui-
mos aprender num intervalo de tempo relativamente rápido, pois todos da equipe estavam
disposto a aprender.

Figura 6. O projeto finalizado

2.2. Programação do Carro


A parte mais importante seguida do Bluetooth é a programação do carro. Com
ela foi possı́vel configurar os módulos, os motores e o controle do carro para o seu total
funcionamento, onde tivemos que criar uma lógica para cada acionar de botão do con-
trole. Essa lógica permitiu que os botões não criassem interrupções indevidas entre si e
pudessem acionar partes do motor de forma organizada, tornando possı́vel a locomoção
do carro. É de suma importância ressaltar o aprendizado de fundamentos de programação
para um entendimento maior da parte de hardware e de ter um controle maior sobre o
projeto. Em sı́ntese foi preciso adicionar a biblioteca Dabble para o funcionamento do
controle, que contem algumas funções e protocolos para o aplicativo comunicar o módulo
com o bluetooth. Também foi necessário definir algumas entradas padrão para os moto-
res, onde utilizamos alguns defines. A programação é resumida em um conjunto de if’s
que tornou possı́vel dividir o acionamento dos motores e direção do carro, para conseguir
comandar o carro para esquerda, direita, cima e baixo.
//Definições das portas para acionamento
//dos motores e controle do carro
//Biblioteca Dabble para funcionamento
//do aplicativo de controle remoto

#define IN1 8
#define IN2 7
#define IN3 6
#define IN4 5
#define ENA 9
#define ENB 10
#define buzzerPin 11
#define ledPin 4
#define CUSTOM_SETTINGS
#define INCLUDE_GAMEPAD_MODULE
#include <Dabble.h>

void setup() {

Serial.begin(9600);
Dabble.begin(9600);
pinMode(buzzerPin,OUTPUT);
pinMode(ledPin,OUTPUT);
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
pinMode(ENA,OUTPUT);
pinMode(ENB,OUTPUT);
}
//funções para adquirir o status de cada botão
void loop() {
Dabble.processInput();
bool buzzerState = GamePad.isSquarePressed();
bool ledState = GamePad.isCirclePressed();
bool isBrake = GamePad.isTrianglePressed();
bool upperButton = GamePad.isUpPressed();
bool lowerButton = GamePad.isDownPressed();
bool rightButton = GamePad.isRightPressed();
bool leftButton = GamePad.isLeftPressed() ;
float c = GamePad.getx_axis();
float d = GamePad.gety_axis();
float vTan = map(d,-7,7,-255,255);
float steering = map(c,-7,7,-255,255);
float v1 = vTan + steering;
float v2 = vTan - steering;

//buzina do carro
if(buzzerState){
analogWrite(buzzerPin,25);
Serial.print(buzzerState);
}
if(!buzzerState){
analogWrite(buzzerPin,0);
Serial.print(buzzerState);
}
//faróis
if(ledState){
digitalWrite(ledPin, HIGH);
}
if(!ledState){
digitalWrite(ledPin,LOW);
}
if(!isBrake)
{
if(upperButton)
{
setMotor(255,255);
}
if(lowerButton)
{
setMotor(-255,-255);
}
if(rightButton)
{
setMotor(255,-255);
}
if(leftButton)
{
setMotor(-255,255);
}
if(!upperButton&&!lowerButton&&!rightButton&&!leftButton)
{
setMotor(v1,v2);
}
}
//condicionamento para a direção e aceleração do carro
if(isBrake)
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,HIGH);
analogWrite(ENA,255);
analogWrite(ENB,255);
}
}
//função para locomoção do carro(cima, baixo,esquerda,direta)
void setMotor(int vA, int vB)
{
int v1 = constrain(vA,-255,255);
int v2 = constrain(vB,-255,255);
if(v1>=0&&v2>=0)
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(ENA,abs(v1));
analogWrite(ENB,abs(v2));
}
if(v1>=0&&v2<0)
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENA,abs(v1));
analogWrite(ENB,abs(v2));
}

if(v1<0&&v2>=0)
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(ENA,abs(v1));
analogWrite(ENB,abs(v2));
}
if(v1<0&&v2<0)
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENA,abs(v1));
analogWrite(ENB,abs(v2));
}
}
O código tem fácil entendimento pois basicamente foca em acionamentos dos moto-
res em decorrência do acionamento de botões, com uma série de if’s para organizar as
interrupções que o controle fazia nos motores.
3. Considerações Finais
O projeto foi de suma importância para a equipe, pois tivemos que aprender várias
tecnologias para fazer o carro funcionar, seja com a comunicacão do módulo com o con-
trole e também aprender a utilizar devidamente o arduino. Entendemos também a im-
portância da integração do hardware com o software, já que fizemos comandos diretos
ao carro com software e tivemos que testar se os comandos estavam funcionando. Ou-
tro ponto importante é a da prototipação e disposição de peças na protoboard, tendo em
vista que uma boa organização da fiação e dos eletrônicos tornaram o projeto mais fácil
de montar. Em relação da importância do carro, podemos vê-lo como uma base para
aprender protocolos de redes e comunicação sem fio, que é a base para internet das coi-
sas e da automação e controle, que é fundamental para um profissional de engenharia de
computação que irá adentrar no mercado de automação. Em tese, foi um trabalho bastante
produtivo que nos fez pensar em equipe e adquirir conhecimentos que as disciplinas do
semestre não nos proporcionam, tornando tudo ainda mais desafiador e interessante.
4. Referências
Arduino Open Source. Visão geral do Arduino Nano. Disponı́vel em:
[https://www.arduino.cc/en/uploads/Main/ArduinoNanoManual23.pdf]. Acesso em: 06
jun.2019
Future Eletronic Corporation. H bridge L298 module datasheet. Disponı́vel em:
[https://www.fecegypt.com/uploads/dataSheet/1522493822.h.pdf]. Acesso em: 06.
jun.2019
Guangzhou HC Information Technology Co. Product Datasheet of HC-06. Disponı́vel
em:[https://www.olimex.com/Products/Components/RF/BLUETOOTH-SERIAL-HC-
06/resources/hc06.pdf]. Acesso em: 06 jun.2019
Tinkercad. Create 3d digital designs with online CAD. Disponı́vel em:
[https://www.tinkercad.com/]. Acesso em 23. mai. 2019.