# Team Génesis
Logo del Equipo
Foto del Equipo
Vista frontal
|
Vista trasera
|
Vista lateral izquierda
|
Vista lateral derecha
|
Vista desde arriba
|
Vista desde abajo
|
|
Especificaciones:
|
|
Especificaciones:
|
Describiremos a continuación el significado de cada término:
**ICR (Centro Instantáneo de Rotación):** Es el punto alrededor del cual el eje delantero está girando.
**R :** Es la radio del giro del vehículo, medida desde el ICR hasta el centro del eje trasero.
**L :** Es la distancia entre el eje delantero y el eje trasero de Eva01, o la distancia de nuestro eje transmisor.
**B :** Es la distancia entre los muñones de dirección (La pieza en la que va la rueda y se conecta a la dirección).
**a(i) :** Es el ángulo de giro de nuestra rueda interior respecto a la curva.
**a(o) :** Es el ángulo de nuestra rueda exterior respecto al giro.
Rediseñamos y mejoramos el mecanismo de dirección para satisfacer las demandas físicas y mecánicas del robot. Los aspectos clave de este desarrollo fueron:
- **Modelado en Autodesk Fusion 360:** Partimos del diseño base y utilizamos Fusion 360 para realizar las modificaciones geométricas necesarias en el sistema de dirección, adaptando componentes clave como la barra de la dirección y las dimensiones del muñón que sostiene las ruedas.
- **Prototipado rápido e iteración física:** Basamos nuestras pruebas en la fabricación directa de componentes. Imprimíamos en 3D las piezas modificadas en formato STL y evaluamos su desempeño en el chasis real; si un elemento no funcionaba según lo previsto (como requerir un mayor largo en la barra de dirección), ajustábamos el modelo 3D y volvíamos a imprimir.
- **Adaptación de rines y ruedas (Dirección vs. Tracción):** Para integrar de forma adecuada el eje metálico en el sistema de tracción trasera, adaptamos la geometría de los rines. Los rines delanteros (dirección) se diseñaron ligeramente más pequeños en diámetro interno, lo que hace que el perfil del neumático sea más grueso en esa zona; sin embargo, físicamente las ruedas delanteras y traseras mantienen exactamente el mismo tamaño externo para conservar el equilibrio y la altura del chasis.
- **Fabricación en PETG:** Todas las piezas adaptadas e impresas fueron fabricadas utilizando filamento PETG (a excepción de los neumáticos impresas en TPU), garantizando mayor resistencia mecánica, tenacidad ante impactos y durabilidad en las uniones y puntos de estrés térmico o mecánico.
#### Calibración e implementación
Para asegurarnos de que la dirección funcionara correctamente en ambas direcciones, llevamos a cabo un proceso de calibración práctico e iterativo:
- **Ajuste dimensional:** Modificamos de forma iterativa el modelo digital (ajustando la barra de dirección y el muñón) y probamos el encaje físico de las piezas impresas.
- **Verificación mecánica:** Tras cada impresión y montaje, evaluamos el comportamiento dinámico del servo y el varillaje, comprobando que las ruedas giraran de forma simétrica, sin fricción excesiva ni holguras en el muñón.
- **Consolidación del diseño:** Una vez alcanzado el ángulo de giro óptimo, fijamos las dimensiones definitivas en el modelo final.
#### Montaje:
Todo el mecanismo de dirección mejorado se ensambló de manera robusta utilizando un sistema de uniones impresas con filamento con tornillos y tuercas M3, sujetando firmemente el servo, los muñones y las barras de dirección a la estructura principal del chasis.
### 2.3 Diseño del chasis
|**Dimensiones**|**Valor**|
|---------------|---------|
| Largo | 126 mm |
| Ancho | 62 mm |
| Alto máx | 25.3 mm |
| Alto min | 2.5 mm |
#### Diseño y Estructura del Chasis
El chasis principal de nuestro vehículo toma como base un diseño de código abierto, el cual fue adaptado y optimizado mediante Autodesk Fusion 360 para ajustarse a nuestro sistema de tracción y geometría de dirección. Para garantizar la modularidad y facilitar el mantenimiento, la transmisión trasera y el mecanismo de dirección delantero con su servomotor se montan en placas desmontables impresas en 3D. Estas placas permitieron realizar ajustes finos durante la fase de pruebas hasta alcanzar una alineación precisa con el resto del tren motriz.
La distribución interna coloca los componentes de mayor peso en los extremos (motor y servo), reservando la zona central para la electrónica. Allí, una placa de circuito a medida simplifica el cableado y optimiza el espacio. El diseño se complementa con piezas independientes imprimibles, como abrazaderas para el motor y soportes dedicados para los sensores, lo que facilita el reemplazo o ajuste individual de cada elemento.
Todo el conjunto estructural fue impreso en filamento PETG, seleccionado por su mayor resistencia mecánica, durabilidad frente a impactos y tolerancia térmica en comparación con el PLA convencional.
---
## 3. 🔋Arquitectura de potencia y sensores
### 3.1 Fuente de alimentación
#### Batería high performance
|
Específicacones:
|
|
Especificaciones:
|
|
Especificaciones:
|
|
Especificaciones:
|
|**Dimensiones**|**Valor**|
|---------------|---------|
| Largo | 25 mm |
| Alto | 1 mm |
| Ancho | 10,7 mm |
| Peso | 0,8 g |
**Observaciones**
Al trabajar con la tecnología Time-of-Flight (ToF) mediante un láser VCSEL infrarrojo invisible, el sensor emite un haz de luz y necesita que los fotones reboten en la superficie y regresen directamente al receptor SPAD integrado. Debido a esto, el dispositivo es sensible a las inclinaciones, por lo que requiere una alineación perpendicular (a 90°) frente a las paredes u obstáculos para garantizar lecturas precisas.
Asimismo, es importante ubicarlo a una altura de 4 cm a 5 cm del suelo (en el Eva01 lo colocamos a 5 cm) para optimizar el rango de detección y evitar fluctuaciones no deseadas con el piso.
El Eva01 utiliza 5 de estos sensores VL53L0X dispuestos a 45° entre sí. Al mantener esta separación angular y contar con un campo de visión (FoV) de 25°, los haces de luz no se solapan, lo que elimina el riesgo de interferencias cruzadas entre lecturas adyacentes.
#### Sensor de unidad de medición inercial (IMU MPU-6050)
El MPU-6050 es una unidad de medición inercial (IMU) muy utilizada que integra un giroscopio de 3 ejes y un acelerómetro de 3 ejes en un único chip. Utiliza esta combinación para medir con precisión la aceleración lineal y la velocidad angular, lo que permite determinar la orientación, la inclinación y el movimiento del prototipo en el espacio.
Ventajas del dispositivo:
- **Tamaño ultracompacto**: al integrar el acelerómetro y el giroscopio en una placa minúscula, maximiza la eficiencia del espacio dentro de nuestro circuito.
- **Fácil integración**: gracias a la comunicación mediante el protocolo I2C y a una amplia gama de bibliotecas disponibles, la configuración y la lectura de datos son extremadamente sencillas.
- **Alta velocidad**: cuenta con un procesador de movimiento digital (DMP) interno que ejecuta rápidamente algoritmos complejos, proporcionando datos estables en tiempo real sin sobrecargar el microcontrolador principal.
|**Dimensiones**|**Valor**|
|---------------|---------|
| Largo | 21.2 mm |
| Ancho | 16.4 mm |
| Alto | 3.3 mm |
| Peso | 2.1 g |
#### Cámara de visión artificial (cámara web FHD de 1080p modificada)
Para equipar el vehículo con un sistema de visión artificial, integramos una cámara web de alta definición (FHD de 1080p). Sin embargo, dado que la unidad comercial original (incluidas su carcasa y su soporte) era demasiado grande y pesada (80 mm x 33 mm x 40 mm), llevamos a cabo una modificación del hardware eliminando toda la estructura plástica externa. Esto nos permitió extraer el módulo interno de la cámara, lo que dio como resultado una placa de circuito funcional que mide tan solo **25 mm x 28,5 mm**.
Ventajas clave del dispositivo modificado:
- **Tamaño ultracompacto (tras la modificación)**: al reducir drásticamente sus dimensiones a tan solo 25 mm x 28,5 mm, pudimos montarlo en la parte delantera del vehículo sin comprometer la aerodinámica ni el diseño del chasis.
- **Fácil integración y estabilidad**: A pesar de estar desmontado, conserva la conectividad USB nativa y la compatibilidad directa con algoritmos de visión por ordenador (como OpenCV), lo que simplifica la programación.
- **Alta velocidad y resolución**: Mantiene la captura en 1080p FHD, procesando imágenes nítidas en tiempo real, un factor crítico para la toma de decisiones mientras el vehículo está en movimiento.
#### Comparación de dimensiones (cámara web)
|**Dimensión**|**Valor**|
|-------------|---------|
| Longitud | 85 mm |
| Altura | 17 mm |
| Anchura | 56 mm |
| Peso | 45 g |
#### Esp32-S2 Wemos Mini
Aunque la Raspberry Pi 3 B+ es capaz de procesar imágenes en tiempo real, nos dimos cuenta de que necesitaba algo de ayuda para evitar que se sobrecargara de información; por ello, decidimos incorporar un **ESP32-S2 Mini** para controlar los sensores y sus actuadores con el fin de alcanzar el nivel de procesamiento necesario. Asimismo, aprovechamos la conectividad Wi-Fi integrada de este microcontrolador para transmitir y visualizar en tiempo real (únicamente durante las prácticas) las lecturas de los sensores a través de una app realizada en Firebase.
|**Dimensión**|**Valor**|
|-------------|---------|
| Longitud | 34.3 mm |
| Altura | 25.4 mm |
| Anchura | 25.4 mm |
| Peso | 5.3 g |
### 3.4 Diagramas eléctricos
**Diagrama de Bloques del Sistema**
---
**Diagrama sensores:**
---
**Diagrama motores:**
---
**Diagrama divisor de voltaje:**
Tuvimos que decidir cómo integrar todo el circuito. Si dejábamos los componentes separados y conectados solo con cables sueltos, el sistema ocupaba demasiado espacio y resultaba muy desordenado. Por ello, optamos por diseñar y ensamblar nuestra propia placa soldando todo sobre una perfboard. Esto nos permitió compactar considerablemente el circuito, mantener las conexiones ordenadas y fijas, y al mismo tiempo conservar la flexibilidad para corregir fallas o reemplazar componentes sin tener que rediseñar una PCB industrial. No obstante, nuestra visión a futuro es reemplazar esta perfboard por una PCB prefabricada que permita optimizar aún más el diseño y escalar la producción. [Toca aquí para ver el proceso](
Al principio utilizamos Arduino IDE para programar la ESP32-S2 Mini de Eva01 durante el primer desafío. Sin embargo, no tomamos en cuenta que la comunicación serie y la integración con la Raspberry Pi 3 Model B+ resultaría compleja bajo este enfoque.
La Raspberry Pi 3 B+ ejecuta un sistema operativo completo (Raspberry Pi OS) y trabaja principalmente en Python, mientras que el código compilar con Arduino IDE está escrito en C/C++ (C++ simplificado). Esta disparidad exigía implementar protocolos de comunicación serie (UART o USB-CDC) con librerías adicionales como pyserial para parsear, estructurar y sincronizar constantemente las tramas de datos entre ambos entornos.
Además, la arquitectura nativa en C/C++ generaba barreras al intentar modificar o depurar algoritmos al vuelo durante las pruebas del robot. El cambio hacia un entorno unificado basado en Python / MicroPython facilitó la interacción, ya que ambos sistemas pueden compartir lógica, estructuras de datos y protocolos sin la necesidad de traducir el flujo entre dos lenguajes de programación distintos.
[Toca aquí para ver el código del primer desafío en Arduino](
Thonny es un Entorno de Desarrollo Integrado (IDE) gratuito y de código abierto diseñado específicamente para programar en Python y MicroPython de manera sencilla. Viene preinstalado de fábrica en el sistema operativo Raspberry Pi OS, por lo que es la herramienta que estamos utilizando actualmente en la Raspberry Pi 3 Model B+ y la ESP32 S2 Mini.
Su principal ventaja es que cuenta con un soporte integrado para gestionar una amplia variedad de librerías y conectarse directamente con microcontroladores. Esto nos permite redactar, ejecutar y depurar código en tiempo real dentro de un entorno nativo en Python, simplificando la comunicación entre la Raspberry Pi y la ESP32 S2 Mini sin las complicaciones de compatibilidad que teníamos con Arduino IDE.
[Toca aquí para ver el código del primer desafío en MicroPython](src/python)
---
### 5.2 Estructura del código
```text
├── main.py # Punto de entrada principal
├── Config.py # Ajustes globales y parámetros de hardware
│
├── 🚗 CAPA DE CONTROL DEL VEHÍCULO
│ └── Carro.py # Clase principal que coordina actuadores, sensores y navegación
│
├── ⚙️ CAPA DE HARDWARE Y ACTUADORES
│ ├── Actuator.py # Control de Servo (dirección) y Puente H TB6612FNG (tracción)
│ ├── SensorReader.py # Gestión e inicialización de la red de 5 sensores VL53L0X
│ └── vl53l0x.py # Driver I2C para el sensor de distancia VL53L0X
│
├── 🧠 CAPA DE ALGORITMOS Y NAVEGACIÓN
│ ├── PIDController.py # Implementación genérica de un controlador PID
│ ├── SteeringPIDController.py# PID enfocado en el cálculo del ángulo de dirección
| ├── Kalman.py # Filtro de Kalman para fusión sensorial y reducir el ruido
│ └── Pista.py # Lógica del entorno (sentido de giro y estado de la pista)
│
└── 📊 CAPA DE TELEMETRÍA Y LOGS (únicamente para pruebas)
└── Logger.py # Conexión Wi-Fi y envío de telemetría a Firebase
```
---
### 5.3 Instrucciones de compilación
#### Configuración de Firmware y Gestión de Flash (ESP32-S2 Mini)
**El problema del modo Bootloader (RST / B0) en Arduino IDE**
Al cargar desde Arduino IDE, el cargador de código estándar interactúa directamente con la memoria flash, sobrescribiendo la configuración del controlador USB OTG nativo del microcontrolador. Esto provoca que la placa quede atada al USB Download Bootloader por hardware.
Como resultado, para poder subir cualquier cambio de código en Arduino IDE, es necesario realizar manualmente la secuencia de reinicio:
1. Mantener presionado el botón **B0 (GPIO0)**.
2. Presionar y soltar el botón **RST**.
3. Soltar el botón **B0**.
Este proceso repetitivo entorpece las pruebas rápidas en pista e incrementa el desgaste físico del hardware durante el desarrollo.
**Transición a MicroPython + Thonny IDE**
El cambio a MicroPython ejecutado sobre Thonny IDE nos permite aprovechar el canal USB CDC nativo de la ESP32-S2 Mini. Una vez que el firmware base de MicroPython está correctamente grabado en el chip, la placa gestiona la comunicación serial directamente con el entorno de desarrollo. Esto habilita la ejecución y transferencia de código automática sin necesidad de interactuar con los botones físicos.
**Proceso de restauración y configuración en Thonny IDE**
Para limpiar el estado guardado por Arduino IDE y dejar la ESP32-S2 lista para flasheo automático, se realiza el siguiente procedimiento dentro de Thonny:
1. Activación manual del Bootloader (Última vez)
Poner la tarjeta en modo de descarga manual manteniendo presionado **B0**, presionando/soltando **RST** y soltando **B0**.
2. Apertura del asistente de flasheo
En el menú superior de Thonny, acceder a `Herramientas` > `Opciones...` > pestaña `Intérprete`. Seleccionar el intérprete **MicroPython (ESP32)** y hacer clic en el enlace inferior **Instalar o actualizar MicroPython...**.
3. Borrado de memoria y grabación de firmware
**En la ventana emergente de instalación:**
1. Target port: Seleccionar el puerto COM asignado a la placa.
2. Erase all flash before installing: Marcar la casilla obligatoriamente. Esto elimina la configuración previa cargada por el entorno de Arduino.
3. MicroPython family / variant: Seleccionar **ESP32-S2** / **Wemos S2 mini**.
4. Hacer clic en **Instalar**.
**Reinicio final**
Al completar la barra de progreso al 100%, cerrar las ventanas emergentes, presionar el botón **RST** una sola vez para arrancar el nuevo firmware e iniciar la comunicación por la consola de MicroPython.
---
## 6. 📝Lista de componentes
| Componente | Cantidad |
|---------------------------------|-----------|
| Raspberry Pi 3 B+ | 1 |
| Esp32 S2 Mini | 1 |
| Sensores VL53L0X | 5 |
| MPU 6050 | 1 |
| Batería LiPo 7.4V 75C | 1 |
| Conversor Step Down 5v | 1 |
| Puente H tb6612fng | 1 |
| Switch | 1 |
| Cables unifilares | varios |
| Conectores JST diferentes pines | varios |
| Rodamientos 608 | 2 |
| Rodamientos 605 | 2 |
| Servo MG90S | 1 |
| Micro motor dc 130 3V - 6V | 1 |
| PerfBoard | 1 |
| Resistencias 1KΩ | 3 |
| Resistencias 220KΩ | 1 |
| Led | 1 |
| Regulador Lineal LM7805 | 1 |
| Capacitor 40 105 c | 1 |
| Capacitor cerámico 10uf | 1 |
| Conector xt60 | 1 |
| Conector DC Plug | 1 |
| Tornillos y tuercas: M3 y M4 | varios |
| Borneras | 4 |
| Terminales | 4 |
| Espadines hembra/macho | varios |
| Eje 5mm | 1 |
| Cámara 1080p | 1 |
| Filamento PETG | 1 |
| Filamento TPU | 1 |
**Impresoras utilizadas:**
- Creality Ender 3 V3 SE
---
## 7. 💎Archivos de modelos 3D
### 7.1 Archivos STL originales
*Estos archivos son extraídos directamente del repositorio proporcionado por "alexyo132" creador de zcar.*
[Toca aquí](models/zcar)
---
### 7.2 Archivos modificados Eva01
[Toca aquí](models/Eva01)
---
## 8. 🛠️Instrucciones de montaje
Pronto