Cómo hacer un robot Arduino Sumo

 

Cómo hacer un robot Arduino Sumo

Cómo hacer un robot Arduino Sumo © LGPL

Un robot autocontrolado con dimensiones y características específicas. También está diseñado en formas hostiles que lo califican para luchar.

  • robótica
  • sumobot

Componentes y suministros

ard nano
arduino nano r3
Se puede aplicar cualquier versión de Arduino.
× 1
52y4441 40
Motor CC, 12 V
hay dos diseñados
× 2
09670 01
Controladores de motor SparkFun Dual H-Bridge L298
× 1
51gzz5eu9pl. sx425
Sensor ultrasónico – HC-SR04 (Genérico)
× 1
decenas70
Batería de 9V (genérica)
× 1
Keystone 233 imagen de 75 px
Clip de batería de 9V
× 1

Herramientas y máquinas necesarias.

Cortador láser
Cortadora láser (genérica)

Aplicaciones y servicios en línea

idea web
IDE de Arduino

Acerca de este proyecto

El nombre «sumo» proviene de un antiguo deporte japonés, que consiste en dos oponentes que luchan en un ring, cada uno de ellos tratando de empujar al otro oponente fuera de él, y eso es lo que los robots también deben hacer en las competencias de robótica de sumo, donde dos robots colocan en el ring y entre ellos tratando de noquear a su oponente.

La idea:

Construya un robot con ciertas especificaciones y en relación con las leyes de esta competencia (Sumo), este robot debe tener las dimensiones exactas para luchar y sobrevivir para no ser rayado del ring de todos modos.

Así que echemos un vistazo a las leyes de competencia de los robots Sumo:

Explicaré algunos roles importantes que debe considerar al construir su propio SUMO, también podría ayudarlo a imaginar e innovar su propia idea sin entrar en detalles.

1. Dimensiones: longitud máxima 20 cm, longitud máxima 20 cm, altura no especificada.

2. Forma: la forma del robot se puede cambiar después del inicio de la carrera, pero sin las partes inseparables que se deben mantener para formar un solo objeto central.

3. Peso: no supera los 3 kg.

4. El robot debe ser autónomo.

Visión

Usos de cada componente

Ahora que tenemos los componentes necesarios, entremos en detalles para saber para qué sirve.

1- arduino uno

Es una placa principal que controla todas las partes y las conecta entre sí.

2- medico motor

Lo que ayuda al robot a maniobrar y moverse en el ring COMPETENTE.

4- Puente L298N Dual H para Arduino

Es una placa pequeña que proporciona voltaje constante a los motores, además de brindar soporte a la placa Arduino con un buen control de movimiento y voltaje.

5- Sensor ultrasónico

El sensor ultrasónico se utiliza para localizar el robot del oponente y generalmente se coloca encima del robot.

6- IR TCRT5000

Como mencionamos anteriormente, el anillo del concurso está diseñado en un tamaño determinado y tiene dos colores, el relleno es negro y el marco es blanco. El competidor no debe salir. Por lo tanto, usamos el sensor IR para asegurarnos de que el robot no se salga del ring. Este sensor tiene la capacidad de distinguir los colores del anillo).

siete- batería de 9v

Es compatible con la placa principal (Arduino) con gran voltaje.

8- 4 pilas AA de 1,5 V + compartimento para pilas.

Soporta los dos motores (Motor DC) con la tensión importante y debe estar separado para dar toda la fuerza a las ruedas.

9- Alambres de unión

Diseño

Creé dos diseños de robots de sumo con Google 3D sketch-up porque me gusta crear modelos en papel de mis robots antes de cortar las piezas acrílicas en la cortadora láser. Para comprobar que todas las piezas encajan correctamente, es importante que los modelos en papel estén impresos al tamaño exacto de los dibujos.

Y tengo en cuenta ser específico con las leyes de competencia, así que trata de pensar en diseños más creativos y haz tu propio modelo.

Para ser más sensible al peso del robot, coloque las baterías en la parte delantera del robot con el escudo frontal en un ángulo de 45 grados con respecto a la forma del robot.

los archivos están disponibles para su descarga en la sección de archivos.

estrategia de juego

 

Como mencionamos antes, el robot necesita tener su propia habilidad para controlarse a sí mismo, por lo que esto nos da la flexibilidad de programarlo en más de una forma, depende de cómo quieras que el robot juegue en el ring como cualquier oponente que realmente quiera ganar. el partido.

Estrategia de juego (1):

· Haremos que el robot gire sobre sí mismo continuamente.

· El robot siempre mide la distancia de forma continua durante la rotación.

· Si la distancia del oponente medida es inferior a (10 cm, por ejemplo), significa que el oponente está directamente frente a nosotros, el robot.

· El robot debe dejar de girar y luego lanzar el ataque (moverse rápidamente con toda su fuerza).

· El robot todavía necesita tomar lecturas de los sensores IR para asegurarse de que no hemos cruzado el borde del anillo.

· En caso de lectura de presencia IR de color blanco, el robot debe moverse directamente en la dirección opuesta al sensor (por ejemplo: ¡Si el sensor frontal, que indicaba el color blanco del robot, se mueve hacia atrás)!

Estrategia de juego (2):

· Al principio, el robot mide la distancia que tiene por delante.

· El robot retrocede la misma distancia medida.

· El robot deja de girar y de repente comienza a atacar (avanzando con toda su fuerza).

· En caso de un oponente, el robot adjunto debe girar 45 grados para sobrevivir si se cae del ring.

· El robot todavía necesita tomar lecturas de los sensores IR para asegurarse de que no hemos cruzado el borde del anillo.

· En caso de lectura de presencia IR de color blanco, el robot debe moverse directamente en la dirección opuesta al sensor (por ejemplo: ¡Si el sensor frontal, que indicaba el color blanco del robot, se mueve hacia atrás)!

Programación

El código del proyecto está disponible para su descarga.

Biblioteca precisa de sensores ultrasónicos.

https://github.com/ErickSimoes/Ultrasonic/blob/master/examples/UltrasonicSimple/UltrasonicSimple.ino

codificado

codigo arduinoarduino
/*

 by ahmed Azouz
  https://www.instructables.com/id/How-to-Make-Ardu...

 Download the lib from here first
  https://github.com/ErickSimoes/Ultrasonic/blob/ma...

*/
#include Ultrasonic.h

Ultrasonic ultrasonic(4,3);

const int IN1=5;
const int IN2=6;
const int IN3=9;
const int IN4=10;
#define IR_sensor_front A0 // front sensor
#define IR_sensor_back A1 // rear senson
int distance ;

void setup() 
{
Serial.begin(9600);
delay (5000); // as per sumo compat roles
}
void loop()
{
  
 int IR_front = analogRead(IR_sensor_front);
 int IR_back = analogRead(IR_sensor_back);
 distance = ultrasonic.read();
 ROTATE(200); // start rotete if (distance < 20){
    Stop();
    while (distance < 20 ) {
    FORWARD(255); 
    distance = ultrasonic.read();
    IR_front = analogRead(IR_sensor_front);
    IR_back = analogRead(IR_sensor_back);
    if ( IR_front > 650 || IR_back > 650 ) { break;}
    delay(10); }
  
  
 if (IR_front < 650 )  // < 650 means white line
   {
   Stop();
   delay (50);
   BACKWARD(255);
   delay (500);
   } 
   
 if (IR_back < 650 )  //
   {
   Stop();
   delay (50);
   FORWARD(255);
   delay (500);
   }
   
   /* ----------- debugging ----------------
  Serial.print(ultrasonic.Ranging(CM));
  Serial.println("cm");
  Serial.println("IR front :");
  Serial.println(IR_front); 
  Serial.println("IR back :");
  Serial.println(IR_back);  
*/ 

} //--------------------------------------------
void FORWARD (int Speed){
  //When we want to let Motor To move forward,
  // just void this part on the loop section .
  analogWrite(IN1,Speed);
  analogWrite(IN2,0);
  analogWrite(IN3,0);
  analogWrite(IN4,Speed);
}//--------------------------------------------
void BACKWARD (int Speed){
  //When we want to let Motor To move forward,
  // just void this part on the loop section .
  analogWrite(IN1,0);
  analogWrite(IN2,Speed);
  analogWrite(IN3,Speed);
  analogWrite(IN4,0);
}//--------------------------------------------
void ROTATE (int Speed)
{
  //When we want to let Motor To Rotate ,
  // just void this part on the loop section .
  analogWrite(IN1,Speed);
  analogWrite(IN2,0);
  analogWrite(IN3,Speed);
  analogWrite(IN4,0);
}//--------------------------------------------
void Stop(){
  //When we want to  Motor To stop ,
  // just void this part on the loop section .
  analogWrite(IN1,0);
  analogWrite(IN2,0);
  analogWrite(IN3,0);
  analogWrite(IN4,0);
}

Partes y estuches personalizados

Robot sumo cortado con láser
Descargar
archivo de boceto para el diseño de robots
new_sumo2019_xWpH53v71m.skp

diagramas

Cableado de motores
Descargar
Puente L298n dual h para arduino fnpwydumx7