Escolar Documentos
Profissional Documentos
Cultura Documentos
RoboFight
BRAZÓPOLIS 2023
Página 1 de 26
Gabriel de Assis Braga
RoboFight
BRAZÓPOLIS 2023
Página 2 de 26
Dedicamos esse trabalho a todos aqueles que acreditaram e confiaram no nosso
potencial, em especial aos nossos pais, amigos e professores.
Página 3 de 26
AGRADECIMENTOS
Agradecemos todos os professores que nos apoiaram e passaram
conhecimento durante toda a formação técnica. Foram muitas experiências e
aprendizados adquiridos e que, com certeza, irão nos ajudar a dar grandes passos no
futuro.
Também gratificamos todos nossos amigos, pois foram eles que nos deram
apoio moral e emocional para não desistir. Todo esse apoio somado a troca de
experiências e conhecimento foram necessários para chegarmos até aqui.
Página 4 de 26
“Nós não cometemos erros, apenas pequenos acidentes felizes.”
(Bob Ross)
Página 5 de 26
RESUMO
O projeto tem como premissa a confecção de dois robôs para realizar uma
luta de sumô. Sem foco competitivo, o trabalho visa a diversão criando um jogo
baseado nas competições nacionais e internacionais de luta de robô. Destaca-se
que estes dois robôs possuem premissas opostas: um totalmente autônomo,
equipado com sensores, enquanto o outro será manual, controlado por um joystick.
Página 6 de 26
ABSTRACT
The project has as its premise the making of two robots to carry out a sumo
fight. Without a competitive focus, the work aims at fun creating a game based on
national and international robot fighting competitions. It is noteworthy that these two
robots have opposite premises: one is totally autonomous, equipped with sensors,
while the other will be manual, controlled by a joystick.
Página 7 de 26
Sumário
Página 8 de 26
1.0 Introdução
A batalha começa ao colocar dois robôs frente a frente na arena — uma plataforma,
geralmente de madeira, branca com bordas pretas — e o grande objetivo é o
enfrentamento das máquinas por um tempo até que haja um campeão: aquele que
derrubou o oponente da arena. Baseada na luta joponesa conhecida como Sumô,
com os mesmos princípios e objetivos, essa modalidade excêntrica surge, também
no Japão, durante os anos 2000. Os robôs podem ser dividos em categorias que
leva em consideração sua estrutura: peso, controle, etc.
Página 9 de 26
Trazendo uma releitura destas grandes competições, o projeto RoboFight entra no
cenário propondo uma nova forma de participar. Sem fins competitivos, esse
trabalho transforma o que antes era uma competição em um jogo, ainda sim
garantindo a diversão dos telespectadores.
Por mais que, nos campeonatos, os robôs são, geralmente, automáticos, ou seja,
equipados com alguns sensores, na RoboFight há dois robôs que podem fugir um
pouco do padrão. Mesmo que para fins semelhantes, os robôs deste projeto
possuem propostas bem diferentes: um deles é totalmente automático —
semelhante aos usados nas lutas competitivas — e o outro manual, ou seja,
controlado por um joystick a distância. Assim, os telespectadores poderão ter uma
participação direta se aceitarem participar do desafio: derrubar o robô automático da
arena.
Página 10 de 26
2.0 Justificativa
Página 11 de 26
3.0 Objetivos
Página 12 de 26
4.0 Fundamentação Teórica
Página 13 de 26
programação previamente inserida neles. Um interruptor e pilhas
recarregáveis também são indispensáveis para os dois: o interruptor permite
ligar e desligar o robô, evitando desperdício da carga das pilhas, mesmo
sendo recarregáveis podem ter seu tempo útil melhor aproveitado se
utilizadas de forma eficiente.
A carcaça dos robôs podem feitas do mesmo material acrílico ou papel, que
por mais que pareça não muito resistente, é de fácil manipulação e reforço.
Por fim, a arena pode ser feita com um círculo de madeira, e deve ser
colorida de branco, com um contorno em preto próximo as bordas para
melhorar o funcionamento do sensor infravermelho.
4.2. Materiais
• 1 Arduíno Uno;
• 1 ESP8266;
• 2 Mini Protoboard;
• 2 Ponte H Dupla (HG7881);
• 2 Sensores infravermelho (TR5000);
• 1 Sensor ultrassônico (HC-SR04);
• 1 Controle Bluetooth de PS2;
• 2 Kit Chassi 2WD (cada um possui dois motores DC, um suporte para quatro
pilhas AA, um interruptor, duas rodas e uma base para o robô);
• 8 Pilhas AA recarregáveis ou não;
• Jumpers;
• Papelão;
• Madeira;
• Tinta branca e preta;
Página 15 de 26
circunscrita por uma borda branca de 2cm de largura. Agora, os robôs
possuem um grande espaço para lutarem e os testes finais, enfim,
começaram.
Página 16 de 26
5.0 CONCLUSÃO
Página 17 de 26
6.0 REFERÊNCIAS BIBLIOGRÁFICAS
https://produto.mercadolivre.com.br/MLB-689564321-4-pilhas-recarregavel-
mox-aa-2600-pilha-pequena-_JM#shipping
https://www.eletrogate.com/carrinho/index
https://www.youtube.com/brincandocomideias ;
https://www.instagram.com/canalbrincandocomideias/
https://cursodearduino.net/
https://cursoderobotica.net
https://www.arducore.com.br/
https://produto.mercadolivre.com.br/MLB-2161711605-modulo-sensor-
ultrassonico-hc-sr04-arduino-pic-raspberry-_JM
Página 18 de 26
7.0 APENDICE: Robô Manual
#include <PS2X_lib.h>
PS2X ps2x;
void setup() {
Serial.begin(9600);
configuraControle();
pinMode(motorA1, OUTPUT);
pinMode(motorA2, OUTPUT);
pinMode(motorB1, OUTPUT);
pinMode(motorB2, OUTPUT);
digitalWrite(motorA1, LOW);
digitalWrite(motorA2, LOW);
digitalWrite(motorB1, LOW);
digitalWrite(motorB2, LOW);
Página 19 de 26
Serial.println("Parado");
void loop() {
ps2x.read_gamepad();
moverFrente();
virarDireita();
virarEsquerda();
moverTras();
pararMotores();
Serial.println("Parado");
delay(50);
void configuraControle() {
Página 20 de 26
int erroControle = ps2x.config_gamepad(13, 11, 10, 12, true, true);
if (!erroControle) {
Serial.println("Controle encontrado");
} else {
while (erroControle) {
void moverFrente() {
analogWrite(motorA1, velocidadeE);
analogWrite(motorA2, LOW);
analogWrite(motorB1, velocidadeD);
analogWrite(motorB2, LOW);
void moverTras() {
analogWrite(motorA1, LOW);
analogWrite(motorA2, velocidadeE);
analogWrite(motorB1, LOW);
analogWrite(motorB2, velocidadeD);
void virarEsquerda() {
Página 21 de 26
analogWrite(motorA1, velocidadeE);
analogWrite(motorA2, LOW);
analogWrite(motorB1, LOW);
analogWrite(motorB2, LOW);
void virarDireita() {
analogWrite(motorA1, LOW);
analogWrite(motorA2, LOW);
analogWrite(motorB1, velocidadeE);
analogWrite(motorB2, LOW);
void pararMotores() {
analogWrite(motorA1, LOW);
analogWrite(motorA2, LOW);
analogWrite(motorB1, LOW);
analogWrite(motorB2, LOW);
Página 22 de 26
APENDICE: Robô Automático
#include <NewPing.h>
// Sensor Infravermelho
#define frontal 3
#define traseiro 4
// Sensor Ultrassonico
#define echo 8
#define trig 7
NewPing sensorUltra(trig,echo,maxdist);
// Motores
#define MOTOR_A1A 5
#define MOTOR_A1B 6
#define MOTOR_B1A 9
#define MOTOR_B1B 10
void setup() {
pinMode(MOTOR_A1A, OUTPUT);
pinMode(MOTOR_A1B, OUTPUT);
Página 23 de 26
pinMode(MOTOR_B1A, OUTPUT);
pinMode(MOTOR_B1B, OUTPUT);
pinMode(frontal,INPUT);
pinMode(traseiro, INPUT);
Serial.begin(9600);
void loop() {
if(digitalRead(frontal)==HIGH){
moverTras();
delay(20);
} else if(digitalRead(frontal)==LOW){
radar();
if(digitalRead(traseiro)==HIGH){
moverFrente();
delay(20);
} else if(digitalRead(frontal)==LOW){
radar();
}}
Página 24 de 26
void moverFrente() {
parar();
digitalWrite(MOTOR_A1A, 200);
digitalWrite(MOTOR_A1B, LOW);
digitalWrite(MOTOR_B1A, 200);
digitalWrite(MOTOR_B1B, LOW);
delay(1);
void moverTras() {
parar();
delay(1);
digitalWrite(MOTOR_A1A, LOW);
digitalWrite(MOTOR_A1B, 200);
digitalWrite(MOTOR_B1A, LOW);
digitalWrite(MOTOR_B1B, 200);
delay(1);
void verificarOponente(){
parar();
digitalWrite(MOTOR_A1A, 150);
digitalWrite(MOTOR_A1B, LOW);
digitalWrite(MOTOR_B1A, LOW);
digitalWrite(MOTOR_B1B, LOW);
delay(1);
Página 25 de 26
}
void parar(){
digitalWrite(MOTOR_A1A, LOW);
digitalWrite(MOTOR_A1B, LOW);
digitalWrite(MOTOR_B1A, LOW);
digitalWrite(MOTOR_B1B, LOW);
delay(1);
Serial.println(distancia);
if(distancia>50){
verificarOponente();
} else {
moverFrente();
delay(100);
Página 26 de 26