Desde que se entendió que los seres humanos somos los mayores contaminantes del único hogar que tenemos, la Tierra, ese punto azul pálido que la Voyager-1 fotografió a 5.000 millones de kilómetros de distancia, quedó claro que hace falta más responsabilidad que nunca para protegerlo.

La iniciativa de proteger el medio ambiente empieza en las casas cada mañana, cuando el residuo húmedo va a un lado del basurero y el seco o reciclable al otro, para que la basura reciba el tratamiento adecuado en la planta de procesamiento. Antes, en los países en desarrollo, esa separación no recibía mucha atención. Sin embargo, con la llegada de las políticas ambientales del G7, el impulso hacia las emisiones netas cero y otras iniciativas globales, se instó a cada país a adoptar prácticas sostenibles de gestión de residuos.

India, como nación responsable, adoptó esa idea hace tiempo. En casi todos los hogares se usan hoy basureros de doble compartimento, o dos basureros separados, para segregar la basura.

Ahora imagine basureros lo bastante inteligentes como para reconocer el tipo de residuo que se deposita en ellos, identificando al instante si es húmedo, seco o desconocido, y luego abrir automáticamente el compartimento correcto para recibirlo. Esa es la inspiración detrás de este proyecto: un sistema que detecta, selecciona y clasifica la basura en el contenedor correcto usando visión artificial y automatización.

¿Qué hardware necesita el proyecto?

La Sipeed MaixCam es un microcontrolador compacto orientado a IA de origen chino. La información detallada sobre la placa está disponible en el sitio oficial de la wiki de Sipeed. Aunque el sitio está principalmente en chino, herramientas de traducción modernas permiten navegarlo y entender su contenido sin mayor dificultad.

Fig. 1 Sipeed MaixCam
Fig. 1 Sipeed MaixCam

El ESP32 se configura a través del IDE de Arduino o de PlatformIO, lo que facilita programarlo e integrarlo con otros componentes de hardware. Cumple el rol de unidad de accionamiento y control: recibe los datos de clasificación desde la MaixCam por UART y comanda componentes mecánicos como servos, actuadores y relés. El soporte de Wi-Fi y Bluetooth incorporado en el ESP32 también deja la puerta abierta a mejoras futuras de monitoreo inalámbrico o registro de datos en la nube.

Fig. 2 Microcontrolador ESP32
Fig. 2 Microcontrolador ESP32
ComponenteRol en el sistema
Sipeed MaixCamDetección de objetos y clasificación con dos modelos de IA
ESP32Recibe la clasificación por UART y ejecuta la secuencia mecánica
PCA9685Controlador I²C de hasta 16 servos
L298NPuente H para el actuador lineal, con solo dos pines GPIO

¿Cómo decide a qué compartimento va cada desecho?

El programa en Python que corre sobre la MaixCam analiza cada objeto detectado y lo procesa de forma secuencial a través de dos modelos de IA: primero el clasificador MobileNetV2 y después el modelo de cocina. Las salidas combinadas de ambos modelos se evalúan para determinar la categoría del objeto entre tres clasificaciones posibles: seco, húmedo o desconocido.

Cada clasificación corresponde a una palabra codificada, "DRY", "WET" o "UNK", que se transmite al ESP32 por un enlace de comunicación UART rápido y confiable.

Una vez que el ESP32 recibe el resultado de la clasificación, inicia la secuencia mecánica. Primero ordena al actuador lineal subir o bajar la placa de espera, según si el ciclo de clasificación está comenzando o terminando.

Se usa una placa controladora de servos PCA9685 para manejar el mecanismo de clasificación. Puede accionar hasta 16 servos de forma simultánea a través de la interfaz I²C del ESP32.

Según la clasificación recibida, el ESP32 activa el servo correspondiente para abrir la tapa del contenedor adecuado, permitiendo que el residuo se deslice automáticamente al compartimento correcto. Para sistemas de múltiples contenedores o diseños de segregación más avanzados, los grupos de servos también pueden activarse en conjunto para lograr movimientos más complejos.

Controlar los servomotores desde el ESP32 es directo usando archivos de biblioteca dedicados y control PWM estándar. El actuador lineal se maneja con un puente H L298N usando solo dos pines GPIO de control.

El ciclo operativo comienza en la MaixCam con la detección del objeto, pasa al ESP32 para el accionamiento mecánico y luego vuelve a la MaixCam, donde queda a la espera del siguiente desecho.

El diagrama de flujo del proceso es el siguiente:

Inicio [MaixCam] a Basura detectada [MaixCam] a "DRY", "WET" o "UNK" transmitido al ESP32 por UART [MaixCam] a El actuador lineal sube [ESP32] a La placa de espera se eleva [ESP32] a Se activa el servo [ESP32] a La tapa del contenedor se inclina [ESP32] a Basura clasificada en el contenedor [ESP32] a El actuador lineal baja [ESP32] a La placa de espera regresa [ESP32] a La tapa superior se cierra [ESP32] a Espera la siguiente basura [MaixCam]

Lista de materiales

  • MaixCam, 1 unidad
  • Servomotores, 3 unidades
  • Actuador lineal a motor, 100 mm de carrera, 1 unidad
  • Controlador de motores con puente H L298N, 1 unidad
  • Placa controladora de servos PCA9685 I²C, 1 unidad
  • Fuentes de alimentación de 12 V y 5 V
  • Cables, conectores e interruptores

Diagrama esquemático

Fig. 3 Diagrama esquemático del sistema de clasificación de residuos secos, húmedos y desconocidos con IA
Fig. 3 Diagrama esquemático del sistema de clasificación de residuos secos, húmedos y desconocidos con IA

Diseño del recipiente

El ensamblaje del basurero consiste en un cuerpo exterior circular dividido internamente en tres compartimentos destinados a residuo seco, húmedo y desconocido, cada uno separado 120 grados del siguiente mediante contenedores apilables.

Sobre el conjunto va montada una placa de espera circular, sostenida por un resorte helicoidal central de 50 mm que le permite inclinarse en cualquier dirección cuando se la tracciona. El resorte se apoya en un actuador lineal de 12 V, con carrera de 0 a 100 mm, ubicado verticalmente en el centro.

Debajo de la placa montada sobre el resorte hay tres servomotores, también separados 120 grados entre sí y fijados alrededor de la base del resorte. Como el actuador lineal entrega una elevación de 100 mm, los tres compartimentos de residuos se posicionan de modo que sus aberturas superiores queden 100 mm por debajo de la placa de espera completamente elevada, o 50 mm por debajo de la placa base del resorte.

En la posición normal, es decir cerrada, cuando el actuador está totalmente retraído, la placa de espera descansa sobre el borde del basurero, cubriendo todos los compartimentos e impidiendo el acceso desde el exterior. Cuando se deposita un residuo sobre la placa y se detecta un tipo de basura válido, el actuador se extiende y eleva la placa 100 mm. El servomotor correspondiente se activa entonces, inclinando la placa hacia el contenedor apropiado y dejando que el desecho se deslice de forma natural hacia ese compartimento.

Cada servo controla una sección de residuos, seco, húmedo o desconocido, tirando levemente de la placa hacia su dirección designada para guiar el desecho de manera eficiente.

Esta configuración entrega una solución mecánica simple, compacta y confiable para la segregación automatizada de residuos. Los contenedores pueden fabricarse apilables, lo que permite retirarlos y reemplazarlos con facilidad cuando se llenan.

También puede usarse un servo lineal de 100 mm de recorrido en lugar del actuador lineal. Sin embargo, se eligió el actuador por su menor costo frente al servo lineal. Un actuador lineal es esencialmente un motor que impulsa un eje roscado largo, el cual desplaza una tuerca hacia adelante o hacia atrás según el sentido de giro del motor. Es una solución económica pero robusta y efectiva para el control del basurero.

Fig. 4 Placa controladora de servos PCA9685 de 16 canales por I²C, usada para manejar el mecanismo de clasificación
Fig. 4 Placa controladora de servos PCA9685 de 16 canales por I²C, usada para manejar el mecanismo de clasificación
Fig. 5 Ejemplo de actuador lineal de 100 mm usado para elevar la placa de recolección de residuos
Fig. 5 Ejemplo de actuador lineal de 100 mm usado para elevar la placa de recolección de residuos

Mejoras posibles

El proyecto se puede ampliar agregando tres sensores ultrasónicos SR04 o VL53L0X de tiempo de vuelo bajo la placa de espera, para medir la altura del espacio vacío en cada contenedor. Esa información la procesa el ESP32. Si algún contenedor se llena, el sistema puede hacer sonar una alarma o encender un indicador rojo.

Conexión y puesta en marcha de la MaixCam

Para empezar, hay que descargar el sistema operativo más reciente de la MaixCam desde la página de lanzamientos. En la mayoría de los casos, de todos modos, la placa viene con el sistema operativo ya instalado y solo hace falta conectarla al computador. Hay dos métodos principales de conexión: la conexión USB directa y el IDE MaixVision, que ofrece una experiencia más visual e integrada.

Para instalar el sistema operativo se puede abrir la tapa trasera de la placa, retirar la tarjeta SD, escribir la imagen del sistema en la tarjeta y volver a insertarla. La alternativa, sin abrir la carcasa, es presionar el botón de usuario mientras se conecta el cable USB al computador. Puede ser necesario presionar el botón varias veces hasta que la MaixCam aparezca como una unidad USB con la etiqueta boot.

Para transferir la imagen del sistema a la unidad de la MaixCam se puede usar balenaEtcher o cualquier programa similar. Una vez completada la transferencia, se desconecta el cable USB y se vuelve a alimentar la MaixCam. La pantalla TFT mostrará la pantalla de inicio. Desde la pantalla táctil se abre Ajustes, se selecciona Wi-Fi, se busca la red deseada y se conecta con la contraseña correspondiente.

Fig. 6 Pantalla de inicio de la MaixCam tras un arranque exitoso, con acceso a los ajustes del sistema, las aplicaciones de IA y las utilidades integradas
Fig. 6 Pantalla de inicio de la MaixCam tras un arranque exitoso, con acceso a los ajustes del sistema, las aplicaciones de IA y las utilidades integradas

Después de conectarse al Wi-Fi, la MaixCam puede solicitar la instalación del entorno de ejecución MaixPy. Basta seguir las instrucciones en pantalla para completarla. Una vez instalado, conviene explorar el resto de las opciones del menú para familiarizarse con las prestaciones de la placa.

Fig. 7 El IDE MaixVision (izquierda) y la terminal SSH (derecha), usados para programar y administrar la MaixCam
Fig. 7 El IDE MaixVision (izquierda) y la terminal SSH (derecha), usados para programar y administrar la MaixCam

Programación por MaixVision y SSH

El IDE MaixVision se muestra en el lado izquierdo de la pantalla, mientras que a la MaixCam se accede por SSH en el derecho. Dentro de MaixVision se puede usar SSH o GFTP, es decir FTP gráfico, para interactuar con la placa. La alternativa es acceder a la MaixCam directamente desde el símbolo del sistema del computador, reemplazando la dirección IP por la que asigne el router.

En el sitio de MaixHub hay muchos proyectos de ejemplo disponibles, aunque buena parte está escrita en chino y la documentación que los acompaña suele ser limitada.

Nota importante: si ya hay código corriendo en la MaixCam, conectarse o desconectarse a través del IDE MaixVision detendrá la aplicación en ejecución. Para evitar interrumpirla se recomienda conectarse por SSH, método que permite que la aplicación siga funcionando sin cortes.

Una vez establecida la conexión SSH con la placa, los archivos se pueden subir con el comando scp. Un enfoque más cómodo es instalar el IDE MaixVision y hacer toda la gestión de archivos desde la aplicación. Con la MaixCam y el computador conectados a la misma red, se selecciona el botón Connect ubicado en la esquina inferior izquierda del IDE. El administrador de archivos del dispositivo, en la esquina superior derecha, entrega las opciones para subir, descargar, renombrar, eliminar y mover archivos en la placa.

Cómo se replica esto en Chile

La arquitectura de este proyecto es interesante justamente porque reparte el trabajo entre dos placas de gama distinta. La MaixCam corre los modelos de visión sobre un procesador RISC-V con acelerador de IA, y el ESP32 se queda solo con la parte mecánica, que es donde se necesita temporización confiable y varios pines de salida. Esa separación permite que la parte cara del sistema sea una sola placa, mientras el resto se arma con componentes que cualquier distribuidor de electrónica local mantiene en stock: el PCA9685, el L298N, los servos estándar y la fuente conmutada de 12 V son piezas de catálogo corriente.

Para quien quiera bajar el costo todavía más, el reemplazo evidente de la MaixCam es una ESP32-CAM corriendo un modelo cuantizado, aunque a cambio de bastante menos precisión en la clasificación y de un tiempo de inferencia mayor. La otra variante razonable es reducir de tres a dos compartimentos, con lo que se elimina un servo y se simplifica la geometría de 120 grados a dos posiciones opuestas, suficiente para la separación entre orgánico y reciclable que exige la mayoría de los municipios.