- Materiales necesarios:
- Impresión 3D de las piezas necesarias (opcional):
- Esquema y hardware:
- Configuración de su aplicación de Android:
- Programando su Arduino:
- Trabajando:
¿Alguna vez quisiste construir un brazo robótico o robot de seguimiento facial simplemente usando Arduino y no con ninguna otra programación como OpenCV, conceptos básicos visuales C #, etc.? Luego, sigue leyendo, en este proyecto vamos a implementar la detección de rostros combinando el poder de Arduino y Android. En este proyecto, la cámara del móvil se moverá junto con tu cara con la ayuda de servos. La ventaja de usar el teléfono móvil Android aquí es que no necesita invertir en un módulo de cámara y todo el trabajo de detección de imágenes se puede hacer en el teléfono mismo, no necesita su Arduino conectado a su computadora para que esto funcione. Aquí hemos utilizado el módulo Bluetooth con Arduino para comunicarnos con Mobile de forma inalámbrica.
La aplicación de Android utilizada en este proyecto se creó utilizando Processing Android, puede instalar directamente la aplicación descargando el archivo APK (leer más para el enlace) o ponerse su límite de programación y hacer su propia aplicación de Android más atractiva utilizando el código de procesamiento proporcionado más adelante en el Tutorial. Obtenga más información sobre Procesamiento consultando nuestros Proyectos de procesamiento anteriores.
Al final de este tutorial, tendrá un mini brazo robótico de inclinación y extensión que podría rastrear su rostro y moverse con él. Puede usar esto (con mayor avance) para grabar sus videos de vlog o incluso tomar una selfie con la cámara trasera de su teléfono móvil, ya que coloca su rostro exactamente en el centro de la pantalla de su móvil. ¡¡Entonces!! ¿Suena interesante? Consulte el video de demostración al final de este tutorial para ver cómo funciona. Veamos cómo podemos construir uno…
He hecho todo lo posible para que este proyecto funcione lo más simple posible, cualquier persona con un conocimiento mínimo de hardware o codificación puede usar estas pautas para que este proyecto funcione en poco tiempo. Sin embargo, una vez que lo hagas, te sugiero que te pongas detrás de los códigos para que realmente puedas saber qué hace que esto funcione y cómo.
Materiales necesarios:
- Arduino Nano
- Servomotor SG90 - 2Nos
- Teléfono Android con cámara decente
- Módulo Bluetooth HC-05 / HC-06
- Computadora para programar
- Impresora 3D (opcional)
- Batería de 9V
Impresión 3D de las piezas necesarias (opcional):
Para mover e inclinar nuestro teléfono móvil, necesitamos algunas estructuras mecánicas como un soporte para móvil y algunos soportes de servo. Puedes usar un cartón para hacer uno, ya que tengo una impresora 3D decidí imprimir en 3D estas piezas.
La impresión 3D es una herramienta increíble que puede contribuir mucho a la hora de construir proyectos de prototipos o experimentar con nuevos diseños mecánicos. Si aún no ha descubierto los beneficios de una impresora 3D o cómo funciona, puede leer la Guía para principiantes de la impresión 3D.
Si posee o tiene acceso a una impresora 3D, puede usar los archivos STL que se pueden descargar desde aquí para imprimirlos y ensamblarlos directamente. Sin embargo, algunas partes, como el soporte del teléfono móvil, pueden necesitar algunas modificaciones en función de las dimensiones de su teléfono. Lo he diseñado para mi teléfono móvil MOTO G. He utilizado una impresora muy básica para imprimir todas las piezas. La impresora es FABX v1 de 3ding, que tiene un precio asequible con un volumen de impresión de 10 cm cúbicos. El precio económico viene con una compensación con baja resolución de impresión y sin tarjeta SD o función de reanudación de impresión. Estoy usando un software llamado Cura para imprimir los archivos STL. La configuración que utilicé para imprimir los materiales se proporciona a continuación, puede usar la misma o cambiarla según su impresora.
Una vez que imprima todos los materiales necesarios, puede asegurarlos en su posición usando tornillos y un poco de pegamento caliente. Una vez que haya completado el ensamblaje, debería verse así a continuación.
Esquema y hardware:
El circuito para este proyecto de seguimiento facial en teléfonos inteligentes se muestra en la siguiente imagen:
El circuito consta de dos servomotores, de los cuales uno se utiliza para mover el teléfono móvil hacia la izquierda / derecha y el otro se utiliza para inclinar el teléfono móvil hacia arriba / abajo. La dirección en la que debe moverse el servo será instruida por el Arduino Nano, que a su vez obtiene información del módulo Bluetooth (HC-05). Todo el circuito está alimentado por una batería de 9V.
Este circuito se puede conectar fácilmente en su placa de pruebas o también puede soldarlos en una placa Perf pequeña como lo he hecho aquí.
Configuración de su aplicación de Android:
Como dije antes, el cerebro principal que está detrás de este proyecto es esta aplicación de Android. Esta aplicación para Android fue desarrollada usando Processing Android. Puede instalar esta aplicación directamente en su teléfono móvil e iniciarla siguiendo los pasos a continuación.
- Descarga el archivo APK desde aquí.
- Encienda el circuito que se muestra arriba.
- En la configuración de su teléfono, busque el módulo Bluetooth llamado "HC-05"
- Si lo ha nombrado de otra manera que no sea “HC-05”, cámbielo de nuevo a HC-05 ya que solo entonces la aplicación funcionará.
- Emparéjelo con su módulo Bluetooth con la contraseña “1234” o “0000”.
- Ahora, inicie la aplicación en modo vertical. Debería ver la pantalla de su cámara y también "Conectado a: HC-05" en la parte superior de la pantalla.
- Intente mover la cámara sobre una cara y debería aparecer un cuadro verde en la parte superior y su posición también se mostrará en la esquina superior izquierda de la pantalla como se muestra a continuación.
Puede llevar este proyecto de seguimiento facial de Arduino al siguiente nivel al incorporar muchos avances para los que no necesitará codificar su propia aplicación de Android. Crear una aplicación para Android puede parecer difícil, pero créame, con la ayuda de Processing, puede aprenderlo en poco tiempo. El código de procesamiento completo que se utiliza para construir esta aplicación se puede descargar aquí. Eres libre de hacer cualquier avance con tu propia creatividad. Consulte los proyectos a continuación para obtener más información sobre el procesamiento:
- Realidad virtual usando Arduino y Processing
- Juego de ping pong usando Arduino
- Radio FM controlada por teléfono inteligente mediante procesamiento.
- Sistema de radar Arduino con procesamiento y sensor ultrasónico
Programando su Arduino:
La aplicación de Android detectará el rostro y su posición en la pantalla; luego decidirá en qué dirección debe moverse en función de la posición de la cara para que la cara llegue al centro de la pantalla. Esta dirección luego se envía al Arduino a través del módulo Bluetooth.
El programa Arduino para este proyecto es bastante simple, solo tenemos que controlar la dirección de los dos servomotores en función de los valores recibidos del Módulo Bluetooth. El código completo se puede encontrar al final de este tutorial, también he explicado algunas líneas importantes a continuación.
Debajo de la línea de código se establece una conexión en serie con los pines D12 como RX y D11 como TX. Por lo tanto, el pin D12 debe estar conectado al TX del módulo BT y el pin D11 al RX del módulo BT.
SoftwareSerial cam_BT (12, 11); // RX, TX
Luego, inicializamos el módulo Bluetooth a una velocidad de 9600 baudios. Asegúrese de que su módulo también funcione con la misma velocidad de transmisión. De lo contrario, cámbielo en consecuencia.
cam_BT.begin (9600); // inicia la comunicación Bluetooth a 9600 baudios cam_BT.println ("Listo para recibir comandos");
Debajo de la línea se lee lo que entra a través del módulo Bluetooth. También los datos se guardan en la variable “BluetoothData”.
if (cam_BT.available ()) // Leer lo que entra a través de Bluetooth {BluetoothData = cam_BT.read (); Serial.print ("Entrante de BT:"); Serial.println (BluetoothData); }
Según los datos recibidos del Bluetooth, se controla la dirección de los motores. Para girar un motor a la izquierda, el motor se reduce en un valor de 2 desde su posición anterior. Puede aumentar este valor de 2 a 4 o 6 si necesita que el brazo se mueva más rápido. Pero, podría crear algunos tirones que hagan que la cámara sea inestable.
if (BluetoothData == 49) // Gire a la izquierda {pos1 + = 2; servo1.write (pos1);} if (BluetoothData == 50) // Gire a la derecha {pos1- = 2; servo1.write (pos1);} if (BluetoothData == 51) // Subir {pos2- = 2; servo2.write (pos2);} if (BluetoothData == 52) // Bajar {pos2 + = 2; servo2.write (pos2);}
Trabajando:
Una vez que estemos listos con nuestro hardware, código y aplicación de Android, es hora de actuar. Simplemente encienda su Arduino y abra la aplicación de Android. La aplicación se conectará automáticamente al módulo Bluetooth HC-05 (debe llamarse HC-05) y esperará a que se detecte un rostro. Simplemente coloque el teléfono en nuestro soporte para móvil y siéntese frente a él. Debería notar que sus servomotores mueven su teléfono para que su cara se coloque en el centro de la pantalla. Ahora muévase dentro del alcance de la cámara y su teléfono móvil seguirá sus movimientos. También puedes probarlo colocando y moviendo cualquier imagen.
El funcionamiento completo del proyecto se muestra en el video a continuación. Puedes construir mucho