Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Reconocimiento de Gestos con ESP32 y Acelerómetro Arduino 101 - Tutorial DIY Fácil

Componentes y Suministros

ComponenteDescripciónCantidad
Arduino 101Incluye acelerómetro integrado, no se requieren componentes adicionales1
Arduino UNOPuedes usar un Arduino Uno (u otro Arduino) en lugar del Arduino 101, pero necesitarás un acelerómetro aparte1
Acelerómetro Analógico Adafruit ADXL335Usa este (o el equivalente de SparkFun) si usas un Arduino distinto al Arduino 1011
SparkFun Triple Axis Accelerometer Breakout - ADXL335Usa este (o el equivalente de Adafruit) si usas un Arduino distinto al Arduino 1011

Sobre este Proyecto

Resumen

Este tutorial te muestra cómo incorporar reconocimiento básico de gestos en tus proyectos Arduino usando el sistema ESP. Por ejemplo, podrías reconocer diferentes gestos de tenis como drive, revés y saque; elementos de una rutina de baile; gestos de levantamiento de pesas, etc. Los gestos se detectan usando un acelerómetro y se envían a la aplicación ESP que se ejecuta en tu computadora. ESP usa un algoritmo simple de aprendizaje automático para comparar los datos del acelerómetro en vivo con ejemplos grabados de diferentes gestos, enviando un mensaje de vuelta al Arduino cuando reconoce un gesto similar a uno de los ejemplos. El sistema solo reconoce ocurrencias individuales de gestos discretos; no proporciona información sobre cómo se realiza el gesto. Aun así, puede usarse para una amplia gama de aplicaciones interactivas.

Descarga la aplicación de reconocimiento de gestos ESP:

Paso 1. Conecta tu acelerómetro

Si usas el Arduino 101, que tiene un acelerómetro integrado, puedes saltar este paso. De lo contrario, necesitarás conectar tu acelerómetro. Primero, suelda pines header macho en la placa breakout si no lo has hecho ya. Luego conecta el acelerómetro al Arduino.

Como atajo, puedes enchufar el breakout del acelerómetro directamente en los pines de entrada analógica del Arduino Uno (u otro Arduino con el mismo factor de forma). Luego en el código de Arduino, puedes configurar los pines apropiados para proporcionar alimentación y tierra al acelerómetro.

Reconocimiento de Gestos con ESP32 y Acelerómetro Arduino 101 - Tutorial DIY Fácil

Alternativamente, puedes enchufar tu acelerómetro en una protoboard y conectarlo al Arduino, conectando sus pines de alimentación y tierra a los pines 5V y GND del Arduino, y sus pines de ejes X, Y, Z a tres entradas analógicas de la placa Arduino.

Paso 2. Sube el código de Arduino

Puedes usar uno de los programas de Arduino a continuación para leer datos del acelerómetro y enviarlos por serie (USB) a la computadora. Primero, verifica que los pines especificados en el programa coincidan con tu cableado (ej. que xpin corresponda a la entrada analógica conectada al pin X de tu acelerómetro). (Esto no aplica si usas Arduino 101, donde el acelerómetro está conectado internamente). Luego selecciona la placa y puerto serie apropiados en el menú Herramientas de Arduino y sube el sketch.

Paso 3. Verifica datos en el Monitor Serial

Abre el monitor serial de Arduino, configúralo a 9600 baudios, y verifica que estás recibiendo datos del acelerómetro desde tu Arduino. Deberías ver tres columnas de números que cambian al mover el acelerómetro. Usa el Serial Plotter de Arduino para ver un gráfico de estos números.

Asegúrate de cerrar el monitor serial y el serial plotter antes de continuar, ya que de lo contrario bloquearán la aplicación ESP para comunicarse con tu Arduino.

Paso 4. Ejecuta la aplicación de reconocimiento de gestos ESP y selecciona tu puerto serie

Descarga la aplicación de reconocimiento de gestos ESP:

Selecciona el puerto serie correspondiente a tu placa Arduino desde el menú de configuración. (Haz clic en el encabezado "Select a serial port" para abrir la lista de puertos.)

Reconocimiento de Gestos con ESP32 y Acelerómetro Arduino 101 - Tutorial DIY Fácil

Deberías ver datos en vivo transmitiéndose en el gráfico "Raw Data". Las tres líneas en el gráfico corresponden a los tres ejes de tu acelerómetro: la línea roja corresponde al eje X, verde al eje Y, y azul al eje Z.

Reconocimiento de Gestos con ESP32 y Acelerómetro Arduino 101 - Tutorial DIY Fácil

Paso 5. Graba muestras de calibración

Para permitir que la aplicación ESP entienda qué rango de valores esperar de tu acelerómetro y Arduino, necesitarás grabar una muestra de calibración. Coloca tu acelerómetro en una superficie plana, con el eje Z hacia arriba. Presiona y mantén la tecla "1" por un segundo para grabar la muestra de calibración "Upright". Deberías ver un gráfico de la muestra. Luego, voltea tu acelerómetro boca abajo, manteniéndolo plano y quieto, mantén la tecla "2" para grabar la muestra de calibración boca abajo. El sistema ESP usa estos datos para averiguar qué valores numéricos corresponden a 0g de aceleración (en ejes X e Y) y cuáles corresponden a 1g de aceleración (en eje Z).

Reconocimiento de Gestos con ESP32 y Acelerómetro Arduino 101 - Tutorial DIY Fácil

Paso 6. Graba gestos de ejemplo

Ve a la pestaña "Training" de la aplicación ESP haciendo clic en ella o escribiendo una "T" mayúscula. Esta pestaña te permite grabar o cargar ejemplos de los gestos que quieres que el sistema ESP reconozca. Puedes grabar ejemplos de hasta nueve gestos diferentes.

Reconocimiento de Gestos con ESP32 y Acelerómetro Arduino 101 - Tutorial DIY Fácil

Para grabar un ejemplo de gesto, haz el gesto mientras mantienes presionada la tecla correspondiente a la etiqueta que quieres asociar. Por ejemplo, para grabar un gesto con etiqueta 1, mantén la tecla "1" en tu teclado mientras haces el gesto. (Alternativamente, puedes cargar los gestos de tenis de ejemplo en ForehandBackhandServe.grt.)

Asegúrate de grabar los gestos de ejemplo con el acelerómetro en la misma configuración que tendrá luego, cuando quieras que el sistema reconozca los gestos. Por ejemplo, podrías sostener el acelerómetro en tu mano con una orientación particular, o adjuntarlo a un objeto que sostendrás con una orientación particular.

Una buena muestra contiene los datos correspondientes a todo el gesto, pero sin muchos datos de línea base adicionales al inicio o al final. Es decir, la muestra debe comenzar y terminar con un período corto de líneas relativamente planas, ni demasiado largo ni ausente por completo. Además, si tu gesto termina en un lugar diferente al que empieza, asegúrate de no grabar el tiempo en que devuelves el acelerómetro a la posición inicial. Por ejemplo, si grabaras un gesto de deslizar a la derecha, querrías grabar solo la parte del gesto en que tu mano se mueve de izquierda a derecha, no el tiempo en que tu mano regresa a su posición inicial.

Reconocimiento de Gestos con ESP32 y Acelerómetro Arduino 101 - Tutorial DIY Fácil

Cada ejemplo adicional que grabes es otra muestra que el algoritmo de aprendizaje automático puede comparar al reconocer gestos. Eso significa que si quieres que el sistema reconozca diferentes variaciones de un gesto (ej. las diferentes formas en que lo hacen diferentes personas), puede ayudar grabar muestras de cada variación. Por otro lado, si tienes malas muestras, pueden confundir al sistema; más muestras no es necesariamente mejor. En general, hemos tenido buena suerte grabando alrededor de 5 a 10 muestras para cada gesto, aunque de nuevo, la calidad de las muestras individuales es más importante que su cantidad.

Reconocimiento de Gestos con ESP32 y Acelerómetro Arduino 101 - Tutorial DIY Fácil

Si no te gusta una muestra (ej. porque presionaste la tecla en el momento equivocado y perdiste los datos de parte del gesto), puedes borrarla haciendo clic en la casilla junto a la palabra "delete" debajo de la muestra. Puedes recortar una muestra haciendo clic y arrastrando en el gráfico de la muestra para seleccionar la parte que quieres mantener, luego haciendo clic en la casilla "trim". Puedes navegar entre las diferentes muestras en una clase haciendo clic en los iconos de flecha debajo del gráfico. Si grabaste una muestra en la clase equivocada, puedes moverla haciendo clic en el botón "re-label" y luego presionando la tecla correspondiente a la etiqueta a la que quieres asignar la muestra. Para nombrar un gesto, haz clic en el botón "rename", escribe el nombre y presiona enter.

Reconocimiento de Gestos con ESP32 y Acelerómetro Arduino 101 - Tutorial DIY Fácil

Paso 7. Entrena el sistema para reconocer gestos

Una vez que hayas grabado algunos gestos de ejemplo, puedes entrenar al sistema ESP para reconocer esos gestos a partir de tus ejemplos. Presiona la tecla "t" en tu teclado para entrenar el sistema. Deberías ver el mensaje "training successful" aparecer en la parte inferior de la ventana. Ahora, cuando hagas un gesto similar a uno de tus ejemplos grabados, deberías ver su nombre aparecer en el gráfico de datos de sensor en vivo.

Reconocimiento de Gestos con ESP32 y Acelerómetro Arduino 101 - Tutorial DIY Fácil

El sistema puede no funcionar bien la primera vez que lo entrenas. Es útil entrenar y probar el sistema a menudo mientras grabas tus gestos de ejemplo, para tener una idea de cómo se comporta.

En particular, si el sistema no reconoce gestos que crees que debería, puedes querer grabar ejemplos adicionales de ese gesto. Si el sistema reconoce gestos cuando no debería, puedes querer borrar o recortar ejemplos que se vean diferentes a los demás, o que contengan largos períodos de líneas relativamente planas. Asegúrate de presionar "t" después de modificar tus ejemplos para reentrenar el sistema.

Paso 8. Ajusta la configuración del sistema según sea necesario

Mientras que modificar tus ejemplos de entrenamiento es probablemente el medio más importante para ayudar al sistema a funcionar correctamente, ESP también te permite configurar algunos parámetros subyacentes del sistema. Para hacer esto, haz clic en la etiqueta "click to open configuration". Deberías ver dos parámetros: variability y timeout. Ten en cuenta que después de cambiar estos parámetros, necesitas reentrenar el sistema presionando "t".

Paso 9. Incorpora el reconocimiento de gestos en tu proyecto Arduino

Cuando el sistema ESP hace una predicción, envía un mensaje a tu Arduino con el número del gesto que reconoció (como texto ASCII seguido de nueva línea, ej. "1\n"). Leyendo estas predicciones en el puerto serie, puedes hacer que tu Arduino responda al gesto de varias formas.

Las predicciones también se envían por TCP a un servidor que se ejecuta en localhost puerto 5204 (en el mismo formato que al Arduino). Por ejemplo, esto podría ser un juego escrito en Processing u otro software. Asegúrate de que el servidor TCP esté en marcha antes de iniciar la aplicación ESP.

Cómo Funciona

Esta aplicación ESP particular usa un algoritmo llamado Dynamic Time Warping (DTW). Este algoritmo deforma la señal del sensor en vivo eliminando o duplicando lecturas individuales, generando un array de variaciones y verificando qué tan similares son a las muestras grabadas. El algoritmo busca la muestra de entrenamiento más cercana a los datos del sensor en vivo. Si la diferencia entre las dos es menor que un cierto umbral, lo considera una coincidencia y emite una predicción correspondiente a la clase de entrenamiento que contiene esa muestra. Puedes ajustar la distancia requerida usando el parámetro "variability" en el menú desplegable de configuración.

El reconocimiento de gestos es solo un dominio al que el sistema ESP puede aplicarse. ESP está construido sobre el Gesture Recognition Toolkit (GRT), que, a pesar de su nombre, en realidad contiene una amplia gama de algoritmos de aprendizaje automático que pueden aplicarse a una amplia gama de aplicaciones de detección en tiempo real. ESP toma código para una aplicación particular y lo traduce en una interfaz de usuario personalizada para trabajar con ese pipeline de aprendizaje automático. Estos programas específicos de aplicación incluyen un pipeline de aprendizaje automático GRT, especificación de entradas de sensor, definición del proceso de calibración, y especificaciones para los parámetros ajustables. Hemos construido ejemplos ESP para detección de color, detección de pose usando acelerómetros, y reconocimiento de audio simple. Ver el GitHub de ESP para más información.

Código

Código Arduino ADXL335

Este código lee desde un ADXL335 conectado a un Arduino: el pin X del acelerómetro debe conectarse al pin A5 del Arduino, el Y a A4, y el Z a A3. Las lecturas se envían por el puerto serie (USB) a 9600 baudios, como datos ASCII separados por tabulaciones y terminados en nueva línea.

Código Arduino 101 Acelerómetro

Lee datos del acelerómetro del acelerómetro integrado en un Arduino 101. Las lecturas se envían por el puerto serie (USB) a 9600 como datos ASCII separados por tabulaciones y terminados en nueva línea.

Proceso de manufactura

  1. Sistema de Asistencia RFID Fiable con Arduino y Python
  2. Mando universal Android con Arduino, 1Sheeld y control IR
  3. Construye un Voltímetro Inteligente con Arduino y Smartphone – Proyecto DIY Fácil
  4. Construye un tarro inteligente IoT con ESP8266, Arduino y sensor ultrasónico: Monitorización en tiempo real
  5. Medición precisa de frecuencia y ciclo de trabajo con Arduino UNO
  6. Controla un Rover Arduino con Firmata y Mando Xbox One - Guía Completa
  7. Medición de Distancia en Tiempo Real con Sonar Arduino y Visualización en Processing
  8. Control de brillo LED sin interrupciones con Bolt IoT y Arduino UNO
  9. Brazo Robótico Inteligente Controlado por Arduino: Tutorial DIY Fácil
  10. Dominando reconocimiento y síntesis de voz en Arduino Due
  11. Construye una Brújula Digital en Tiempo Real con Arduino y Processing