Alejandro Delgado Cardona
Portafolio Ingeniería de software León, MX · 2026
← Trabajo seleccionado

iot · visión por computadora

Clasificador Automático de Basura

Una estación física que ve un residuo, lo clasifica con IA y abre solo el contenedor correcto: del sensor al servo, pasando por una API y una app.

Construido · prototipo académico, no comercial

Rol
Diseño y desarrollo · full-stack + firmware
Año
2025
Stack
ESP32-CAM · .NET 9 · OpenAI Vision
Enlaces
TODO
TODO — imagen o GIF del proyecto funcionando
Una imagen de producto vale más que tres párrafos. Sube aquí una captura o un video corto del proyecto.

Contexto

Separar bien la basura depende de que una persona reconozca el material justo en el momento de tirarlo, y casi nunca pasa. Quise comprobar si un dispositivo de bajo costo podía tomar esa decisión por sí mismo y accionar la separación, sin depender de que el usuario sepa de reciclaje.

Lo que construí

Un sistema completo de punta a punta, en tres piezas que se comunican entre sí:

  • Estación física — ESP32-CAM y firmware en C++. Un sensor ultrasónico detecta que se acerca un residuo, la cámara toma una foto y, según la categoría que devuelve el servidor, un controlador de servos (PCA9685) abre el contenedor correcto: orgánico, valorizable o no valorizable.
  • API central — ASP.NET Core / .NET 9. Recibe la imagen, la clasifica, guarda la detección y devuelve la categoría. Maneja usuarios con JWT, zonas, clasificadores, estadísticas e inventario, sobre SQL Server con Entity Framework Core.
  • App Android — Kotlin y Jetpack Compose. Permite clasificar desde el teléfono con CameraX y consultar estadísticas de uso por tipo, zona, horario y tendencia.

La clasificación distingue tres categorías operativas —orgánico, valorizable y no valorizable— más un estado de error para imágenes que no son claras.

Decisiones técnicas

  • Inferencia por un modelo de visión (OpenAI Vision, gpt-4o) detrás de la API, con un contrato de respuesta estricto —una sola categoría— para que tanto el firmware como la app puedan actuar sin ambigüedad.
  • El dispositivo no decide solo. Centralizar la inferencia y la persistencia en la API mantiene el firmware simple y, de paso, deja todo registrado para estadística y trazabilidad por zona y clasificador.
  • Comunicación HTTP multipart entre el ESP32/Android y la API; cada detección se persiste para analítica.
  • Responsabilidades separadas en tres repos (cabapi, cabesp, cabmobile), uno por capa del sistema.

Resultado

Un sistema funcional de extremo a extremo: hardware que detecta y actúa, una API que clasifica y registra, y una app que clasifica y reporta. Su valor está en el rango —firmware embebido, IA, backend y móvil resueltos por una sola persona—.

Es un prototipo académico, no un producto comercial: quedan fuera de alcance, a propósito, el despliegue productivo y una batería de pruebas con un set de imágenes etiquetado para medir precisión por categoría.

TODO (datos reales, no inventar) — precisión por categoría, tiempo de inferencia y una foto o GIF del prototipo funcionando.