ZoroBot3 — Documentación Técnica
Robot micromouse de alto rendimiento con STM32F4, encoders magnéticos de alta resolución, ventilador de succión y 4 sensores infrarrojos.

🏆 Palmarés
| 🥇 | 🥈 | 🥉 |
|---|---|---|
| 8 | 0 | 0 |
Resultados por Evento
| Evento | Categoría | Posición | Año |
|---|---|---|---|
Micromouse Portuguese Contest |
Micromouse Classic | 🥇 | 2026 |
RoboChallenge |
Maze | 🥇 | 2025 |
OSHWDem |
Micromouse Classic | 🥇 | 2025 |
Micromouse Portuguese Contest |
Micromouse Classic | 🥇 | 2025 |
Micromouse Portuguese Contest |
Time Trial | 🥇 | 2025 |
RoboChallenge |
Maze | 🥇 | 2024 |
OSHWDem |
Micromouse Classic | 🥇 | 2024 |
OSHWDem |
Micromouse Wall-Follower | 🥇 | 2023 |
⚙️ Hardware
- Microcontrolador: STM32F405RGT6 @168MHz
- Driver de motores: MP6551 @20kHz
- Giroscopio: LSM6DSRTR 4000dps
- Encoders: AS5145B-HSST (12-bit, lectura en cuadratura por hardware)
- Regulador: CN3903 + LDO ME611C33M5G
- Sensores IR: 4× SFH-4550 (emisores) + 4× ST-1KL3A (receptores) + TSSP77038TR (38kHz)
- Batería: LiPo 2S 260mAh 35-70C Turnigy nano-tech
- Tracción: 2× Motores Coreless 8520 7.4v, chasis de PCB, gomas Kyosho

💻 Software
- Programado en C11 con VSCode, PlatformIO y LibOpenCM3.
- Valores analógicos leídos por DMA, procesados cada 1 ms.
- Sensores IR gestionados por máquina de estados a 16 kHz con filtrado de luz ambiente.
- Encoders en cuadratura por hardware mediante timers, MPU por SPI.
- 7 lazos PID en cascada (velocidad lineal, angular, control frontal, control lateral) ejecutados cada 1 ms.
- Reseteo de posición por pérdida de pared lateral.
- Curvas con perfiles de giro de aceleración senoidal.
- Algoritmos: seguimiento de pared, exploración, Floodfill basado en pesos cinemáticos y movimientos hardcodeados.
📚 Documentación Detallada
- Hardware — MCU, sensores, motores, encoders, batería, chasis, versiones del robot
- Arquitectura Software — Bucle principal, SysTick ISR, flujo de carrera, exploración
- Sensores — Máquina de estados ADC, linealización, detección de paredes, histéresis
- Movimiento — Tipos de movimiento, perfiles de giro, speed run, wall loss correction
- Floodfill — Algoritmos BASIC/DIAGONAL/TIME_BASED, BFS, path following
- Control PID — 7 lazos en cascada, anti-windup, compensación de batería
- Menú — Navegación, selección de algoritmo, configuración de velocidad
- Debug — LEDs, RGB, USART, funciones de debug
- Calibración — Calibración frontal/lateral, giroscopio, persistencia en EEPROM
- EEPROM — Almacenamiento, checksum, maze persistente
- Encoders y Giroscopio — AS5145B-HSST, LSM6DSR, integración angular
- Batería y LEDs — Monitorización de voltaje, divisor de tensión, LEDs de estado
- Simulador MMSIM — API de paredes virtuales, estimación de tiempo
- Cinemática — Estrategias de velocidad, perfiles de aceleración, parámetros de giro
- Problemas Conocidos — Issues documentados con IDs, impacto y soluciones
🔧 Stack Tecnológico
| Componente | Detalle |
|---|---|
| MCU | STM32F405RGT6 @ 168 MHz (ARM Cortex-M4F) |
| Framework | LibOpenCM3 + PlatformIO |
| Lenguaje | C11 |
| Compilador | GCC ARM Embedded (arm-none-eabi-gcc) |
| IDE | VSCode |
| Control de versiones | Git |
Micromouse Portuguese Contest
RoboChallenge
OSHWDem