Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Antes de começarmos
O que é o robô de sumô?
É um robô autocontrolado com dimensões e características específicas, também é projetado em formas hostis que o qualificam para participar de concursos e competições com outros robôs.
O nome “sumô” veio de um antigo esporte japonês, que consiste em dois oponentes lutando em um ringue, cada um tentando empurrar o outro para fora dele. E é isso que os robôs também deveriam fazer nas competições de robótica de sumô, onde dois robôs colocados no ringue e uns aos outros tentando empurrar seu oponente.
A ideia:
Construa um robô com certas especificações e compatível com as leis dessa competição (Sumo), este robô deve estar em dimensões exatas para lutar e sobreviver para não ser riscado fora do ringue de forma alguma.
Então, vamos dar uma olhada nas leis de competição de robôs de Sumô:
Vou explicar alguns papéis importantes que você deve considerar ao construir seu próprio SUMO. Também pode ajudá-lo a imaginar e inovar sua própria ideia sem entrar em detalhes profundos.
1. Dimensões: Largura máxima 20 cm, Comprimento máximo 20 cm, Altura não especificada.
2. Forma: a forma do robô pode ser mutável após o início da corrida, mas sem as partes inseparáveis para manter sendo um objeto central.
3. Peso: não excede 3 kg.
4. O robô deve ser autocontrolado.
Etapa 1: Componentes
1 Arduino Ano3
2 motor DC
1 L298N Dual H Bridge para Arduino
1 sensor ultrassônico
2 IR TCRT5000
1 bateria 9v
Bateria AA 4 * peças de 1,5 v + compartimento de bateria
4 rodas de robô
fios de ligação
Etapa 2: usos para cada componente
Agora que temos os componentes necessários, vamos entrar em detalhes para saber o que é usado para..
1- Arduino Ano3
É uma placa principal que controla todas as partes e as conecta
2- Motor DC
Que ajudam o robô a manobrar e se mover dentro do anel da COMPETÊNCIA
4- L298N Dual H Bridge para Arduino
É um pequeno painel que fornece tensão constante aos motores, além do suporte da placa Arduino com bom controle de movimento e tensão.
5- Sensor ultrassônico
O sensor ultrassônico é usado para localizar o robô do oponente e geralmente é colocado no topo do robô.
6- IR TCRT5000
Como já mencionamos, o anel de concurso é desenhado em um determinado tamanho e tem duas cores, o preenchimento é preto e a moldura é branca. O competidor não deve sair. Portanto, usamos o sensor IR para garantir que o robô não fique fora do ringue. Este sensor tem a capacidade de distinguir entre as cores do anel).
7- Bateria 9v
Suporta a placa principal (Arduino) com a voltagem importante.
8- bateria AA 4 * peças de 1,5 v + compartimento de bateria
Suporta os dois motores (Motor DC) com a tensão importante e deve ser separado para dar força total às rodas.
9- Fios de ligação
Etapa 3: Design
Fiz dois designs de robô de sumô usando o esboço 3D do Google porque gosto de criar modelos de papel dos meus robôs antes de cortar peças de acrílico no cortador a laser. Para verificar se todas as peças se encaixarão corretamente, é importante que os modelos de papel sejam impressos no tamanho exato dos desenhos.
E eu levo em consideração estar em uma medição específica com as leis de concorrência, então tente pensar em projetos mais criativos e faça seu próprio modelo.
Para ficar mais sensível ao peso do robô em apresente ou então coloque as baterias na frente do robô com o escudo frontal em um ângulo de 45 graus em relação à forma do robô.
Baixe o design 1 aqui
Baixe o design 2 aqui
Você também pode baixar o modelo de modelo de papel
Abra o arquivo PDF com Adobe Acrobat Reader (software recomendado)
Etapa 4: Estratégia de jogo
Como mencionamos antes, o robô deve ter sua própria capacidade de se controlar, então isso nos dá a capacidade de programá-lo em mais de uma maneira, dependendo de como você deseja que o robô jogue no ringue, assim como qualquer oponente no real quero ganhar o jogo.
Estratégia de jogo (1):
· Faremos o robô em torno de si continuamente.
· O robô está sempre medindo a distância continuamente durante a rotação.
· Se a distância medida do oponente for menor que (10cm por exemplo), isso significa que o oponente está na nossa frente do robô diretamente.
· O robô deve parar de girar e então iniciar o ataque (avançar com força total rapidamente).
· O robô deve fazer as leituras dos sensores IR sempre para se certificar de que não cruzamos a borda do anel.
· Se for lido de presença de infravermelho da cor branca, ele deve mover o robô diretamente na direção oposta do sensor (por exemplo: Se o sensor frontal, que deu uma indicação da cor branca do robô se move para trás)!
Estratégia de jogo (2):
· No robô inicial, meça a distância à frente.
· O robô recua na mesma distância medida.
· O robô para de girar e então começa o ataque repentinamente (avance com força total).
· No caso de um oponente, o robô deve girar 45 graus para sobreviver se cair do ringue.
· O robô deve fazer as leituras dos sensores IR sempre para se certificar de que não cruzamos a borda do anel.
· Se Ler de presença de infravermelho da cor branca, ele deve mover o robô diretamente na direção oposta do sensor (por exemplo: Se o sensor frontal, que deu uma indicação da cor branca do robô se mover para trás)!
Etapa 5: Programação
por favor verifique o circuito e o código
* Atualização 2019-03-26
Baixe a biblioteca Ultrasonic aqui primeiro e instale-a:
github.com/ErickSimoes/Ultrasonic/blob/mas…
/*
por ahmed Azouz
www.instructables.com/id/How-to-Make-Ardu…
Baixe a lib aqui primeiro
github.com/ErickSimoes/Ultrasonic/blob/ma…
*/
#include Ultrasonic.h
Ultra-sônico ultrassônico (4, 3);
const int IN1 = 5;
const int IN2 = 6; const int IN3 = 9; const int IN4 = 10; #define IR_sensor_front A0 // sensor dianteiro #define IR_sensor_back A1 // senson traseiro dist distance;
void setup ()
{Serial.begin (9600); atraso (5000); // de acordo com funções de compatibilidade de sumo} void loop () {int IR_front = analogRead (IR_sensor_front); int IR_back = analogRead (IR_sensor_back); distância = ultrasonic.read (); GIRAR (200); // inicia a rotação if (distância <20) {Stop (); while (distância 650 || IR_back> 650) {break;} delay (10); } if (IR_front <650) // <650 significa linha branca {Stop (); atraso (50); PARA TRÁS (255); atraso (500); } if (IR_back <650) // {Stop (); atraso (50); FORWARD (255); atraso (500); } / * ----------- debugging ---------------- Serial.print (ultrasonic. Ranging (CM)); Serial.println ("cm"); Serial.println ("Frente IR:"); Serial.println (IR_front); Serial.println ("IR back:"); Serial.println (IR_back); * /
} //--------------------------------------------
void FORWARD (int Speed) {// Quando queremos que o Motor se mova para frente, // apenas cancele esta parte na seção de loop. analogWrite (IN1, velocidade); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, velocidade); } // -------------------------------------------- void BACKWARD (int Speed) {// Quando quisermos que o Motor se mova para frente, // anule esta parte na seção de loop. analogWrite (IN1, 0); analogWrite (IN2, velocidade); analogWrite (IN3, velocidade); analogWrite (IN4, 0); } // -------------------------------------------- void ROTATE (int Speed) {// Quando queremos deixar o motor girar, // anula esta parte na seção de loop. analogWrite (IN1, velocidade); analogWrite (IN2, 0); analogWrite (IN3, velocidade); analogWrite (IN4, 0); } // -------------------------------------------- void Stop () {// Quando queremos parar o motor, // apenas anula esta parte na seção de loop. analogWrite (IN1, 0); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, 0); }