Trabajo
Tesis de gradoPUCE Ibarra
TAXIBOCARCHI: conteo de pasajeros con TinyML
Un microcontrolador cuenta cuánta gente espera el taxi en una parada rural y avisa a los conductores. Solo envía un número, nunca una imagen.
88,3 % F1 del modelo
- Rol
- Autor del trabajo de titulación
- Estado
- prototipo validado, 18 de 18 pruebas
- Stack
- C++/Arduino, Edge Impulse, ESP32-S3, Python/Flask, NestJS, React, Firestore, Telegram Bot API
El problema
En la ruta rural Bolívar – El Ángel, en Carchi, cada taxi compartido solo sale cuando completa el cupo. Nadie sabe cuánta gente espera en la parada.
Qué hice
Construí un prototipo que cuenta a las personas en la parada y avisa a los conductores. Fue mi tesis de grado.
- Visión artificial dentro del microcontrolador. Un modelo FOMO int8 (MobileNetV2), entrenado con Edge Impulse, corre en un XIAO ESP32-S3.
- Privacidad desde el diseño. El dispositivo solo envía el número de personas. La imagen nunca sale de la parada.
- Panel y alertas. Backend en Flask y NestJS sobre Firestore, un panel en React en tiempo real y un bot de Telegram para los conductores.
-
01 Percepción
En la parada
- Cámara OV2640 96 × 96 px, en escala de grises
- XIAO ESP32-S3 Sense Modelo FOMO int8 · 314 ms · 69 KB de RAM
- Conteo de personas La imagen se descarta. Nunca se guarda ni se envía.
- Lo único que sale
{ "personas": 4 } -
02 Red y datos
En la nube
- Backend Flask Recibe el conteo y decide si hay alerta
- Firebase Firestore Historial, usuarios y configuración
- API NestJS Estadísticas y cuentas de conductores
- Tiempo real y alertas
-
03 Aplicación
Con las personas
- Panel web en React Estado de la parada en tiempo real
- Bot de Telegram Aviso con 3 personas, urgente con 4 o más
- El conductor Responde «¡Voy para allá!» desde el chat
-
Por dentro: batería, placa y antena.
-
XIAO ESP32-S3 Sense con su cámara.
-
Normal: 2 personas.
-
Urgente: 4 personas.
Resultado
El modelo superó el objetivo de 85 % de F1 y el prototipo aprobó las 18 pruebas. El código es público en GitHub.
- 88,3 % F1 del modelo objetivo: más de 85 %
- 314 ms por inferencia dentro del ESP32-S3
- 69 KB de RAM en uso por el modelo
- 4,2 s de la captura al panel flujo completo
- 18/18 pruebas aprobadas