DEPARTAMENTO DE ENERGÍA Y MECÁNICA
OPTATIVA DE PROFESIONALIZACIÓN
NRC: 4904
PROYECTO N°1
DATOS INFORMATIVOS:
DOCENTE: ING. DARÍO MENDOZA
ESTUDIANTE: CASCO DANNY
ESCOBAR EDUARDO
PEREZ RONNIE
JEREZ MARLON
CRIOLLOS ANDREE
UNIDAD: PRIMERA
TEMA:
AUTOMATIZACIÓN DE UN PROCESO DE CLASIFICACIÓN DE
PIEZAS MEDIANTE RECONOCIMIENTO DE COLOR UTILIZANDO
ARDUINO Y PYTHON.
MAYO – SEPTIEMBRE 2021
Tabla de contenido
1. TEMA.................................................................................................................................................3
3. OBJETIVO GENERAL.......................................................................................................................3
3.1. OBJETIVOS ESPÉCIFICOS...........................................................................................................3
4. INTRODUCCIÓN...............................................................................................................................3
5. MARCO TEÓRICO............................................................................................................................4
5.1. Elementos de un Sistema de Visión Artificial..............................................................................4
5.2. Principio de funcionamiento........................................................................................................4
5.3. Python..........................................................................................................................................5
5.4. Open cv (visión artificial abierta)................................................................................................5
5.5. Módulo infrarrojo........................................................................................................................5
5.6. Cámara web.................................................................................................................................6
5.7. Servomotor..................................................................................................................................6
6. METODOLOGÍA................................................................................................................................7
6.1. DISEÑO DE HARDWARE........................................................................................................7
6.2. DISEÑO DE SOFTWARE........................................................................................................11
7. RESULTADOS.................................................................................................................................15
8. CONCLUSIONES.............................................................................................................................19
9. RECOMENDACIONES....................................................................................................................19
10. BIBLIOGRAFÍA...........................................................................................................................19
11. ANEXOS.......................................................................................................................................20
1. TEMA
Automatización de un proceso de clasificación de piezas mediante reconocimiento de color
utilizando arduino y python.
2. RESUMEN
El presente proyecto trata de un sistema automatizado controlado por visión artificial, utilizando
hardware (sensor de luz, control de servomotor, motor dc) y software (control por python). El
principio básico de funcionamiento es transportar objetos de color (rojo y azul) por una banda
transportadora, detectarlos con un sensor, capturar la imagen con una cámara web común y
procesarla por PYTHON para clasificarlos en dos distintos contenedores. Con este proceso se
logró una clasificación de objetos eficaz en color.
3. OBJETIVO GENERAL
Integrar visión por computadora en un proceso automatizado de clasificación de piezas de colores
rojo y azul.
3.1. OBJETIVOS ESPÉCIFICOS
Ejecutar un proceso automático con Arduino de transporte y clasificación de objetos usando
entradas y salidas digitales.
Realizar un algoritmo de programación en Python para el reconocimiento del color azul y rojo.
Diseño de una estrategia de comunicación entre Arduino y Python.
4. INTRODUCCIÓN
La visión artificial trata de simular el proceso del sentido de la visión de los seres vivos, según el cual
un objeto es captado mediante los receptores de la retina y es transformado en impulsos nerviosos que
son procesados por el cerebro. La visión artificial consiste en la captación de imágenes en línea
mediante cámaras basadas en matrices de sensores sensibles a la luz (CCD o CMOS), el posterior
tratamiento de las mismas mediante técnicas de análisis de imagen y la actuación sobre el proceso
(control de producto) o el producto (control de calidad). Las principales ventajas son la reducción de
los costes del control de calidad, el aumento de la producción, la inspección del 100% de la
producción, la reproducibilidad y el funcionamiento 24 horas al día sin “cansancio”.
5. MARCO TEÓRICO
5.1. Elementos de un Sistema de Visión Artificial
Los elementos básicos son los siguientes:
El sistema de iluminación (fluorescente, LED, polarizada, backligth, láser)
El sensor o cámara de captura de imagen (CMOS), CCD, InGaAs)
Tarjeta de captura de elevado ancho de banda (Firewire, CameraLINK, GbEthernet)
Procesamiento de imagen (Procesador y algoritmos de pretratamiento y filtrado de la imagen, de
segmentación y reconocimiento de formas, de extracción de descriptores y de clasificación)
Sincronía con el proceso, para adquirir la imagen en el momento adecuado y para actuar con el
proceso o separar unidades defectuosas.
5.2. Principio de funcionamiento.
La visión artificial, también conocida como visión por computador (del inglés computer vision) o
visión técnica, es un subcampo de la inteligencia artificial. El propósito de la visión artificial es
programar un computador para que "entienda" una escena o las características de una imagen.
Generalmente la visión artificial se divide en seis áreas:
Captación: Proceso de obtener una imagen. El proceso de captura está centrado en tres
aspectos importantes, necesarios para obtener una imagen de calidad que no altere las
condiciones reales agregando errores considerables al sistema.
Pre procesamiento: Métodos para quitar o reducir características no deseadas en la imagen
como el ruido. El preprocesamiento consiste en la aplicación de técnicas que permitan el
realce o mejoramiento de algunas características importantes en las imágenes originales para
facilitar el proceso de segmentación.
Segmentación: Dividir una imagen en objetos que sean de nuestro interés. La técnica de
segmentación más conocida dentro del procesamiento de imágenes es quizás la
umbralización. Este método permite separar dos o más regiones de una imagen a partir de un
análisis del histograma.
Descripción: Obtención de características de una objeto como su forma, tamaño, color con el
fin de diferenciarlo de otros objetos.
Reconocimiento: Proceso a través del cual se identifica un objeto dentro de una escena.
Interpretación: Asociar un significado a un conjunto de objeto reconocidos.
5.3. Python
Es un lenguaje de programación multiplataforma y multiparadigma que se destaca por su código
legible y limpio. Una de las razones de su éxito es que cuenta con una licencia de código abierto que
permite su utilización en cualquier escenario. Eso hace que sea uno de los lenguajes de iniciación de
muchos programadores siendo impartido en escuela y universidades de todo el mundo.[ CITATION
Ope \l 3082 ]
Figura 1. Logo Open CV
Fuente: [ CITATION Ope \l 3082 ]
5.4. Open cv (visión artificial abierta)
Es una librería open source de visión por computador, análisis de imagen y aprendizaje automático.
Para ello dispone de infinitud de algoritmos que permiten, con sólo escribir unas pocas líneas de
código, identificar rostros, reconocer objetos, clasificarlos, detectar movimientos de manos.
[ CITATION Ope11 \l 3082 ]
OpenCV es una librería multiplataforma disponible para Windows, Mac, Linux y Android distribuida
bajo licencia BSD. Puede programarse con C, C++, Python, Java y Matlab.
Figura 2. Logo Open CV
Fuente: [ CITATION Ope11 \l 3082 ]
5.5. Módulo infrarrojo
Modulo receptor infrarrojo permite detectar señales ir, bajo consumo de energía es compatible con
controles remoto comunes, diseño modular de fácil colocación, su funcionamiento se basa en que los
rayos infrarrojos pasan al interior del fototransistor donde se encuentra un material piroeléctrico, que
reacciona a la presencia de estos rayos.[ CITATION And14 \l 3082 ]
Figura 3. Módulo IR FC-51
Fuente: [ CITATION And14 \l 3082 ]
5.6. Cámara web
Es una pequeña cámara digital conectada a una computadora la cual puede capturar imágenes
.
Figura 4. Distribución del sensor LM35
Fuente: [ CITATION Web \l 3082 ]
5.7. Servomotor
Actuador rotativo o motor que permite un control preciso en términos de posición angular,
aceleración y velocidad, capacidades que un motor normal no tiene. Utiliza un motor normal y lo
combina con un sensor para la retroalimentación de posición.
Figura 5. Servomotor
Fuente: [ CITATION And14 \l 3082 ]
6. METODOLOGÍA
Realizar el acondicionamiento del motor encargado de mover la banda transportadora para
obtener un movimiento adecuado de la misma.
Realizar el diseño de los diferentes circuitos a utilizar, asegurándose de no cometer errores de
diseño.
Armar los circuitos diseñados, y realizar pruebas de funcionamiento previo.
Realizar la conexión entre la tarjeta Arduino y Python para la toma de datos del entorno físico.
Realizar pruebas de funcionamiento con el programa diseñado, y asegurarse de su correcto
funcionamiento.
Corregir errores en caso de ser necesarios
A continuación se presentara un diagrama de bloques que resume lo detallado.
Figura 6. Diagrama secuencial de solución de automatización.
Fuente: Equipo de trabajo
6.1. DISEÑO DE HARDWARE
a) Banda transportadora: La banda servirá de transporte para los objetos que posteriormente serán
clasificados, esta constará de un motor DC, Pequeños rodillos en los extremos, una banda. La
velocidad de la faja tendrá que ser controlada a una velocidad adecuada que de tiempo al
procesador detectar el objeto y seleccionarlo. Véase Figura 7.
Figura 7. Banda transportadora.
Fuente: Equipo de trabajo
b) Clasificador
El sistema de clasificación se conforma por un brazo unido a un servomotor que se acciona a la
señal de presencia del color predeterminado.
Brazo
Servomotor
Figura 8. Clasificador
Fuente: Equipo de trabajo
c) Sistema eléctrico
Se muestran los diagramas eléctricos de la automatización de objetos por sus colores de acuerdo a
las secciones del proyecto.
Figura 9. Conexión del motor reductor de la banda transportadora
Fuente: Equipo de trabajo
Figura 9. Equipo de trabajo
Fuente: Los autores
Figura 10. Conexión para servomotor encargado de clasificación
Fuente: Equipo de trabajo
Para una vista general de todo el sistema eléctrico se presenta la Figura 11.
Figura 11. Sistema eléctrico del proyecto
Fuente: Equipo de trabajo
d) Cámara web
Por ultimo dentro del diseño de hardware se detalla una cámara web que se coloca en la parte superior
soportada por una estructura de U invertida, dicho sistema nos permite la interpretación de colores.
Cámara web
Estructura de
soporte
Figura 12. Sistema de adquisición de imágenes
Fuente: Equipo de trabajo
6.2. DISEÑO DE SOFTWARE
a) Código Open CV y Python
Para el presente proyecto se simulará el proceso de transporte y clasificación de diferentes objetos con
diferentes colores, una vez iniciado el proceso, por la banda transportadora se moverán objetos con
diferentes colores, los mismo que serán observados mediante una cámara colocada en la parte superior de
la banda transportadora, la misma que estará encargada de realizar la detección del color presente en el
objeto sobre la banda transportadora, una vez que se procesa y se detecta el color, el programa enviará
una señal al servomotor, el mismo que se encargará de dejar pasar el objeto o redirigirlo hacia otro lugar
según el color del objeto, esto realiza con la ayuda de los sensores infrarrojos los cuales detectan la
presencia del objeto en una posición específica de la banda y conjuntamente con la detección del colore
realizada previamente por la cámara, se toma la decisión del lugar hacia donde irá el objeto.
Figura 13. Representación física del proceso realizado
Fuente: Los autores
Para dicho proyecto se utilizó entradas salidas digitales como lo son:
Servo-motores encargado de la barrera para clasificar los objetos
Motor reductor para el movimiento de la banda transportadora
Sensores infrarrojos IR FC-51
Adicional a lo mencionado antes esto se utilizó una cámara web, para toma de datos referente al color de
los objetos sobre la banda.
Figura 14. Librerías utilizadas
Fuente: Equipo de trabajo
Se importan las librerías que se van a utilizar dentro del programa, entre ellas las librerías de OpenCV y
Serial.
Figura 15. Comunicación Arduino e inicialización de cámara
Fuente: Equipo de trabajo
Aquí podemos observar como se realiza la comunicación serial con la tarjeta Arduino,aquí se declara el
puerto de comunicación en el cual se encuentra y también encontramos la apertura de la cámara con la
cual se va a trabajar, en este caso es la cámara 2.
Figura 16. Lectura de datos adquiridos con tarjeta Arduino
Fuente: Equipo de trabajo
La función presente fue utilizada para poder realizar la lectura de los datos adquiridos por la tarjeta
Arduino, para esto se utilizan variables globales, estos datos serán almacenados dentro de un array y
luego serán separados para poder ser utilizados, dentro del proceso de la banda transportadora.
Figura 17. Función para dibujar contornos de colores detectados
Fuente: Equipo de trabajo
La función dibujar, dicha función se realizó para poder dibujar los contornos encontrados de los
diferentes colores que se haya podido identificar mediante la detección de colores realizada.
Figura 18. Rangos dentro de los cuales se detectará cada uno de los colores
Fuente: Equipo de trabajo
Aquí podemos observar los valores que se estableció para la detección de los colores con los que se va a
trabajar, para esto se declaró valores mínimos y máximos de cada uno de los colores, con los mismos que
se utilizará para poder realizar la detección de colores en los objetos analizados sobre la banda
transportadora.
Figura 19. Tipo de letra a utilizar
Fuente: Equipo de trabajo
El comando Font, lo que hace es elegir el tipo de letra con el cual se escribirá al realizar el dibujo de los
contornos de los diferentes colores que se haya encontrado en la detección.
Figura 20. Inicio función principal
Fuente: Equipo de trabajo
Aquí encontramos el inicio de la función que se utilizó para detectar los colores establecidos, para poder
realizar esto, debemos obtener los frames de las imágenes capturadas por la cámara, sin embargo para que
esto puede suceder, primero el sensor de presencia ubicado antes de llegar a la cámara debe detectar que
hay un objeto en la banda transportadora y solo ahí esta parte de la función realizará su propósito.
Figura 21. Detección y dibujado de contornos de los diferentes colores
Fuente: Equipo de trabajo
Una vez que la primera parte de la función este funcionando, esto permitirá que pase a la siguiente
condición, dentro de la cual se ha realizado la detección de colores mediante la utilización del comando
inRange utilizando los rangos en los que se va a buscar cada uno de los colores, los rangos para cada
color se establecieron anteriormente como ya se mencionó en puntos anteriores.
Figura 22. Condiciones para activación del servomotor
Fuente: Equipo de trabajo
Aquí podemos observar cómo se va a realizar la activación del servomotor para clasificar los objetos, se
colocó condiciones, las cuales analizarán los valores obtenidos de cada color detectado anteriormente, con
lo cual se dirigirá el objeto a su posición final.
Figura 23. Cierre de funciones
Fuente: Equipo de trabajo
Estas son las condiciones finales, con las cuales se cierran cada uno de los voidloop que se utilizó en la
programación realiza para este proceso.
7. RESULTADOS
Una vez finalizado el proyecto se realizan las pruebas de funcionamiento para lo cual se utiliza cubos de
color azul y rojo.
Figura 24. Cubo de color rojo
Fuente: Equipo de trabajo
Figura 25. Cubo de color azul
Fuente: Equipo de trabajo
En las imágenes anteriores se realiza el envío de los cubos de colores por la banda transportadora la cual
al llegar al sensor de posición activará la condición de presencia y la cámara procederá a la detección del
color del objeto
Figura 26. Detección del cubo azul
Fuente: Equipo de trabajo
Figura 27. Detección de color azul
Fuente: Equipo de trabajo
Una vez detectado el color del cubo se procede a la clasificación del mismo, si este es azul se dirige hasta
la finalización de la banda transportadora caso contrario si es rojo se activa el servomotor el cual desvía
su trayectoria para su clasificación.
Figura 28. Prueba de funcionamiento
Fuente: Equipo de trabajo
Fuente: Los autores
Para verificar el correcto funcionamiento del mismo se realizaron pruebas con 5 cubos en donde se
enviaron 2 de color rojo y las dos veces se activo el servomotor y 3 de color azul en el cual el servomotor
regreso a su posición de inicio dejándolo pasar libremente y comprobando de esta manera que el proyecto
tiene un correcto funcionamiento
Tabla 1. Prueba de funcionamiento 1.
Detección de color Encendido del motor
Prueba Rojo Azul si no
1 x x
2 x x
3 x x
4 x x
5 x x
Total 2 3 2 3
8. CONCLUSIONES
• El procesamiento de la imagen obtenida por la cámara web fue eficaz pues al definir los rangos
correctos tanto de intensidad, brillo y saturación correspondiente al color azul y rojo se obtuvo un
porcentaje de error de 2%.
• El escoger un área de interés de la imagen proporcionada por la cámara reduce el coste de
procesamiento, lo que a su vez ayuda a mejorar el tiempo de respuesta que ya de por si se ve afectado
debido a la etapa de comunicación serial del Arduino.
• El uso de visión por computador permitió crear una maquina simple, desde el punto de vista de hardware
y económica desde el enfoque de instrumentación necesaria para la clasificación basada en el color de los
objetos.
9. RECOMENDACIONES
Desarrollar una nueva tecnología para establecer la comunicación entre software para el
procesamiento de imágenes y un arduino.
Verificar el enfoque de la cámara y el centrado de la misma con el fin de garantizar una
adecuada región de interés.
Contar con un sistema adecuado de iluminación de modo que este sea constante.
10. BIBLIOGRAFÍA
Endara, A. (2014). Zona Maker. Obtenido de [Link]
y-shields/control-de-servomotores-con-arduino
Marmalejo, R. (2017). Descubre Arduino. Recuperado el 16 de Diciembre de 2019, de
[Link]
OpenCV. (2011). OpenCV For Beginners. Obtenido de [Link]
OpenWebinar. (s.f.). Open Webinar S.L. Obtenido de [Link]
WebRobotica. (s.f.). [Link]. Obtenido de [Link]
[Link]/arduino/conceptos-basicos-arduino/como-usar-el-modulo-sensor-de-infrarrojos-
ir-fc-51-para-evitar-obstaculos-con-robot-arduinogenuino
11. ANEXOS
CONSTRUCCIÓN DE LA ESTRUCUTRA FÍSICA DEL PROYECTO
ESTRUCTURA FÍSICA DEL PROYECTO TERMINADA