BATTLE BOTS
#
BATTLEBOTS - ¡It´s fighting time! - Robot de Lucha Controlado por ESP32 y PS4#
Descripción del ProyectoBattleBots es un proyecto de robótica en el que vamos a construir un robot de lucha que posteriormente controlaremos con el mando de una PlayStation 4 (PS4). Esta comunicación será posible gracias al uso de una placa ESP32.
Los combates de robots son luchas uno contra uno, donde la victoria será para el robot que consiga empujar al oponentes fuera del área de juego o, si es posible, inhabilitarlo.
#
Componentes Principales- ESP32: Microcontrolador utilizado como cerebro del robot. Gestiona la comunicación con el mando PS4 y controla los motores del robot.
- LN298: Driver de motores de corriente continua utilizado para gestionar el voltaje que le llega a los motores y, por tanto, su velocidad y dirección de giro.
- Motores con escobillas (brushed): los robots contarán con 2 o 4 motores para poder moverse. Son motores de 12V que giran a 500 rpm.
- Servo motor para crear peligrosas armas de destrucción. Podréis usar como máximo un servo motor.
- Step-down: o placa reductora de voltaje, necesaria para alimentar con la batería de 11V los servos (que son de 6V).
- Batería: Batería de 11V y 2200 mA para proporcionar energía al robot durante las peleas.
#
PasosA continuación tenéis el esquema eléctrico del proyecto:
Si decidís incluir más motores en vuestro robot, tendréis que modificar este esquema para incluirlos. No es algo complejo, pero corre de vuestra cuenta.
#
Código para el robot con servomotorLa función notify() lo que nos permite es no sobrecargar el flujo de información entre la ESP32 y el mando PS4. Podría parecer más sencillo meter en el loop() todas las instrucciones que aparecen en notify() como hemos hecho en las prácticas anteriores, de tal manera que en cada iteración del loop se compruebe el estado de los botones del mando y se manden las instrucciones necesarias a los motores. Pero esto hace trabajar al micro innecesariamente, porque en cada una de las iteraciones tendrá que ver el estado de cada boton del mando con el flujo de datos que eso implica. Utilizando un callback conseguimos que esa comprobación solo se realice cuando haya algún cambio en el mando, reduciéndo drásticamente el flujo de datos y el trabajo del micro. Parece una tontería pero el bucle loop() se realiza muchos miles de veces por segundo.
#
ContribucionesLas contribuciones al proyecto son bienvenidas. Si encuentras algún problema o tienes ideas para mejorar el robot, no dudes en abrir un problema o enviar una solicitud de extracción.
#
LicenciaEste proyecto está bajo la licencia MIT..