Arduino puede parecer muy rudimentario, pero es más que suficiente para crear incluso proyectos bastante avanzados. Con ayuda de algunos módulos existentes en el mercado, como los módulos de cámara, y con la ayuda de algunas bibliotecas o APIs, se puede dotar a tu proyecto de inteligencia o de visión artificial. Eso dará nuevas aplicaciones y nuevos horizontes más allá de los proyectos rudimentarios.
La visión artificial es un tipo de visión por ordenador. No es simplemente captar la imagen a través de una cámara digital, sino que va más allá. Puede usarse para adquirir datos del entorno, procesar la imagen, analizarla, comprender imágenes del mundo real, etc. Por ejemplo, se podría usar para obtener información numérica a través de la cámara, reconocer a seres humanos, etc. Imagina todo lo que podrías hacer con esto…
¿Para qué se usa la visión artificial?
Por ejemplo, muchos sistemas de visión actuales están basados en este tipo de visión, como algunos vehículos que permiten aparcar de forma automática, mapping del entorno, sistemas de control de tráfico en carreteras, o reconocen a peatones para parar el vehículo y no atropellarlos, reconocer caras y obtener datos de las personas fichadas en una base de datos como en algunos sistemas de seguridad, analizar vídeos, etc.
El potencial de esta visión artificial es tan extremo, que gobiernos y grandes corporaciones la usan para multitud de fines, ya sean lícitos o no tanto. Algunos campos prácticos de aplicación que seguro conoces son:
- Facebook: usa este tipo de visión artificial para las fotos subidas a su red social, de esta manera puede reconocer caras mediante complejos algoritmos. De esa forma, puede alimentar a su IA para hacerla más potente y mejorarla para otras futuras aplicaciones.
- Flickr: puede usar esta visión artificial para reconstruir escenas en 3D usando repositorios de imágenes de esta plataforma.
- Industria: con los sistemas de visión artificial se pueden detectar desperfectos en una cadena de montaje, descartar rápidamente objetos con defectos, etc. Por ejemplo, cuando los frutos recolectados en el sector agrícola viajan por una cinta transportadora, mediante un sensor de visión artificial se podrían detectar frutos rotos, dañados, podridos, u objetos que no sean frutos para retirarlos mediante un chorro de aire u otros mecanismos.
- Videovigilancia: se puede usar en muchos centros protegidos para captar ciertos vehículos o personas, saber quién son y enviar dicha información a algún sistema o registrarla para su posterior análisis. Incluso muchas empresas lo usan para saber cómo viste la gente (sector moda), ciertas entidades para saber quién pudo estar en manifestaciones, detectar presencia de personal sospechoso en centros públicos o muy transitados, etc.
Ten en cuenta que actualmente hay multitud de cámaras de vigilancia de todo tipo repartidas por la calle, ya sean para vigilar negocios, bancos, de la DGT, etc., por lo que se recolecta gran cantidad de información de todos nosotros…
Material necesario
Además de la placa Arduino con el microcontrolador que puedes programar y que haga uso de bibliotecas, necesitarás también otros elementos básicos para tu proyecto. Entre ellos, por supuesto un módulo con una cámara capaz de procesar imagen. Un ejemplo de esto es el Pixy CMUCam 5 o similares. Este módulo tiene un potente procesador que se puede programar para enviar información captada por el sensor a través del puerto serial UART, SPI, I2C, digital out, o señales analógicas.
Con la Pixy CMUCam 5 se puede procesar hasta 50 fotogramas o frames por segundo (50 FPS). Con estas capacidades, se podría programar para que envíe solo las imágenes que se quieren o se deben buscar, en vez de estar constantemente grabando todo el vídeo que capta. Para su manejo más sencillo, tiene una aplicación de código abierto y gratuita llamada PixyMon para su control.
Si te decides por adquirir esta cámara Pixy CMUcam5, te vendrá con un cable de 6 pines a 10 pines IDC, y la tornillería para el montaje. Además, las características técnicas del módulo son:
- Procesador NXP LPC4330 a 204 Mhz DualCore.
- Memoria RAM de 254 Kb,
- Consumo de 140mA.
- Sensor de imagen Omnivision OV9715 de 1/4″ y resolución de 1280×800.
- Ángulo de visión de 75º horizontal y 47º vertical.
- Reconocimiento de imagen sencillo para localizar objetos.
- Puedes usarlo con placas Arduino (con bibliotecas específicas), Raspberry Pi, BeagleBone Black, y otras placas similares.
- Puertos de comunicación: SPI, I2C, UART, USB, o salida analógica/digital.
- Software PixyMon compatible con Windows, macOS y GNU/Linux.
- Reducido tamaño.
- Documentación disponible en la Wiki del proyecto.
- Repositorios de Github con la biblioteca para Arduino.
- Firmware
- Tutoriales
Además de eso, debes tener en cuenta que tienes a tu disposición otro tipo de APIs, bibliotecas y más material que te puede ayudar a crear proyectos de todo tipo con ayuda de estas cámaras y de la visión artificial. Por ejemplo, hay que destacar:
- OpenCV: es una biblioteca de visión artificial libre desarrollada inicialmente por Intel. Ahora se ha liberado bajo licencia BSD y puede usarla cualquiera para detectar movimiento, reconocer objetos, visión robótica, reconocimiento facial, etc. Es multiplataforma, así que puede ser usada en GNU/Linux, macOS, Windows y Android.
- Otros proyectos, como el de detección de vehículos.
Desde Hwlibre, te animo a comenzar a experimentar y aprender sobre esta disciplina…
Ejemplo sencillo de integración de Pixy 2 CMUcam5 con Arduino
Para poder usar este módulo Pixy 2 CMUcam5 con tu placa Arduino, lo que debes usar varios elementos extras. Por ejemplo, puedes usar un servomotor S06NF, o similar, para que actúe cuando la cámara detecte algún objeto para la que lo hayas programado. Por supuesto, deberás descargar el software PixyMon que dije anteriormente y la biblioteca de GitHub para Arduino.
Más información de programación Arduino, puedes descargar nuestro PDF con el curso gratis.
Una vez tengas instalado PixyMon en tu sistema operativo, lo siguiente es seguir estos pasos:
- Conectar la Pixy con el cable USB y verificar si el LED RGB del módulo está encendido, lo que indicará que funciona adecuadamente.
- Abre la app PixyMon y si todo está correcto se verá lo que está captando la cámara en este momento.
- Ve al submenú Acción o Action, y luego haz clic en Establecer firma o Set signature. Ahora el vídeo debe congelarse y se puede seleccionar qué color u objeto deseas que detecte la cámara siempre que esté frente al sensor. Por ejemplo, puedes usar una pelota. De ese modo, siempre que la pelota pase delante del sensor será detectada.
- Como puedes ver, hay hasta 7 Set Signature, por lo que podrías configurar hasta 7 objetos diferentes que pueda detectar la cámara.
- Si solo eliges una, puedes pasar al siguiente paso. O si lo que quieres es eliminar algún objeto de la lista, puedes ir al menú Action o Acción, y luego Borrar todas las firmas o elegir Borrar Firma concreta. Incluso puedes ir a Configuration o Configuración y luego ir a la firma concreta que deseas modificar para cambiarla….
Ahora puedes pasar a configurar tu placa Arduino, si quieres. Para ello, ya sabes que debes usar la biblioteca Pixy para Arduino. Esta biblioteca además incluirá ejemplos simples con los que puedes comenzar a experimentar sin escribir código desde cero. Simplemente abriéndolos y ejecutando estos sketchs o haciendo modificaciones en ellos para ver cómo se comportan. Para disponer de esta biblioteca, puedes seguir estos pasos.
- Descarga la biblioteca para Arduino.
- Abre Arduino IDE.
- Ve a Sketch, Incluir biblioteca y luego Agregar biblioteca .zip y selecciona la que has descargado.
- Ahora ya estará integrada, puedes comenzar a probar algún ejemplo con la cámara correctamente conectada a tu placa Arduino. Para ello, ve al menú Examples o Ejemplos, luego a Pixy y selecciona alguno de ellos. Te recomiendo comenzar con hello_world.
- Con tu placa Arduino conectada por USB al PC, sube el sketch a tu placa, luego selecciona Herramientas y luego Monitor Serie.
- Ahora, en la ventana te comenzará a mostrar información.
Por supuesto, no olvides conectar todos los componentes electrónicos que necesites a tu placa Arduino, incluida la propia cámara. Ya sabes que se conecta a los pines ISCP de Arduino destinados a estos módulos, como se aprecia en la imagen…