Adrián Carrillo, inicio
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 prototipo armado. Una caja gris impresa en 3D con la lente de la cámara al frente y la antena Wi-Fi a un lado.

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.
  1. 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.
  2. Lo único que sale { "personas": 4 }
    Wi-Fi · HTTPS · JSON
  3. 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
  4. Tiempo real y alertas
    Firestore · Telegram
  5. 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
Las tres capas del sistema. De la parada solo sale un número.
  • El prototipo abierto: la batería y el cableado dentro de la caja impresa en 3D.

    Por dentro: batería, placa y antena.

  • La placa XIAO ESP32-S3 con su módulo de cámara, junto a la antena Wi-Fi.

    XIAO ESP32-S3 Sense con su cámara.

  • Panel con 2 personas en la parada, en verde.

    Normal: 2 personas.

  • Panel con 4 personas en la parada, en rojo, con la alerta enviada a Telegram.

    Urgente: 4 personas.

El panel cambia de estado según cuánta gente espera.
Mensaje del bot de Telegram: «¡Taxi requerido urgente! Pasajeros esperando: 4», con un botón «¡Voy para allá!».
La alerta que recibe el conductor.

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

Paleta de comandos

Inicio
Trabajo
Sobre mí
Contacto
CV
Uses: mis herramientas
Facturador electrónico SRI 0 facturas duplicadas
TAXIBOCARCHI 88,3 % F1 del modelo
Aurum VIP Club 3 pasos para reservar con anticipo
Sistema para tienda de ropa offline funciona sin internet
Switch to English EN
Copiar mi correo danilocarrillo1515@gmail.com
Escribirme por WhatsApp WhatsApp
Abrir LinkedIn linkedin.com
Abrir GitHub github.com/AdrianC1530